Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
1,86 MB
Nội dung
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN KHAI PHÁ DỮ LIỆU ĐỀ TI: BI TOÁN PHÂN LỚP NHỊ PHÂN SỬ DỤNG SVM ĐỂ DỰ ĐOÁN NGY MƯA Sinh viên thực : Giảng viên hướng dẫn : PHẠM ĐỨC HỒNG Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CÔNG NGHỆ THƠNG TIN Lớp : Khóa : 2019-2024 Hà Nội, tháng năm 2022 PHIẾU CHẤM ĐIỂM Sinh viên thực Họ tên Mã Sinh Viên KIM HOÀNG HÀ 19810000403 PHÙNG VĂN PHƯƠNG 19810000237 Chữ ký Ghi Chú Giảng viên chấm Họ tên Giảng viên chấm Giảng viên chấm Chữ ký Ghi MỤC LỤC Catalog LỜI MỞ ĐẦU LỜI CẢM ƠN 1.1 Khai phá liệu .3 1.2 Quy trình khai phá liệu .3 1.2.1 Nghiên cứu lĩnh vực 2.2.2 Tạo tập tin liệu đầu vào 2.2.3 Tiền xử lý, làm sạch, mã hóa 2.2.4 Rút gọn chiều 2.2.5 Chọn tác vụ khai thác liệu 2.2.6 Chọn thuật giải Khai thác liệu 2.2.7 Khai thác liệu: Tìm kiếm tri thức .4 2.2.8 Đánh giá mẫu tìm 2.2.9 Biểu diễn tri thức .4 CHƯƠNG BI TOÁN PHÂN LỚP NHỊ PHÂN 2.1 Tổng quan toán phân lớp nhị phân 2.2 toán phân lớp nhị phân sử dụng svm: 2.2.1 Giới thiệu 2.2.2 Định nghĩa 2.2.3Ý tưởng phương pháp 2.2.4Nội dung phương pháp CHƯƠNG ỨNG DỤNG THUẬT TOÁN PHÂN LỚP NHỊ PHÂN SỬ DỤNG SVM .12 3.1 Dữ liệu WheatherAus.csv: 12 TI LIỆU THAM KHẢO 16 LỜI MỞ ĐẦU Ngày Công nghệ thông tin ngày phát triển trở thành phần tất yếu sống người Công nghệ thông tin ngày ứng dụng nhiều vào tất lĩnh vực từ y học, kinh doanh đến giáo dục, góp phần khơng nhỏ vào phát triển tất các lĩnh vực đó, đặc biệt lĩnh vực kinh doanh Đất nước ta ngày phát triển, cố gắng hòa nhập rút ngắn khoảng cách với giới, việc nước ta trở thành thành viên WTO nhà kinh doanh ý đến đầu tư ngày nhiều vào Việt Nam Vì để khơng bị q lạc hậu, để đáp ứng yêu cầu tất yếu nhà đầu tư vào Việt Nam để nhà kinh doanh nước có đủ sức cạnh tranh với nước ngồi bắt buộc phải đầu tư cho Cơng nghệ thơng tin mà xác phần mềm tin học vào nhiều lĩnh vực giúp nâng cao tính hiệu xác cơng việc, ngồi cịn tiết kiệm thời gian giảm bớt mệt nhọc cho người Em chọn đề tài “bài toán phân lớp nhị phân sử dụng để dự đoán ngày mưa” Trong lĩnh vực thương mại điện tử, việc đánh giá sản phẩm có thuộc quản điểm vấn đề người dùng quan tâm nhiều LỜI CẢM ƠN Môn học “Khai phá liệu” môn học bổ ích chúng em Sau hoàn thành đề tài này, chúng em phần hiểu máy học, biết phương pháp thuật tốn khai phá liệu, có chương trình Để có thành cơng vậy, nỗ lực thành viên nhóm cịn có giúp đỡ tận tình thầy giáo hướng dẫn tìm tịi ham học hỏi bạn nhóm Đầu tiên, chúng em xin gửi lời cảm ơn tới thầy giáo – Phạm Đức Hổng hướng dẫn khoa học thầy Tiếp đến chúng em xin gửi lời cảm ơn tới cô giáo chủ nhiệm tồn thể thầy khoa giúp tạo điều kiện giúp đỡ chúng em trình thực đề tài Mặc dù cố gắng hoàn thiện tập lớn với tất nỗ lực, nhiên, bước đầu vào thực tế, tìm hiểu xây dựng đồ án thời gian có hạn, kiến thức cịn hạn chế, nhiều bỡ ngỡ, nên báo cáo “Khai phá liệu” chắn tránh khỏi thiếu sót Chúng em mong nhận quan tâm, thơng cảm đóng góp q báu thầy cô bạn để đồ án ngày hoàn thiện Một lần nữa, chúng em xin chân thành cám ơn mong nhận đóng góp thầy/cơ! CHƯƠNG 1: GIỚI THIỆU VỀ KHAI PHÁ DỮ LIỆU 1.1 Khai phá liệu Data mining – khai phá liệu, tập hợp, hệ thống phương pháp tính toán, thuật toán áp dụng cho sở liệu lớn phức tạp mục đích loại bỏ chi tiết ngẫu nhiên, chi tiết ngoại lệ, khám phá mẫu, mơ hình, quy luật tiềm ẩn, thơng tin có giá trị liệu Data mining thành công nghệ tiên tiến ngày nay, q trình khám phá kiến thức vơ giá cách phân tích khối lượng lớn liệu đồng thời lưu trữ chúng nhiều sở liệu khác nhau” 1.2 Quy trình khai phá liệu 1.2.1 Nghiên cứu lĩnh vực Ta cần nghiên cứu lĩnh vực cần sử dụng Data mining để xác định tri thức ta cần chắt lọc, từ định hướng để tránh tốn thời gian cho tri thức không cần thiết 2.2.2 Tạo tập tin liệu đầu vào Ta xây dựng tập tin để lưu trữ liệu đầu vào để máy tính lưu trữ xử lý 2.2.3 Tiền xử lý, làm sạch, mã hóa Ở bước ta tiến hành bỏ bớt liệu rườm rà, không cần thiết, tinh chỉnh lại cấu trúc liệu mã hóa chúng để tiện cho trình xử lý 2.2.4 Rút gọn chiều Thơng thường tập liệu có chiều lớn sinh lượng liệu khổng lồ, ví dụ với n chiều ta có n tổ hợp Do đó, bước quan trọng giúp giảm đáng kể hao tổn tài nguyên q trình xử lý tri thức.Thơng thường dùng Route set để giảm số chiều http://en.wikipedia.org/wiki/Rough_set 2.2.5 Chọn tác vụ khai thác liệu Để đạt mục đích ta cần, ta cần chọn tác vụ khai thác liệu cho phù hợp Thơng thường có tác vụ sau: * Đặc trưng (feature) * Phân biệt (discrimination) * Kết hợp (association) * Phân lớp (classification) * Gom cụm (clusterity) * Xu (trend analysis) * Phân tích độ lệch * Phân tích 2.2.6 Chọn thuật giải Khai thác liệu 2.2.7 Khai thác liệu: Tìm kiếm tri thức Sau tiến hành bước bước trình, ta tiến hành khai thác tìm kiếm tri thức 2.2.8 Đánh giá mẫu tìm Ta cần đánh giá lại xem tri thức tìm được, ta sử đụng tri thức nào, tri thức dư thừa, không cần thiết 2.2.9 Biểu diễn tri thức Ta biểu diễn tri thức vừa thu thập dạng ngôn ngữ tự nhiên hình thức cho người dùng hiểu tri thức CHƯƠNG BI TỐN PHÂN LỚP NHỊ PHÂN 2.1 Tổng quan toán phân lớp nhị phân Bài toán phân lớp (classification) toán gom cụm (cluster) hai toán lớn lĩnh vực Machine Learnig (ML) Bài toán phân lớp trình phân lớp đối tượng liệu vào hay nhiều lớp cho trước nhờ mơ hình phân lớp (model) Mơ hình xây dựng dựa tập liệu xây dựng trước có gán nhãn (hay cịn gọi tập huấn luyện) Quá trình phân lớp trình gán nhãn cho đối tượng liệu Như vậy, nhiệm vụ tốn phân lớp cần tìm mơ hình phần lớp để có liệu xác định liệu thuộc vào phân lớp Có nhiều tốn phân lớp liệu phân lớp nhị phân (binary), phân lớp đa lớp (multiclass), phân lớp đa trị Bài toán phân lớp nhị phân toán gắn nhãn liệu cho đối tượng vào hai lớp khác dựa vào việc liệu có hay khơng có đặc trưng (feature) phân lớp Bài toán phân lớp đa lớp trình phân lớp liệu với số lượng lớp lớn hai Như với liệu phải xem xét phân lớp chúng vào lớp khác hai lớp toán phân lớp nhị phân Và thực chất toán phân lớp nhị phân toán đặt biệt phân lớp đa lớp 2.2 toán phân lớp nhị phân sử dụng svm: 2.2.1 Giới thiệu Bài toán phân lớp (Classification) dự đoán (Prediction) hai toán có nhiều ứng dụng tất lĩnh vực như: học máy, nhận dạng, trí tuệ nhân tạo, v.v Trong khóa luận này, chúng em sâu nghiên cứu phương pháp Support Vector Machines (SVM), phương pháp hiệu phương pháp SVM coi công cụ mạnh cho tốn phân lớp phi tuyến tính tác giả Vapnik Chervonenkis phát triển mạnh mẽ năm 1995 phương pháp thực phân lớp dựa nguyên lý Cực tiểu hóa Rủi ro có Cấu trúc SRM (Structural Risk Minimization), xem phương pháp phân lớp giám sát không tham số tinh vi Các hàm công cụ đa dạng SVM cho phép tạo không gian chuyên đổi để xây dựng mặt phẳng phân lớp 2.2.2 Định nghĩa Là phương pháp dựa tảng lý thuyết thống kê nên có tảng tốn học chặt chẽ để đảm bảo kết tìm xác Là thuật toán học giám sát ( supervied learning) sử dụng cho phân lớp liệu Là phương pháp thử nghiệm, đưa phương pháp mạnh xác số thuật tốn tiếng phân lớp liệu SVM phương pháp có tính tổng qt cao nên áp dụng cho nhiều loại toán nhận dạng phân loại 2.2.3 Ý tưởng phương pháp Cho trước tập huấn luyện, biểu diễn không gian vector, tài liệu điểm, phương pháp tìm siêu phẳng định tốt chia điểm khơng gian thành hai lớp riêng biệt tương ứng lớp + lớp - Chất lượng siêu phẳng định khoảng cách (gọi biên) điểm liệu gần lớp đến mặt phẳng Khi đó, khoảng cách biên lớn mặt phẳng định tốt, đồng thời việc phân loại xác 10 Mục đích phương pháp SVM tìm khoảng cách biên lớn nhất, điều minh họa sau: Hình 5: Siêu phẳng phân chia liệu học thành lớp + - với khoảng cách biên lớn Các điểm gần (điểm khoanh tròn) Support Vector 2.2.4 Nội dung phương pháp 2.2.4.1 Cơ sở lý thuyết SVM thực chất toán tối ưu, mục tiêu thuật tốn tìm không gian F siêu phẳng định f F cho sai số phân loại thấp Cho tập mẫu (x1, y1), (x2, y2), … (xf, y f ) } với xi ∈ Rn , thuộc vào hai lớp nhãn: yi ∈ {-1,1} nhãn lớp tương ứng xi (-1 biểu thị lớp I, biểu thị lớp II) Ta có, phương trình siêu phẳng chứa vectơ xi không gian: xi w + b = +1, Xi W + b > Đặt f(Xi) = sign (Xi W + b) = -1, Xi W + b < 11 Như vậy, f(Xi) biểu diễn phân lớp Xi vào hai lớp nêu Ta nói yi= +1 Xi € lớp I yi = -1 Xi € lớp II Khi đó, để có siêu phẳng f ta phải giải tốn sau: Tìm w với W thỏa mãn điều kiện sau: yi(sin (Xi.W + b)) ≥ với i € 1,n Bài tốn SVM giải kỹ thuật sử dụng toán tử Lagrange để biến đổi thành dạng đẳng thức Một đặc điểm thú vị SVM mặt phẳng định phụ thuộc Support Vector có khoảng cách đến mặt phẳng định 1/ w Cho dù điểm khác bị xóa thuật tốn cho kết giống ban đầu Đây điểm bật phương pháp SVM so với phương pháp khác tất liệu tập huấn luyện đùng để tối ưu hóa kết TĨM LẠI: trường hợp nhị phân phân tách tuyến tính, việc phân lớp thực qua hàm định f(x) = sign( + b), hàm thu việc thay đổi vectơ chuẩn w, vectơ để cực đại hóa viền chức Việc mở rộng SVM để phân đa lớp đầu tư nghiên cứu Có phương pháp tiếp cận để giải vấn để xây dựng kết hợp nhiều phân lớp nhị phân SVM (Chẳng hạn: trình luyện với SVM, tốn phân m lớp biến đổi thành toán phân 2*m lớp, hai lớp, hàm định xác định cho khả tổng quát hóa tối đa) Trong phương pháp đề cập tới hai cách một-đổi-một, một-đối-tất 2.2.4.2 Bài toán phân lớp với SVM Bài toán đặt là: Xác định hàm phân lớp để phân lớp mẫu tương lai, nghĩa với mẫu liệu x i cần phải xác định xi phân vào lớp +1 hay lớp -1 Để xác định hàm phân lớp dựa phương pháp SVM, ta tiến hành tìm hai siêu phẳng song song cho khoảng cách y chúng lớn để phân tách hai lớp làm hai phía Hàm phân tách tương ứng với phương trình siêu phẳng nằm hai siêu phẳng tìm Hình 6: Minh họa toán phân lớp phương pháp SVM 10 Các điểm mà nằm hai siêu phẳng phân tách gọi Support Vector Các điểm định đến hàm phân tách liệu 2.2.4.3 Bài toán nhiều phân lớp với SVM Để phân nhiều lớp kỹ thuật SVM nguyên thủy chia khơng gian liệu thành phần q trình lặp lại nhiều lần Khi hàm định phân liệu vào lớp thứ i tập n , 2-Iớp là: fi(x) = wiix + bi Những phần tử x support vector thỏa điều kiện +1 thuộc lớp i fi (x) = -1 thuộc phần cịn lại Như vậy, tốn phân nhiều lớp sử dụng phương pháp SVM hồn tồn thực giống toán hai lớp Bằng cách sử dụng chiến lược "một- đối-một”(one - against - one) Giả sử tốn cần phân loại có k lớp (k > 2), chiến lược "một-đối-một”sẽ tiến hành k(k-l)/2 lần phân lớp nhị phân sử dụng phương pháp SVM Mỗi lớp tiến hành phân tách với k-1 lớp lại để xác định k-1 hàm phân tách dựa vào toán phân hai lớp phương pháp SVM 11 CHƯƠNG ỨNG DỤNG THUẬT TOÁN PHÂN LỚP NHỊ PHÂN SỬ DỤNG SVM 3.1 Dữ liệu WheatherAus.csv: Hình 3.1: Dữ liệu cụ thể IMPORT THƯ VIỆN: from sklearn import preprocessing as pp import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report, accuracy_score, precision_score, recall_score, plot_con fusion_matrix, confusion_matrix from sklearn.svm import SVC import matplotlib.pyplot as plt import seaborn as sns ĐỌC FILE DỮ LIỆU CSV: 12 df = pd.read_csv('wheatheraus.csv') BỎ NHỮNG DỮ LIỆU BỊ LẶP df = df.drop_duplicates() HÀM TRẢ VỀ KẾT QUẢ: def show_cm(classifier, X_test, y_test): plt.style.use('default') class_names = ['No', 'Yes'] titles_options = [("Confusion matrix, without normalization", None), ("Normalized confusion matrix", 'true')] for title, normalize in titles_options: disp = plot_confusion_matrix(classifier, X_test, y_test, display_labels=class_names, cmap=plt.cm.Reds, normalize=normalize, xticks_rotation=0) plt.title(title) plt.show() TẠO MODEL PHÂN CỤM DỮ LIỆU VÀ BIỂU DIỄN DỮ LIỆU: from sklearn import preprocessing as pp import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report, accuracy_score, precision_score, recall_score, plot_confusion_matrix, confusion_matrix from sklearn.svm import SVC import matplotlib.pyplot as plt import seaborn as sns ######## ham ve ket qua ############### def show_cm(classifier, X_test, y_test): plt.style.use('default') class_names = ['No', 'Yes'] titles_options = [("Confusion matrix, without normalization", None), ("Normalized confusion matrix", 'true')] for title, normalize in titles_options: disp = plot_confusion_matrix(classifier, X_test, y_test, display_labels=class_names, 13 cmap=plt.cm.Reds, normalize=normalize, xticks_rotation=0) plt.title(title) plt.show() ####### doc file csv ############## df1 = pd.read_csv('weatherAUS.csv', delimiter=',') df1.dataframeName = 'weatherAUS.csv' print(df1.shape) print(df1.keys()) 14 15 TI LIỆU THAM KHẢO 16