Find Clustering Page 1 LỜI CẢM ƠN Nội dung của đồ án nhóm tìm thuật toán gom cụm.. Và để hoàn thành đồ án này, ngoài nổ lực của cả nhóm còn có sự giúp đỡ rất lớn từ PGS.TS Đỗ Phúc và cô
Trang 1Find Clustering Page 0
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BỘ MÔN KHOA HỌC VÀ KỸ THUẬT THÔNG TIN
BÁO CÁO MÔN HỌC PHÂN TÍCH MẠNG XÃ HỘI Nhóm 2: TÌM CLUSTER TRONG ỨNG DỤNG UIT_SNA
Giảng viên hướng dẫn: PGS TS Đỗ Phúc ThS Nguyễn Thị Anh Thư
Sinh viên thực hiện:
2 Trần Đăng Khoa 13520398 3 Lương Trung Nghĩa 13520545 4 Nguyễn Ngọc Sơn 13520705
Lớp: IS353.G12
Khóa: 08
TP Hồ Chí Minh, tháng 12 năm 2015
Trang 2Find Clustering Page 1
LỜI CẢM ƠN
Nội dung của đồ án nhóm tìm thuật toán gom cụm Do thời gian cũng như vốn tài liệu ít , khả năng tiếng anh còn kém , kiến thức hiểu biết và khả năng viết code của nhóm có hạn nên còn nhiều thiếu sót Và để hoàn thành đồ án này, ngoài nổ lực của cả nhóm còn có sự giúp đỡ rất lớn từ PGS.TS Đỗ Phúc và cô Nguyễn Th nh Thư , người truyền đạt ý tưởng và những vấn đề quan trọng về thuật toán K-Means Chúng em xin chân thành cảm ơn
Ngoài ra, nhóm xin cảm ơn các nhóm khác hỗ trợ giúp nhóm trong đồ án này
UIT, tháng 12 năm 2015
Trang 3Find Clustering Page 2 MỤC LỤC
LỜI CẢM ƠN 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 3
1 Clustering 3
2 Đinh nghĩa thuật toán K-Means 3
3 Các biến thể của thuật toán K-Means 4
3.1 Thuận toán K-Medoid 4
3.2 Thuật toán Fuzzy C-Means 4
4 Ứng dụng 4
CHƯƠNG 2: HIỆN THỰC CHƯƠNG TRÌNH 5
1 Cấu trúc dữ liệu 5
2 Các chức năng 6
CHƯƠNG 3: THỬ NGHIỆM Kết luận, hướng phát triển 8
CHƯƠNG 4: KẾT LUẬN VÀ ĐỀ XUẤT HƯỚNG PHÁT TRIỂN 10
Tài liệu tham khảo 11
Trang 4Find Clustering Page 3
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
2 Đinh nghĩa thuật toán K-Means
- 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
Trang 5Find Clustering Page 4
3 Các biến thể của thuật toán K-Means3.1 Thuận toán K-Medoid
- Thuật toán K-Medoid tương tự thuật toán K-Means, mỗi cụm được đại diện bởi một trong số các đối tượng của cụm Thông thường thì điểm gần vector trọng tâm sẽ được chọn làm đại diện của cụm
- Thuật toán K-Medoid khắc phục được yếu điểm là loại được nhiễu trong thuật toán K-Means Nhưng bù lại độ phức tạp trong thuật toán lại rất lớn
3.2 Thuật toán Fuzzy C-Means
- Thuật toán Fuzzy C-Means có chiến lược phân cụm giống như K-Means Nhưng có một điểm khác biệt là K-Means phân cụm dữ liệu cứng (một đối tượng có thể thuộc nhiều cụm khác nhau)
- Fuzzy C-Means có khả năng phân cụm trong không gian đa chiều và có khả năng phân cụm tối ưu toàn cục Tuy nhiên thuật toán này khá phức tạp và tốc độ hội tụ phụ thuộc vào trạng thái ban đầu của ma trận thành viên
4 Ứng dụng
Phân cụm tài liệu web 1 Tìm kiếm và trích rút tài liệu 2 Tiền xử lý tài liệu: Quá trình tách từ và vecto hóa tài liệu: tìm kiếm và thay
thế các từ bới chỉ số của từ đó trong từ điển.Biểu diễn dữ liệu dưới dạng vectơ
3 Áp dụng K-Mean Kết quả trả về là các cụm tài liệu và các trọng tâm tương ứng Phân đoạn ảnh: là từ một ảnh đầu vào, thông qua các thuật toán phân cụm mà
tách thành các vùng miền khác nhau và các đối tượng được tách ra đó được gọi là ảnh con
Trang 6Find Clustering Page 5
CHƯƠNG 2: HIỆN THỰC CHƯƠNG TRÌNH
1 Cấu trúc dữ liệu.
Cấu trúc dữ liệu của chương trình này sử dụng mảng hai chiều để lưu trữ dữ liệu Vì chương trình này chỉ sử lý được các đồ th nhỏ nên việc sử dụng mảng dễ dàng hơn
- Thuật toán K-Means gồm các bước cơ bản sau:
Bước 1: Khởi tạo
Chọn k đối tượng mj (j=1, ,k) là trọng tâm ban đầu của k cụm từ tập dữ
liệu (việc lựa chọn này có thể là ngẫu nhiên hoặc theo kinh nghiệm) Bước 2: Tính toán khoảng cách
Đối với mỗi đối tượng Xi (1 i n) , tính toán khoảng cách từ nó tới mỗi trọng tâm mj với j=1, ,k, sau đó tìm trọng tâm gần nhất đối với mỗi đối
tượng Bước 3: Cập nhật lại trọng tâm
Đối với mỗi j=1, ,k, cập nhật trọng tâm cụm mj bằng cách xác đ nh trung
bình cộng của các vector đối tượng dữ liệu Bước 4: Điều kiện dừng
Lặp các bước 2 và 3 cho đến khi các trọng tâm của cụm không thay đổi - Thuật toán K-Means được mô tả như sau:
Trang 7Find Clustering Page 6
Figure 1-Mô tả thuật toán qua lưu đồ
2 Các chức năng.
Chuẩn hóa dữ liệu thô: privatedouble[][] Normalized(double[][] rawData){} Có một số cách để bình thường hóa dữ liệu Bản demo này sử dụng bình thường Gaussian Mỗi v nguyên giá tr trong một cột được chuyển đến một giá tr v’ bằng cách trừ đi trung bình cộng của tất cả các giá tr trong các cột và sau đó chia cho độ lệch chuẩn của các giá tr Giá tr bình thường sẽ gần như luôn luôn được giữa -10 và 10
Khoảng cách Euclide: privatedouble Distance(double[] tuple, double[] mean){}
Khoảng cách Euclide giữa hai vectơ là căn bậc hai của tổng các chênh lệch bình phương giữa các giá tr thành phần tương ứng
Ví dụ, giả sử một số dữ liệu tuple d0 = {68, 140} và ba phương tiện chùm là c0 = {66.0, 120.0}, {c1 = 69,0, 160,0}, và c2 = {70.0, 130.0} Khoảng cách giữa d0 và c0 = sqrt ((68-66,0) ^ 2 + (140-120,0) ^ 2) = 20,10 Khoảng cách giữa d0 và c1 = sqrt ((68-69,0) ^ 2 + (140-160,0) ^ 2) = 20,22 Và khoảng cách giữa d0 và c2 = sqrt ((68-70,0) ^ 2
Trang 8Find Clustering Page 7 + (140-130,0) ^ 2) = 10.20 Các tuple dữ liệu là gần nhất để có nghĩa là c2, và do đó sẽ được gán cho cụm 2
Trang 9Find Clustering Page 8
CHƯƠNG 3: THỬ NGHIỆM
1 Open file
Figure 2: Mở file
Trang 10Find Clustering Page 9
2 Find clustering
Figure 3: Find clustering
Trang 11Find Clustering Page 10
CHƯƠNG 4: KẾT LUẬN VÀ ĐỀ XUẤT HƯỚNG PHÁT TRIỂN
2 Hướng phát triển
- Vấn đề đầu tiên là về đồ th lớn Để giải quyết vấn đề này nhóm có cách giải quyết là dùng thuật toán Clique Percolation Method (viết tắt là CPM) để gom cụm trên đồ th lớn (> 1000 đỉnh) Phần tài liệu liên quan đến thuật toán CPM nhóm đặt trong tập tin “k-cliques.zip”
- Vấn đề thứ hai là về việc hiển th dữ liệu để gây ấn tượng với người dùng Các đỉnh chung nhóm có chung đặc trưng với nhau thì set màu giống nhau, các đỉnh khác nhóm thì set màu khác nhau
Trang 12Find Clustering Page 11
Tài liệu tham khảo
1 https://en.wikipedia.org/wiki/K-means_clustering 2 https://visualstudiomagazine.com/Articles/2013/12/01/K-Means-Data-
Clustering-Using-C.aspx?Page=1 3 http://www.alglib.net/dataanalysis/clustering.php
4 http://www.codeding.com/articles/k-means-algorithm