Khai phá dữ liệu là gì Data mining – khai phá dữ liệu, là một tập hợp, một hệ thống các phương pháp tính toán, thuật toán được áp dụng cho các cơ sở dữ liệu lớn và phức tạp mục đích loại
Trang 1TRƯỜ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 hiện :
Giảng viên hướng dẫn : PHẠM ĐỨC HỒNG
Hà Nội, tháng 6 năm 2022
Trang 2PHIẾU CHẤM ĐIỂM Sinh viên thực hiện
PHÙNG VĂN PHƯƠNG 19810000237
Giảng viên chấm
Giảng viên chấm 1
Giảng viên chấm 2
Trang 3MỤC LỤC
Catalog
LỜI MỞ ĐẦU 1
LỜI CẢM ƠN 2
1.1 Khai phá dữ liệu là gì 3
1.2 Quy trình khai phá dữ liệu 3
1.2.1 Nghiên cứu lĩnh vực 3
2.2.2 Tạo tập tin dữ liệu đầu vào 3
2.2.3 Tiền xử lý, làm sạch, mã hóa 3
2.2.4 Rút gọn chiều 3
2.2.5 Chọn tác vụ khai thác dữ liệu 4
2.2.6 Chọn các thuật giải Khai thác dữ liệu 4
2.2.7 Khai thác dữ liệu: Tìm kiếm tri thức 4
2.2.8 Đánh giá mẫu tìm được 4
2.2.9 Biểu diễn tri thức 4
CHƯƠNG 2 BI TOÁN PHÂN LỚP NHỊ PHÂN 6
2.1 Tổng quan về bài toán phân lớp nhị phân 6
2.2 bài toán phân lớp nhị phân và sử dụng svm: 6
2.2.1 Giới thiệu 6
2.2.2 Định nghĩa 7
2.2.3Ý tưởng của phương pháp 7
2.2.4Nội dung phương pháp 8
CHƯƠNG 3 Ứ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
Trang 4LỜI MỞ ĐẦU
Ngày nay Công nghệ thông tin đang ngày càng phát triển và trở thành một phần tất yếu của cuộc sống con người Công nghệ thông tin đang càng ngày càng được ứng dụng nhiều vào tất cả các lĩnh vực từ y học, kinh doanh đến
cả giáo dục, và nó góp phần không nhỏ vào sự phát triển của tất các các lĩnh vực đó, đặc biệt là lĩnh vực kinh doanh
Đất nước ta đang ngày càng phát triển, đang cố gắng hòa nhập và rút ngắn khoảng cách với thế giới, việc nước ta trở thành thành viên của WTO
đã được các nhà kinh doanh chú ý đến và đầu tư ngày càng nhiều vào Việt Nam Vì vậy để không bị quá lạc hậu, để đáp ứng yêu cầu tất yếu của các nhà đầu tư vào Việt Nam và để các nhà kinh doanh trong nước có đủ sức cạnh tranh với nước ngoài thì bắt buộc phải đầu tư cho Công nghệ thông tin
mà ở đây chính xác là cá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 quả và chính xác của công việc, ngoài ra còn tiết kiệm thời gian và giảm bớt mệt nhọc cho con 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 nào là một trong những vấn đề người dùng quan tâm nhiều nhất
Trang 5LỜI CẢM ƠN
Môn học “Khai phá dữ liệu” là một môn học rất bổ ích đối với chúng
em Sau khi hoàn thành đề tài này, chúng em đã phần nào hiểu được thế nào
là máy học, biết được các phương pháp và thuật toán khai phá dữ liệu, có được một chương trình cơ bản Để có được những thành công như vậy, ngoài sự nỗ lực của các thành viên trong nhóm còn có sự giúp đỡ tận tình của thầy giáo hướng dẫn và sự tìm tòi ham học hỏi của các bạn trong 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 về những hướng dẫn khoa học của thầy Tiếp đến chúng em xin gửi
lời cảm ơn tới cô giáo chủ nhiệm cùng toàn thể các thầy cô trong khoa đã giúp tạo điều kiện giúp đỡ chúng em trong quá trình thực hiện đề tài
Mặc dù đã rất cố gắng hoàn thiện bài tập lớn với tất cả sự nỗ lực, tuy nhiên, do bước đầu đi vào thực tế, tìm hiểu và xây dựng đồ án trong thời gian có hạn, và kiến thức còn hạn chế, nhiều bỡ ngỡ, nên báo cáo “Khai phá
dữ liệu” chắc chắn sẽ không thể tránh khỏi những thiếu sót Chúng em rất mong nhận được sự quan tâm, thông cảm và những đóng góp quý báu của các thầy cô và các bạn để đồ án này ngày càng hoàn thiện hơn
Một lần nữa, chúng em xin chân thành cám ơn và luôn mong nhận được sự đóng góp của thầy/cô!
Trang 6
CHƯƠNG 1: GIỚI THIỆU VỀ KHAI PHÁ DỮ LIỆU
1.1 Khai phá dữ liệu là gì
Data mining – khai phá dữ liệu, là một tập hợp, một hệ thống các phương pháp tính toán, thuật toán được áp dụng cho các cơ sở dữ liệu lớn
và phức tạp mục đích loại bỏ các chi tiết ngẫu nhiên, chi tiết ngoại lệ, khám phá các mẫu, mô hình, quy luật tiềm ẩn, các thông tin có giá trị trong bộ dữ liệu Data mining là thành quả công nghệ tiên tiến ngày nay, là quá trình khám phá các kiến thức vô giá bằng cách phân tích khối lượng lớn dữ liệu đồng thời lưu trữ chúng ở nhiều cơ sở dữ liệu khác nhau”
1.2 Quy trình khai phá dữ 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 được những tri thức ta cần chắt lọc, từ đó định hướng để tránh tốn thời gian cho những tri thức không cần thiết
2.2.2 Tạo tập tin dữ liệu đầu vào
Ta xây dựng tập tin để lưu trữ các dữ liệu đầu vào để máy tính có thể lưu trữ và xử lý
2.2.3 Tiền xử lý, làm sạch, mã hóa
Ở bước này ta tiến hành bỏ bớt những dữ liệu rườm rà, không cần thiết, tinh chỉnh lại cấu trúc của dữ liệu và mã hóa chúng để tiện cho quá trình xử lý
2.2.4 Rút gọn chiều
Thông thường một tập dữ liệu có chiều khá lớn sẽ sinh ra một lượng
dữ liệu khổng lồ, ví dụ với n chiều ta sẽ có 2 tổ hợp Do đó, đây là mộtn
Trang 7bước quan trọng giúp giảm đáng kể hao tổn về tài nguyên trong quá trình
xử lý tri thức.Thông thường chúng ta sẽ 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 dữ liệu
Để đạt được mục đích ta cần, ta cần chọn được tác vụ khai thác dữ liệu sao cho phù hợp Thông thường có cá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 thế (trend analysis)
*Phân tích độ lệch
*Phân tích hiếm
2.2.6 Chọn các thuật giải Khai thác dữ liệu
2.2.7 Khai thác dữ liệu: Tìm kiếm tri thức
Sau khi tiến hành các bước trên thì đây là bước chính của cả quá
trình, ta sẽ tiến hành khai thác và tìm kiếm tri thức
2.2.8 Đánh giá mẫu tìm được
Ta cần đánh giá lại xem trong các tri thức tìm được, ta sẽ sử đụng được những tri thức nào, những tri thức nào dư thừa, không cần thiết
2.2.9 Biểu diễn tri thức
Trang 8Ta biểu diễn tri thức vừa thu thập được dưới dạng ngôn ngữ tự nhiên và hình thức sao cho người dùng có thể hiểu được những tri thức đó
Trang 9CHƯƠNG 2 BI TOÁN PHÂN LỚP NHỊ PHÂN
2.1 Tổng quan về bài toán phân lớp nhị phân
Bài toán phân lớp (classification) và bài toán gom cụm (cluster) là hai bài toán lớn trong lĩnh vực Machine Learnig (ML) Bài toán phân lớp là quá trình phân lớp một đối tượng dữ liệu vào một hay nhiều lớp đã cho trước nhờ một mô hình phân lớp (model) Mô hình này được xây dựng dựa trên một tập dữ liệu được xây dựng trước đó có gán nhãn (hay còn gọi là tập huấn luyện) Quá trình phân lớp là quá trình gán nhãn cho đối tượng dữ liệu
Như vậy, nhiệm vụ của bài toán phân lớp là cần tìm một mô hình phần lớp
để khi có dữ liệu mới thì có thể xác định được dữ liệu đó thuộc vào phân lớp nào
Có nhiều bài toán phân lớp dữ liệu như 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 là bài toán gắn nhãn
dữ liệu cho đối tượng vào một trong hai lớp khác nhau dựa vào việc dữ liệu đó có hay không có các đặc trưng (feature) của bộ phân lớp Bài toán phân lớp đa lớp là quá trình phân lớp dữ liệu với số lượng lớp lớn hơn hai Như vậy với từng dữ liệu chúng ta phải xem xét và phân lớp chúng vào những lớp khác nhau chứ không phải
là hai lớp như bài toán phân lớp nhị phân Và thực chất bài toán phân lớp nhị phân
là một bài toán đặt biệt của phân lớp đa lớp
2.2 bài toán phân lớp nhị phân và sử dụng svm:
2.2.1 Giới thiệu
Trang 10Bài toán phân lớp (Classification) và dự đoán (Prediction) là hai bài
toán cơ bản và có rất nhiều ứng dụng trong tất cả các 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ẽ đi sâu nghiên cứu phương pháp Support Vector Machines (SVM), một phương pháp rất hiệu quả hiện nay
phương pháp SVM được coi là công cụ mạnh cho những bài toán phân lớp phi tuyến tính được các tác giả Vapnik và Chervonenkis phát triển mạnh
mẽ năm 1995 phương pháp này thực hiện phân lớp dựa trên nguyên lý Cực tiểu hóa Rủi ro có Cấu trúc SRM (Structural Risk Minimization), được xem là một trong các phương pháp phân lớp giám sát không tham số tinh vi nhất cho đến nay Các hàm công cụ đa dạng của 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 trên nền tảng của lý thuyết thống kê nên có một nền tảng toán học chặt chẽ để đảm bảo rằng kết quả tìm được là chính xác
Là thuật toán học giám sát (supervied learning) được sử dụng cho phân lớp dữ liệu
Là 1 phương pháp thử nghiệm, đưa ra 1 trong những phương pháp mạnh và chính xác nhất trong số các thuật toán nổi tiếng về phân lớp dữ liệu SVM là một phương pháp có tính tổng quát cao nên có thể được áp dụng cho nhiều loại bài toán nhận dạng và phân loại
2.2.3 Ý tưởng của phương pháp
Cho trước một tập huấn luyện, được biểu diễn trong không gian vector, trong đó mỗi tài liệu là một điểm, phương pháp này tìm ra một siêu phẳng quyết định tốt nhất có thể chia các điểm trên không gian này thành hai lớp riêng biệt tương ứng là lớp + và lớp - Chất lượng của siêu phẳng này được quyết định bởi khoảng cách (gọi là biên) của điểm dữ liệu gần nhất của mỗi lớp đến mặt phẳng này Khi đó, khoảng cách biên càng lớn thì mặt phẳng quyết định càng tốt, đồng thời việc phân loại càng chính xác
10
Trang 11Mục đích của phương pháp SVM là tìm được khoảng cách biên lớn nhất, điều này được minh họa như sau:
Hình 2 5: Siêu phẳng phân chia dữ liệu học thành 2 lớp + và - với khoảng cách biên lớn nhất Các điểm gần nhất (điểm được khoanh tròn) là các
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 là một bài toán tối ưu, mục tiêu của thuật toán này là tìm được một không gian F và siêu phẳng quyết định f trên F sao cho sai số phân loại là thấp nhất
Cho tập mẫu (x , y ), (x , y ), … (x , y ) } với x R , thuộc vào hai 1 1 2 2 f f i∈ n lớp
nhãn: yi ∈ {-1,1} là nhãn lớp tương ứng của các x (-1 biểu thị lớp I, 1 biểu thịi lớp II)
Ta có, phương trình siêu phẳng chứa vectơ x trong không gian:i
xi w + b = 0
+1, X W + b > 0i Đặt f(X ) = sign (X W + b) =i i
-1, X W + b < 0i
11
Trang 12Như vậy, f(Xi) biểu diễn sự phân lớp của Xi vào hai lớp như đã nêu Ta nói y = +1 i nếu X € lớp I và y = -1 nếu X € lớp II Khi đó, để có siêu phẳng f ta sẽ phải giải i i i bài toán sau:
Tìm minw với W thỏa mãn điều kiện sau:
yi(sin (Xi.W + b)) ≥ 1 với i € 1,n Bài toán SVM có thể giải bằng kỹ thuật sử dụng toán tử Lagrange để biến đổi về thành dạng đẳng thức Một đặc điểm thú vị của SVM là mặt phẳng quyết định chỉ phụ thuộc các Support Vector và nó có khoảng cách đến mặt phẳng quyết
định là 1/ Cho dù các điểm khác bị xóa đi thì thuật toán vẫn cho kết quả w
giống
như ban đầu Đây chính là điểm nổi bật của phương pháp SVM so với các phương pháp khác vì tất cả các dữ liệu trong tập huấn luyện đều được đùng để tối ưu hóa kết quả
TÓM LẠI: trong trường hợp nhị phân phân tách tuyến tính, việc phân lớp được thực hiện qua hàm quyết định f(x) = sign(<w.x> + b), hàm này thu
được bằng việc thay đổi vectơ chuẩn , đây là vectơ để cực đại hóa viền chứcw
năng
Việc mở rộng SVM để phân đa lớp hiện nay vẫn đang được đầu tư nghiên cứu Có một phương pháp tiếp cận để giải quyết vấn để này là xây dựng và kết hợp nhiều bộ phân lớp nhị phân SVM (Chẳng hạn: trong quá trình luyện với SVM, bài toán phân m lớp có thể được biến đổi thành bài toán phân 2*m lớp, khi đó trong mỗi hai lớp, hàm quyết định sẽ được xác định cho khả năng tổng quát hóa tối đa) Trong phương pháp này có thể đề cập tới hai
cách là một-đổi-một, một-đối-tất cả
2.2.4.2 Bài toán phân 2 lớp với SVM
Bài toán đặt ra là: Xác định hàm phân lớp để phân lớp các mẫu trong tương lai, nghĩa là với một mẫu dữ liệu mới x thì cần phải xác định x đượci i phân vào lớp +1 hay lớp -1
Để xác định hàm phân lớp dựa trên phương pháp SVM, ta sẽ tiến hành
Trang 13thể để phân tách hai lớp này ra 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 giữa hai siêu phẳng tìm được
Hình 2 6: Minh họa bài toán 2 phân lớp bằng phương pháp SVM
Trang 14
Các điểm mà nằm trên hai siêu phẳng phân tách được gọi là các Support Vector
Các điểm này sẽ quyết định đến hàm phân tách dữ 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 thì kỹ thuật SVM nguyên thủy sẽ chia không gian dữ liệu thành 2 phần và quá trình này lặp lại nhiều lần Khi đó hàm quyết định phân dữ liệu vào lớp thứ i của tập n , 2-Iớp sẽ là:
f i (x) = w x + bi
i Những phần tử là support vector sẽ thỏa điều kiệnx
+1 nếu thuộc lớp i
f i (x) =
-1 nếu thuộc phần còn lại Như vậy, bài toán phân nhiều lớp sử dụng phương pháp SVM hoàn toàn
có thể thực hiện giống như bài 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ử bài toá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 sẽ tiến hành phân tách với k-1 lớp còn lại để xác định k-1 hàm phân tách dựa vào bài toán phân hai lớp bằng phương pháp SVM
Trang 15CHƯƠNG 3 Ứ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:
Trang 16BỎ 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 ppas
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
######## ham ve ket qua ###############
defshow_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 titles_options, in :
disp plot_confusion_matrix= (classifier, X_test y_test, ,
Trang 17cmap= 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 ())