LỜI CẢM ƠN
Em xin chân thành cảm ơn Trường Đại học Công nghệ Thông tin và
Truyền thông – Đại học Thái Nguyên đã tạo điều kiện cho em thực hiện luận
văn này.
Em xin gửi lời cảm ơn sâu sắc tới thầy giáo TS. Nguyễn Văn Núi, Bộ
môn công nghệ phần mềm - Trường Đại học Công nghệ Thông tin và Truyền
thông - Đại học Thái Nguyên đã trực tiếp hướng dẫn em trong quá trình thực
hiện luận văn.
Em cũng xin gửi lời cảm ơn tới các thầy, cô đã có những ý kiến đóng
góp bổ ích và đã tạo mọi điều kiện tốt nhất cho em trong suốt thời gian thực
hiện luận văn. Xin cảm ơn các bạn học đồng khóa đã thường xuyên động
viên, giúp đỡ tôi trong quá trình học tập.
Cuối cùng, em xin gửi lời cảm ơn đến gia đình và đồng nghiệp vì sự ủng
hộ và động viên đã dành cho em trong suốt quá trình học tập cũng như thực
hiện luận văn này.
Thái Nguyên, tháng 05 năm 2019
Học viên
Nguyễn Minh Tâm
2
LỜI CAM ĐOAN
Em xin cam đoan về nội dung đồ án tốt nghiệp với tên đề tài “ Nghiên
cứu một số thuật toán phân cụm, phân lớp dữ liệu và ứng dụng” không sao
chép nội dung từ các luận văn khác, hay các sản phẩm tương tự mà không phải
do em làm ra. Sản phẩm luận văn là do chính bản thân em tìm hiểu và xây
dựng nên.
Nếu có gì sai em xin chịu mọi hình thức kỷ luật của Trường Đại học
Công nghệ Thông tin và Truyền thông – Đại học Thái Nguyên.
BẢN...........34
3.1 Định nghĩa về phân lớp dữ liệu.............................................................. 34
3.2 Các vấn đề quan tâm của phân lớp dữ liệu ............................................ 34
3.2.1 Quá trình phân lớp dữ liệu: ............................................................. 34
3.2.2 So sánh các phương pháp phân lớp................................................. 36
3.3 Phân lớp bằng cây quyết định ................................................................ 36
3.3.1 Khái niệm về cây quyết định ............................................................ 36
3.3.2 Ưu, nhược điểm của cây quyết định ................................................ 39
3.3.3 Một số thuật toán của cây quyết định .............................................. 40
4
3.4 Phân lớp bằng Bayesian......................................................................... 48
3.5 Phân lớp dựa trên sự kết hợp ................................................................. 51
3.5.1 Các khái niệm quan trọng về luật kết hợp....................................... 51
3.5.2 Một số thuật toán về luật kết hợp .................................................... 52
3.6 Độ chính xác classifier........................................................................... 57
3.7 Kết luận .................................................................................................. 59
CHƯƠNG 4 MỘT SỐ KẾT QUẢ THỬ
NGHIỆM.................................................60
4.1. Giới thiệu về công cụ phân cụm, phân lớp dữ liệu Weka..................... 60
4.2. Ứng dụng phân cụm dữ liệu để phân nhóm khách hàng ...................... 62
4.3. Ứng dụng phân lớp dữ liệu để phân lớp ............................................... 68
4.3.1. Phân lớp dữ liệu với thuật toán Apriori ......................................... 68
4.3.2. Phân lớp dữ liệu với thuật toán Naive Bayes ................................. 71
KẾT LUẬN ..................................................................................................................75
TÀI LIỆU THAM KHẢO...........................................................................................76
Tiếng Việt: ................................................................................................... 76
Tiếng Anh: ................................................................................................... 76
Viết đầy đủ
1
PLDL
Phân lớp dữ liệu
2
CSDL
Cơ sở dữ liệu
3
KPDL
Khai phá dữ liệu
4
AGNES
Agglomerative Nesting
5
BIRCH
9
PAM
Partitioning Around Medoids
10
ID3
Interative Decision 3
11
NBC
Native Bayes Classification
Phân lớp dữ liệu Naive
Bayes
12
FP
Frequent Pattern
Mẫu thường xuyên
8
thuật toán phân lớp dữ liệu bao gồm: ID3, C.4.5, Naive Bayes, Apriori, …
cũng sẽ được trình bày chi tiết trong chương này.
Chương 4. Một số kết quả thử nghiệm: Chương này trình bày và phân tích
một số kết quả thử nghiệm các thuật toán phân cụm, phân lớp dữ liệu cơ bản.
Kết quả phân tích chủ yếu được triển khai thực hiện dựa trên phần mềm
Weka (Waikato Environment for Knowledge Analysis) - một bộ phần
mềm học máy được trường Đại học Waikato, New Zealand phát triển
bằng Java. Weka là phần mềm tự do phát hành theo Giấy phép Công cộng
GNU, hiện đang được sử dụng rất rộng rãi bởi cộng đồng những người làm về
lĩnh vực khai phá dữ liệu và phát hiện tri thức.
9
CHƯƠNG 1
TỔNG QUAN
1.1 Gi i thi u chung
Sự phát triển của khoa học công nghệ và việc ứng dụng công nghệ thông
tin ở hầu hết các lĩnh vực trong nhiều năm qua cũng đồng nghĩa với lượng dữ
liệu đã được thu thập và lưu trữ ngày càng lớn. Các hệ quản trị cơ sở dữ liệu
truyền thống cũng chỉ khai thác được một lượng thông tin nhỏ không còn đáp
ứng đầy đủ những yêu cầu, những thách thức mới. Do vậy các phương pháp
quản trị và khai thác cơ sở dữ liệu truyền thống ngày càng không đáp ứng
được thực tế đã làm phát triển một khuynh hướng kỹ thuật mới đó là kỹ thuật
phát hiện tri thức và khai phá dữ liệu. Tôi xin giới thiệu một cách tổng quan
về phát hiện tri thức và khai phá dữ liệu cùng một số kỹ thuật cơ bản để trong
phá dữ liệu. Đây là bước được khai thác trong một cơ sở dữ liệu, một kho dữ
liệu và thậm chí các dữ liệu từ các nguồn ứng dụng Web.
11
(2) Trích lọc dữ liệu: Ở giai đoạn này những tập dữ liệu cần được khai
phá từ các tập dữ liệu lớn ban đầu theo một số tiêu chí nhất định phục vụ mục
đích khai thác.
(3) Làm sạch, tiền xử lý và chuẩn bị trước dữ liệu: Đối với dữ liệu thu
thập được, cần xác định các vấn đề ảnh hưởng là cho nó không sạch. Bởi vì,
dữ liệu không sạch (những dữ liệu không đầy đủ, nhiễu, không nhất quán) thì
các tri thức khám phá được sẽ bị ảnh hưởng và không đáng tin cậy, dẫn tới
các quyết định thiếu chính xác. Vậy, cần gán các giá trị thuộc tính còn thiếu,
sữa chữa các dữ liệu nhiễu, lỗi, xác định loại bỏ các giá trị ngoại lai, giải
quyết các mâu thuẫn dữ liệu. Sau bước này, dữ liệu sẽ nhất quán, đầy đủ,
được rút gọn và được rời rạc hóa. Đây là một quá trình rất quan trọng vì dữ
liệu này nếu không được “làm sạch - tiền xử lý dữ liệu” thì sẽ gây nên những
kết quả sai lệch nghiêm trọng.
(4) Chuyển đổi dữ liệu: Tiếp theo là giai đoạn chuyển đổi dữ liệu, dữ liệu
đưa ra có thể sử dụng và điều khiển được bởi việc tổ chức lại nó, tức là dữ
liệu sẽ được chuyển đổi về dạng thuận lợi nhất nhằm phục vụ quá trình khai
phá ở bước sau.
(5) Khai phá dữ liệu: Ở giai đoạn này nhiều thuật toán khác nhau đã
được sử dụng để trích ra các mẫu từ dữ liệu. Đây là bước áp dụng những kỹ
thuật phân tích (như các kỹ thuật của học máy) nhằm để khai thác dữ liệu,
trích chọn được những mẫu thông tin, những mối liên hệ đặc biệt trong dữ
liệu. Đây được xem là bước quan trọng và tốn nhiều thời gian nhất của toàn
quá trình khai phá dữ liệu.
(6) Đánh giá các luật và biểu diễn tri thức: Ở giai đoạn này, những mẫu
- Kĩ thuật khai phá dữ liệu dự đoán: có nhiệm vụ đưa ra các dự đoán dựa
vào các suy diễn trên dữ liệu hiện thời. Các kĩ thuật này gồm có: phân lớp
(classification), hồi quy (regression)...;
13
3 phương pháp thông dụng nhất trong khai phá dữ liệu là: phân cụm dữ
liệu, phân lớp dữ liệu và khai phá luật kết hợp. Ta sẽ xem xét từng phương
pháp:
Phân cụm dữ liệu là nhóm các đối tượng tương tự nhau trong tập dữ liệu
vào các cụm sao cho các đối tượng thuộc cùng một cụm là tương đồng còn
các đối tượng thuộc các cụm khác nhau sẽ không tương đồng. Phân cụm dữ
liệu là một ví dụ của phương pháp học không giám sát. Không giống như
phân loại dữ liệu, phân cụm dữ liệu không đòi hỏi phải định nghĩa trước các
mẫu dữ liệu huấn luyện. Vì thế, có thể coi phân cụm dữ liệu là một cách học
bằng quan sát (learning by observation), trong khi phân loại dữ liệu là học
bằng ví dụ (learning by example). Trong phương pháp này bạn sẽ không thể
biết kết quả các cụm thu được sẽ như thế nào khi bắt đầu quá trình. Vì vậy,
thông thường cần có một chuyên gia về lĩnh vực đó để đánh giá các cụm thu
được. Phân cụm dữ liệu được sử dụng nhiều trong các ứng dụng về phân đoạn
thị trường, phân đoạn khách hàng, nhận dạng mẫu, phân loại trang Web…
Ngoài ra phân cụm dữ liệu còn có thể được sử dụng như một bước tiền xử lí
cho các thuật toán khai phá dữ liệu khác.
Phân lớp dữ liệu là xếp một đối tượng vào một trong những lớp đã biết
trước. Ví dụ như phân lớp các dữ liệu bệnh nhân trong hồ sơ bệnh án. Hướng
tiếp cận này thường sử dụng một số kỹ thuật của học máy như cây quyết định,
mạng nơron nhân tạo,... Phân lớp dữ liệu còn được gọi là học có giám sát.
Quá trình phân lớp dữ liệu thường gồm 2 bước xây dựng mô hình và sử dụng
mô hình để phân lớp dữ liệu.
Intelligence Miner. Ta có thể đưa ra một số ứng dụng trong các lĩnh vực như:
Ngân hàng: Xây dựng mô hình dự báo rủi ro tín dụng, tìm kiếm tri thức,
quy luật của thị trường chứng khoán và đầu tư bất động sản.
15
Thương mại điện tử: Công cụ tìm hiểu, định hướng, thúc đẩy, giao tiếp
với khách hàng, phân tích khách hàng duyệt web, phân tích hành vi mua sắm
trên mạng và cho biết thông tin tiếp thị phù hợp với từng loại khách hàng.
Thiên văn học: Hệ thống SKICAT do JPL/Caltech phát triển được sử
dụng cho các nhà thiên văn để tự động xác định các vì sao và các dải thiên hà
trong một bản khảo sát lớn để có thể phân tích và phân loại.
Sinh học phân tử: Hệ thống tìm kiếm các mẫu trong cấu trúc phân tử và
trong các dữ liệu gen.
Mô hình hóa những thay đổi thời tiết: các mẫu không gian, thời gian như
lốc, gió xoáy được tự động tìm thấy trong các tập lớn dữ liệu mô phỏng và
quan sát được.
1.5 Những thách thức trong khai phá dữ li u
Mặc dù khai phá dữ liệu mang lại nhiều lợi ích và lợi thế, tuy nhiên nó
vẫn gặp phải những thách thức cơ bản đó là những vấn đề sau đây:
- Cơ sở dữ liệu lớn: kích thước của cơ sở dữ liệu được nhận biết thông
qua số lượng các mẫu tin, các thuộc tính (hay các biến) và các bảng, số lượng
có thể là hàng trăm thuộc tính và bảng, hàng triệu các mẫu tin. Như vậy, kích
thước của cơ sở dữ liệu tính bằng terabyte đã bắt đầu xuất hiện. Dữ liệu với số
chiều (tương ứng với thuộc tính khi biểu diễn qua không gian các mẫu dữ
liệu) lớn tạo nên sự gia tăng về kích thước của không gian tìm kiếm trong việc
quy nạp mô hình, một sự bùng nổ về tổ hợp. Khi xây dựng mô hình chỉ một
tập con trong cơ sở dữ liệu tham gia, vì vậy tính may rủi trong các thuật toán
khai phá sẽ tìm được các mẫu không có giá trị trong trường hợp tổng quát.
PHÂN CỤM DỮ LIỆU VÀ MỘT SỐ THUẬT TOÁN CƠ
BẢN
2.1 Đị h ghĩa về phân cụm dữ li u
Phân cụm là kỹ thuật rất quan trọng trong khai phá dữ liệu, nó thuộc lớp
các phương pháp học không giám sát trong Machine Learning. Có rất nhiều
định nghĩa khác nhau về kỹ thuật này, nhưng về bản chất ta có thể hiểu phân
cụm là các qui trình tìm cách nhóm các đối tượng đã cho vào các cụm
(clusters), sao cho các đối tượng trong cùng một cụm tương tự (similar) nhau
và các đối tượng khác cụm thì không tương tự (dissimilar) nhau.
Chúng ta có thể có thể minh hoạ vấn đề phân cụm như hình sau:
Hình 2.1. Mô phỏng vấ đề phân cụm dữ li u
Trong trường hợp này, chúng ta dễ dàng xác định được 3 cụm dựa vào
các dữ liệu đã cho, các tiêu chí “tương tự” để phân cụm trong trường hợp này
18
là khoảng cách hai hoặc nhiều đối tượng thuộc nhóm của chúng được “đóng
gói” theo một khoảng cách nhất định. Điều này được gọi là phân cụm dựa trên
khoảng cách.
Một kiểu khác của phân cụm dữ liệu là phân cụm dữ liệu dựa vào khái
niệm hai hay nhiều đối tượng thuộc cùng nhóm nếu có một định nghĩa khái
niệm chung cho tất cả các đối tượng trong đó. Nói cách khác, đối tượng của
nhóm phải phù hợp với nhau theo miêu tả các khái niệm đã được định nghĩa,
không phải theo những biện pháp đơn giản tương tự.
Kỹ thuật phân cụm có thể áp dụng trong rất nhiều lĩnh vực như:
-
Marketing: Xác định các nhóm khách hàng (khách hàng tiềm năng,
19
Do đó, mà người sử dụng phải cung cấp tiêu chuẩn, theo cách như vậy mà kết
quả của phân cụm dữ liệu sẽ phù hợp với nhu cầu của họ cần.
Một vấn đề thường gặp trong phân cụm là hầu hết các dữ liệu cần cho
phân cụm đều có chứa dữ liệu nhiễu do quá trình thu thập thiếu chính xác
hoặc thiếu đầy đủ, vì vậy cần phải xây dựng chiến lược cho bước tiền xử lí dữ
liệu nhằm khắc phục hoặc loại bỏ nhiễu trước khi chuyển sang giai đoạn phân
tích cụm dữ liệu. Nhiễu ở đây được hiểu là các đối tượng dữ liệu không chính
xác, không tường minh hoặc là các đối tượng dữ liệu khuyết, thiếu thông tin
về một số thuộc tính... Một trong các kỹ thuật xử lí nhiễu phổ biến là việc
thay thế giá trị các thuộc tính của đối tượng nhiễu bằng giá trị thuộc tính
tương ứng. Ngoài ra, dò tìm đối tượng ngoại lai cũng là một trong những
hướng nghiên cứu quan trọng trong phân cụm, chức năng của nó là xác định
một nhóm nhỏ các đối tượng dữ liệu khác thường so với các dữ liệu trong cơ
sở dữ liệu, tức là các đối tượng dữ liệu không tuân theo các hành vi hoặc mô
hình dữ liệu nhằm tránh sự ảnh hưởng của chúng tới quá trình và kết quả của
phân cụm.
Theo các nghiên cứu đến thời điểm hiện nay thì chưa có một phương
pháp phân cụm tổng quát nào có thể giải quyết trọn vẹn cho tất cả các dạng
cấu trúc cơ sở dữ liệu. Hơn nữa, đối với các phương pháp phân cụm cần có
cách thức biểu diễn cấu trúc của cơ sở dữ liệu, với mỗi cách thức biểu diễn
khác nhau sẽ có tương ứng một thuật toán phân cụm phù hợp. Vì vậy phân
cụm dữ liệu vẫn đang là một vấn đề khó và mở, vì phải giải quyết nhiều vấn
đề cơ bản một cách trọn vẹn và phù hợp với nhiều dạng dữ liệu khác nhau,
đặc biệt là đối với dữ liệu hỗn hợp đang ngày càng tăng trong các hệ quản trị
dữ liệu và đây cũng là một trong những thách thức lớn trong lĩnh vực khai phá
dữ liệu.
2
m
Đầu ra: Phân tách các dữ liệu thuộc D thành các cụm sao cho:
-
Các phần tử trong cùng một cụm có tính chất tương tự nhau
(gần nhau).
-
Các phần tử ở các cụm khác nhau có tính chất khác nhau (xa
nhau).
2.4 M t số kiểu dữ li u
Thuật toán phân cụm dữ liệu có nhất rất nhiều liên kết với các loại dữ
liệu. Vì vậy, sự hiểu biết về quy mô, bình thường hoá, và gần nhau là rất quan
21
trọng trong việc giải thích các kết quả của thuật toán phân cụm dữ liệu. Kiểu
dữ liệu nói đến mức độ lượng tử hóa trong dữ liệu [2] một thuộc tính duy nhất
có thể được gõ như nhị phân, rời rạc, hoặc liên tục. Thuộc tính nhị phân có
chính xác hai giá trị, như là đúng hoặc sai. Thuộc tính rời rạc có một số hữu
hạn các giá trị có thể, vì thế các loại nhị phân là một trường hợp đặc biệt của
các loại rời rạc.
Trong phần này ta phân tích các kiểu dữ liệu thường được sử dụng trong
phân cụm dữ liệu. Trong phân cụm dữ liệu, các đối tượng dữ liệu cần phân
nhưng chúng không được định lượng. Nếu x và y là hai thuộc tính thứ tự thì ta
có thể xác định là x y hoặc x = y hoặc x > y hoặc x < y. Thí dụ như thuộc
tính Huy chương của vận động viên thể thao.
- Thuộc tính khoảng: Nhằm để đo các giá trị theo xấp xỉ tuyến tính. Với
thuộc tính khoảng, ta có thể xác định một thuộc tính là đứng trước hoặc đứng
sau thuộc tính khác với một khoảng là bao nhiêu. Nếu xi> yi thì ta nói x cách
y một khoảng |xi – yi| tương ứng với thuộc tính thứ i. Ví dụ: thuộc tính số
Serial của một đầu sách trong thư viện hoặc thuộc tính số kênh trên truyền
hình.
- Thuộc tính tỉ lệ: Là thuộc tính khoảng nhưng được xác định một cách
tương đối so với điểm mốc, thí dụ như thuộc tính chiều cao hoặc cân nặng lấy
giá trị 0 làm mốc.
Trong các thuộc tính dữ liệu trình bày ở trên, thuộc tính định danh và
thuộc tính có thứ tự gọi chung là thuộc tính hạng mục, thuộc tính khoảng và
thuộc tính tỉ lệ được gọi là thuộc tính số.
Người ta còn đặc biệt quan tâm đến dữ liệu không gian. Đây là loại dữ
liệu có các thuộc tính số khái quát trong không gian nhiều chiều, dữ liệu
không gian mô tả các thông tin liên quan đến không gian chứa đựng các đối
tượng, thí dụ như thông tin về hình học,… Dữ liệu không gian có thể là dữ
liệu liên tục hoặc rời rạc.
23
Dữ liệu không gian rời rạc: Có thể là một điểm trong không gian nhiều
chiều và cho phép ta xác định được khoảng cách giữa các đối tượng dữ liệu
trong không gian.
Dữ liệu không gian liên tục: Bao gồm một vùng trong không gian.
Thông thường, các thuộc tính số được đo bằng các đơn vị xác định như
là Kilogams hoặc Centimeter. Tuy nhiên, các đơn vị đo có ảnh hưởng đến các
24
trong các cụm ngày càng lớn hơn cho tới khi tất cả các đối tượng nằm trong
một cụm đơn hay cho tới khi thỏa mãn điều kiện dừng cho trước.
- Phân cụm phân cấp phân ly: phương pháp này ngược lại bằng cách
bắt đầu với tất cả các đối tượng trong một cụm, chia nhỏ nó vào trong các
phần ngày càng nhỏ hơn cho tới khi mỗi đối tượng hình thành nên một cụm
hay thỏa mãn một điều kiện dừng cho trước.
2.5.1.1 Thuật toán AGNES
Thuật toán AGNES (Agglomerative Nesting) - tích đống lồng [3].
Phương pháp này sử dụng phương pháp kết nối đơn, tại đó mỗi cụm được đại
diện bởi tất cả các điểm dữ liệu trong cụm, và độ tương đồng giữa hai cụm
được đo bởi độ tương đồng của cặp điểm dữ liệu gần nhất thuộc về các cụm
khác nhau. AGNES hoà nhập các nút (tức là các đối tượng hay các cụm riêng
lẻ) có độ không tương đồng ít nhất, cứ thể cho tới khi hoà nhập thành một
cụm duy nhất.
Thu t toán AGNES bao gồ
c c bư c cơ bản sau :
Bước 1: Mỗi đối tượng là một nhóm
Bước 2: Hợp nhất các nhóm có khoảng cách giữa các nhóm là nhỏ nhất.
Bước 3: Nếu thu được nhóm “toàn bộ” tức là dữ liệu đã nằm toàn bộ
trong một nhóm thì dừng, ngược lại quay lại bước 2
2.5.1.2 Thuật toán BIRCH
Một phương pháp phân cụm phân cấp được tích hợp thú vị gọi là BIRCH
(Balanced Iterative Reducing and Clustering using Hierachies) được đề xuất
năm 1996 bởi Zhang, Ramakrishnan và Livny.
Nó đưa ra hai khái niệm: đặc trưng phân cụm (CF - Clustering Feature)
và cây CF (Clustering Feature tree), sử dụng cây CF đại diện một cụm tóm tắt
được lặp lại cho đến khi tất cả các đối tượng đều được chèn vào cây
CF. Để lưu thông toàn bộ cây CF trong bộ nhớ điều chỉnh kích thước của cây
CF thông qua điều chỉnh ngưỡng T.
Giai đoạn 2: BIRCH chọn một giải thuật toán phân cụm bất kỳ (như
thuật toán phân hoạch) để thực hiện phân cụm cho tất các các nút lá CF.
2.5.2 Phươ g h
h
cụm dữ li u dựa trên m t đ
Phương pháp này nhóm các đối tượng dữ liệu dựa trên hàm mật độ xác
định, mật độ là số các đối tượng lân cận của một đối tượng dữ liệu theo một