Giới thiệu kỹ thuật phân cụm trong “khai phá dữ liệu” Clustering Techniques in Data mining 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 Unsupe
Trang 1Nhận Xét Của Giáo Viên
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT KHÓA 6
BÀI THU HOẠCH
Đề tài:
TÌM HIỂU VÀ CÀI ĐẶT ỨNG DỤNG THUẬT TOÁN K_MEANS
GVHD: TS Đỗ Phúc
SVTH: LÊ THỊ PHÚC KHOA – CH1101015
Trang 2
TP HCM, Ngày…….tháng…… năm 2012
Trang 3Mục Lục
I Giới thiệu kỹ thuật phân cụm trong “khai phá dữ liệu” (Clustering Techniques
in Data mining) 1
II.Thuật toán K_means: 3
1.Giới thiệu thuật toán: 3
2 Ví dụ minh họa: 5
III Đánh giá 10
1 Ưu điểm 10
2 Khuyết điểm 10
VI Các biến thể và cải tiến của K_means: 11
1 Thuật toán k-medoids: 11
2 Thuật toán fuzzy c-means: 11
V Hướng dẫn sử dụng phần mềm: 12
Tài liệu tham khảo 14
Trang 4I Giới thiệu kỹ thuật phân cụm trong “khai phá dữ liệu” (Clustering
Techniques in Data mining)
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 Unsupervised Learning 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 1 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.
Mục đích của phân cụm là tìm ra bản chất bên trong các nhóm của dữ liệu Các thuật toán phân cụm (Clustering Algorithms) đều sinh ra các cụm (clusters) Tuy nhiên, không có tiêu chí nào là được xem là tốt nhất để đánh hiệu của của phân tích phân cụm, điều này phụ thuộc vào mục đích của phân cụm như: data reduction,
“natural clusters”, “useful” clusters, outlier detection
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, khách hàng giá trị, phân loại và dự đoán hành vi khách hàng,…) sử dụng sản phẩm hay dịch vụ của công ty để giúp công ty có chiến lược kinh doanh hiệu quả hơn;
Sinh học: Phận nhóm động vật và thực vật dựa vào các thuộc tính của chúng;
Thư viện: Theo dõi độc giả, sách, dự đoán nhu cầu của độc giả…;
Bảo hiểm, tài chính: Phân nhóm các đối tượng sử dụng bảo hiểm và các dịch
vụ tài chính, dự đoán xu hướng (trend) của khách hàng, phát hiện gian lận tài chính (identifying frauds)
WWW: Phân loại tài liệu (document classification); phân loại người dùng web (clustering weblog);…
Trang 5Các kỹ thuật phân cụm được phân loại như sau (xem hình)
Trang 6II Thuật toán K_means:
1 Giới thiệu thuật toán:
K-Means là thuật toán rất quan trọng và được sử dụng phổ biến trong kỹ thuật phân cụm Tư tưởng chính của thuật toán K-Means là tìm cách phân nhóm các đối tượng (objects) đã cho vào K cụm (K là số các cụm được xác đinh trước, K nguyên dương) sao cho tổng bình phương khoảng cách giữa các đối tượng đến tâm nhóm (centroid ) là nhỏ nhất
Mục đích của thuật toán k_means là sinh ra k cụm dữ liệu {C1, C2, …., Ck} từ một
tập dữ liệu chứa n đối tượng trong không gian d chiều X = {xi| i = 1, 2, …, N},
Hàm đo độ tương tự sử dụng khoảng cách Euclidean
E =
2 1
(|| || )
i j
N
i j
i x C
x c
trong đó cj là trọng tâm của cụm Cj Hàm trên không âm, giảm khi có 1 sự thay đổi trong 1 trong 2 bước: gán dữ liệu và định lại vị trí tâm
Thuật toán K-Means thực hiện qua các bước chính sau:
Bước 1: Chọn ngẫu nhiên K trọng tâm (centroid) cho K cụm (cluster) Mỗi cụm được đại diện bằng các tâm của cụm {ci} (i = 1÷K)
Bước 2: Tính khoảng cách giữa các đối tượng (objects) đến K tâm (thường dùng khoảng cách Euclidean)
( )t
i
x :||x t || ||x t ||
j j ci j ci
for all i*= 1,… ,k}
Bước 3: Nhóm các đối tượng vào nhóm gần nhất
d i
x R
Trang 7Bắt đầu
Số cụm K
Trọng tâm
Khoảng cách các
đối tượng đến các
trọng tâm
Nhóm các đối tượng
vào các cụm
Không có đối tượng chuyển
-Bước 4: Cập nhật lại trọng tâm:
( )
( 1)
( )
x
1
x
t
S i
c
S
Bước 5: Thực hiện lại bước 2 cho đến khi không có sự thay đổi nhóm nào của
các đối tượng
Thuật toán K-Means được mô tả như sau:
K-Mean và ứng dung
13
K-Mean và ứng dung
13
Trang 82 Ví dụ minh họa:
Giả sử ta có 4 loại thuốc A,B,C,D, mỗi loại thuộc được biểu diễn bởi 2 đặc trưng X
và Y như sau Mục đích của ta là nhóm các thuốc đã cho vào 2 nhóm (K=2) dựa vào các đặc trưng của chúng
Trang 9Bước 1 Khởi tạo tâm (centroid) cho 2 nhóm Giả sử ta chọn A là tâm của nhóm thứ
nhất (tọa độ tâm nhóm thứ nhất c1(1,1)) và B là tâm của nhóm thứ 2 (tạo độ tâm nhóm thứ hai c2 (2,1))
Bước 2 Tính khoảng cách từ các đối tượng đến tâm của các nhóm (Khoảng cách
Euclidean)
Mỗi cột trong ma trận khoảng cách (D) là một đối tượng (cột thứ nhất tương ứng với đối tượng A, cột thứ 2 tương ứng với đối tượng B,…) Hàng thứ nhất trong ma trận khoảng cách biểu diễn khoảng cách giữa các đối tượng đến tâm của nhóm thứ
Trang 100 0.5 1 1.5 2 2.5 3 3.5 4 4.5
nhất (c1) và hàng thứ 2 trong ma trận khoảng cách biểu diễn khoảng cách của các đối tượng đến tâm của nhóm thứ 2 (c2)
Ví dụ, khoảng cách từ loại thuốc C=(4,3) đến tâm c1(1,1) là 3.61 và đến tâm c2(2,1) là 2.83 được tính như sau:
Bước 3 Nhóm các đối tượng vào nhóm gần nhất
Ta thấy rằng nhóm 1 sau vòng lặp thứ nhất gồm có 1 đối tượng A và nhóm 2 gồm các đối tượng còn lại B,C,D
Bước 4 Tính lại tọa độ các tâm cho các nhóm mới dựa vào tọa độ của các đối
tượng trong nhóm Nhóm 1 chỉ có 1 đối tượng A nên tâm nhóm 1 vẫn không đổi, c1(1,1) Tâm nhóm 2 được tính như sau:
Trang 110 0.5 1 1.5 2 2.5 3
HVTH: CH1101015 _Lê Thị Phúc Khoa
Bước 5 Tính lại khoảng cách từ các đối tượng đến tâm mới
Bước 6 Nhóm các đối tượng vào nhóm
Bước 7 Tính lại tâm cho nhóm mới
Trang 12Bước 8 Tính lại khoảng cách từ các đối tượng đến tâm mới
Bước 9 Nhóm các đối tượng vào nhóm
Ta thấy G2 = G1 (Không có sự thay đổi nhóm nào của các đối tượng) nên thuật toán dừng và kết quả phân nhóm như sau:
Trang 13D 5 4 2
III Đánh giá
1 Ưu điểm
Thuật toán K-Means có ưu điểm là đơn giản, dễ hiểu và cài đặt
Độ phức tạp O(K.N.l) với l: là số lần lặp
Có khả năng mở rộng, dễ dàng sửa đổi với những dữ liệu mới
Bảo đảm hội tụ sau 1 số bước lặp hữu hạn
Luôn có K cụm dữ liệu
Luôn có ít nhất một điểm dữ liệu trong ột cụm dữ liệu
Các cụm không phân cấp và không bị chồng chéo dữ liệu lên nhau
Mọi thành viên của một cụm là gần với cụm đó hơn bất cứ một cụm nào khác
2 Khuyết điểm
Không có khả năng tìm ra các cụm không lồi hoặc các cụm có hình dạng phức tạp
Khó khăn trong việc xác định các trọng tâm cụm ban đầu:
- Chọn ngẫu nhiên các trung tâm cụm lúc khởi tạo
- Độ hội tụ của thuật toán phụ thuộc vào việc khởi tạo các vector trung tâm cụm
Trang 14 Khó để chọn ra được số lượng cụm tối ưu ngay từ đầu, mà phải qua nhiều lần thử để tìm ra được số lượng cụm tối ưu
Rất nhạy cảm với nhiễu và các phần tử ngoại lai trong dữ liệu
Không phải lúc nào mỗi đối tượng cũng chỉ thuộc về một cụm, chỉ phù hợp với đường biên giữa các cụm rõ
Chi phí cho thực hiện vòng lặp tính toán khoảng cách lớn khi số cụm K và
dữ liệu phân cụm lớn
VI Các biến thể và cải tiến của K_means:
Các biến thể của k_means khác nhau ở:
- Chiến lược chọn k trọng tâm đầu tiên
- Phương pháp tính độ phân biệt
- Phương pháp tính trọng tâm trong cụm
Một số biếm thể tiêu biếu của k_means:
1 Thuật toán k-medoids:
Tương tự thuật toán K-mean
Mỗi cụm được đại diện bởi một trong các đối tượng của cụm
Chọn đối tượng ở gần tâm cụm nhất làm đại diện cho cụm đó
K-medoid khắc phục được nhiễu, nhưng độ phức tạp lớn hơn
2 Thuật toán fuzzy c-means:
Chung chiến lược phân cụm với K-mean
Nếu K-mean là phân cụm dữ liệu cứng (1 điểm dữ liệu chỉ thuộc về 1 cụm) thì FCM là phân cụm dữ liệu mờ (1 điểm dữ liệu có thể thuộc về nhiều hơn 1 cụm với 1 xác suất nhất định)
Thêm yếu tố quan hệ giữa các phần tử và các cụm dữ liệu thông qua các trọng số trong ma trận biểu biễn bậc của các thành viên với 1 cụm
Trang 151 2
3
6
FCM khắc phục được các cụm dữ liệu chồng nhau trên các tập
dữ liệu có kích thước lớn hơn, nhiều chiều và nhiều nhiễu, song vẫn nhạy cảm với nhiễu và các phần tử ngoại lai
V Hướng dẫn sử dụng phần mềm:
Các chức năng của từng vùng:
Trang 161- Chọn đường dẫn để nhập dữ liệu cần gom nhóm.
2- Tiến hành nhập dữ liệu
3- Hiển thị dữ liệu trên lưới
4- Số cụm cần gom nhóm
5- Tiến hành gom nhóm dữ liệu trên lưới
6- Hiển thị kết quả gom nhóm
Dữ liệu nhập có định dạng như sau :
Phần thông tin :
@relation <Tên dữ liệu><\n>
@attribute object<\n> : tên loại đối tượng
@attribute<Tên thuộc tính><\n>
@data<\n> : bắt đầu phần dữ liệu Phần dữ liệu:
<Tên loại đối tượng>,<Thuộc tính 1>,<Thuộc tính 2>,… , <Thuộc tính n><\n>;
Ví dụ mẫu dữ liệu gom nhóm :
@relation drug
@attribute object
@attribute property1
@attribute property2
@data
A,1,1
B,2,1
C,4,3
D,5,4
Trang 17Tài liệu tham khảo
[1] “Giáo trình Khai Thác Dữ Liệu” TS Đỗ Phúc, nxb Đại học quốc gia TP Hồ
Chí Minh
[2] Slide bài giảng Khai phá dữ liệu, TS Đỗ Phúc, trường Đại học Công nghệ Thông tin, ĐHQG.HCM
[3] http://en.wikipedia.org/wiki/K-means_clustering
[4] http://www.codeproject.com
…