Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 70 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
70
Dung lượng
492,53 KB
Nội dung
1 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VŨ NGỌC THANH PHÂN CỤM DỮ LIỆU DỰA TRÊN MẬT ĐỘ VÀ ỨNG DỤNG Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60 48 01 01 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN – 2016 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VŨ NGỌC THANH Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn PHÂN CỤM DỮ LIỆU DỰA TRÊN MẬT ĐỘ VÀ ỨNG DỤNG Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60 48 01 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học TS NGUYỄN HUY ĐỨC Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn THÁI NGUYÊN – 2016 LỜI CÁM ƠN Để hoàn thành luận văn này, trước hết em xin gửi lời cảm ơn sâu sắc tới TS Nguyễn Huy Đức, tận tình hướng dẫn, bảo, định hướng, đóng góp ý kiến quý báu suốt trình em thực luận văn Em xin chân thành cảm ơn thầy, cô giáo trường Đại học Công nghệ thông tin Truyền thông Thái Nguyên tạo điều kiện tốt để em hồn thành khóa học Đồng thời, em xin cảm ơn gia đình, bạn bè, người ln khuyến khích giúp đỡ tơi hồn cảnh khó khăn Tôi xin cảm ơn quan đồng nghiệp tạo điều kiện cho suốt trình học tập làm luận văn Thái Nguyên, ngày 17 tháng 09 năm 2016 Học viên Vũ Ngọc Thanh Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn MỤC LỤC MỤC LỤC .1 DANH MỤC HÌNH ẢNH DANH MỤC TỪ VIẾT TẮT MỞ ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ PHÂN CỤM DỮ LIỆU 11 1.1 Tổng quan khai phá liệu 11 1.1.1 Khái niệm 11 1.1.2 Tiến trình khai phá liệu 12 1.1.3 Các mơ hình khai phá liệu 14 1.1.4 Các hướng tiếp cận kỹ thuật sử dụng khai phá liệu 15 1.1.5 Các dạng liệu khai phá 16 1.1.6 Các ứng dụng khai phá liệu .17 1.2 Tổng quan phân cụm liệu 19 1.2.1 Khái niệm 19 1.2.2 Các mục tiêu phân cụm liệu 20 1.2.3 Các ứng dụng phân cụm liệu 22 1.2.4 Các yêu cầu phân cụm liệu 23 1.2.5 Những vấn đề tồn phân cụm liệu 26 1.2.6 Một số khái niệm cần thiết tiếp cận phân cụm liệu 26 1.2.7 Những kỹ thuật tiếp cận phân cụm liệu 31 CHƯƠNG 2: PHÂN CỤM DỮ LIỆU DỰA TRÊN MẬT ĐỘ .37 2.1 Giới thiệu 37 2.2 Thuật toán DBSCAN 38 2.3 Thuật toán DBRS .49 2.4 Thuật toán OPTICS 55 2.5 Thuật toán DENCLUDE 56 CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH THỰC NGHIỆM 60 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 3.1 3.2 3.3 3.4 KẾT LUẬN TÀI LIỆU THAM KHẢO PHỤ LỤC Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn DANH MỤC HÌNH ẢNH Hình 1.1: Tiến trình khám phá tri thức từ sở liệu Hình 1.2: Kiến trúc điển hình hệ khai phá liệu Hình 1.3: Ví dụ phân cụm liệu Hình 1.4: Ví dụ phân cụm ngơi nhà dựa khoảng cách Hình 1.5: Ví dụ phân cụm ngơi nhà dựa kích cỡ Hình 2.1: Ví dụ đối tượng nòng cốt, đối tượng biên đối tượng nhiễu Hình 2.2: Ví dụ mật độ đạt trực tiếp Hình 2.3: Ví dụ mật độ đạt Hình 2.4: Ví dụ mật độ liên thơng Hình 2.5: Minh họa đồ thị khoảng cách 4-dist xếp CSDL Hình 2.6: Kết thực nghiệm đánh giá thời gian thực thuật tốn (tính theo giây) thuật tốn nhóm tác giả Hình 2.7: Các cụm phát CLARANS (a) DBSCAN (b) Hình 2.8: Các cụm phát DBRS(a), DBSCAN(b), K-Means(c), CLARANS(d) Hình 2.9: Sắp xếp cụm OPTICS phụ thuộc vào ɛ Hình 2.10: DENCLUE với hàm phân phối Gaussian Hình 3.1: Kết qua sau phân cụm chương trình thực nghiệm Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn DANH MỤC TỪ VIẾT TẮT Từ cụm từ Cơ sở liệu Khai phá tri thức sở liệu Khai phá tri thức Khai phá liệu Phân cụm liệu Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn MỞ ĐẦU Trong vài thập niên gần đây, với thay đổi phát triển không ngừng ngành công nghệ thông tin nói chung ngành cơng nghệ phần cứng, phần mềm, truyền thông hệ thống liệu phục vụ lãnh vực kinh tế - xã hội nói riêng Thì việc thu thập thơng tin nhu cầu lưu trữ thông tin ngày lớn Bên cạnh việc tin học hóa cách ạt nhanh chóng hoạt động sản xuất, kinh doanh nhiều lĩnh vực hoạt động khác tạo cho lượng liệu lưu trữ khổng lồ Hàng triệu sở liệu sử dụng hoạt động sản xuất, kinh doanh, quản lí có nhiều sở liệu cực lớn cỡ Gigabyte, chí Terabyte Sự bùng nổ dẫn tới yêu cầu cấp thiết cần có kĩ thuật công cụ để tự động chuyển đổi lượng liệu khổng lồ thành tri thức có ích Từ đó, kĩ thuật khai phá liệu trở thành lĩnh vực thời công nghệ thông tin giới Một vấn đề đặt phải trích chọn thơng tin có ý nghĩa từ tập liệu lớn để từ giải yêu cầu thực tế trợ giúp định, dự đoán,… khai phá liệu (Data mining) đời nhằm giải yêu cầu Ngay từ ngày đầu xuất hiện, Data mining trở thành xu hướng nghiên cứu phổ biến lĩnh vực học máy tính cơng nghệ tri thức Nhiều thành tựu nghiên cứu Data mining áp dụng thực tế Data mining có nhiều hướng quan trọng hướng phân cụm liệu (Data Clustering) Phân cụm liệu q trính tìm kiếm để phân cụm liệu, mẫu liệu từ tập Cơ sở liệu lớn Phân cụm liệu phương pháp học khơng giám sát Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 10 Phân cụm liệu kỹ thuật để khai thác liệu có hiệu Phân cụm liệu ứng dụng nhiều lĩnh vực khác nhau: kinh tế, bảo hiểm, quy hoạch đô thị, nghiên cứu địa chấn v.v… Có nhiều kỹ thuật tiếp cận phân cụm liệu, tùy thuộc vào tốn thực tế mà chọn phương pháp cho phù hợp Trong luận văn em xin trình bày nghiên cứu thân phương pháp “Phân cụm liệu dựa mật độ ứng dụng” Bố cục luận văn sau: Ngồi phần mở đầu, mục lục, danh mục hình ảnh, kết luận, tài liệu tham khảo, phụ lục Luận văn chia phần chính: Phần 1: Tổng quan khai phá liêu phân cụm liệu Phần giới thiệu khái niệm khai phá liệu phân cụm liệu Các phương pháp, lãnh vực hướng tiếp cận phân cụm liệu Phần 2: Phương pháp phân cụm liệu dựa mật độ Phần trình bày chi tiết phương pháp phân cụm liệu dựa mật độ thuật toán tiêu biểu phương pháp Phần 3: Xây dựng chương trình thực nghiệm Xây dựng chương trình thực nghiệm phân cụm liệu dựa mật độ với giải thuật DBSCAN Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 56 Việc xếp thứ tự xác định hai thuộc tính riêng điểm liệu khoảng cách nhân khoảng cách liên lạc Các phép đo kích thước mà có liên quan đến q trình thuật tốn DBSCAN, nhiên, chúng sử dụng đế xác định thứ tự điếm liệu xếp Thứ tự dựa sở điếm liệu mà có khoảng cách nhân nhỏ tăng dần độ lớn Điều phương pháp người sử dụng xác định giá trị MinPts phù hợp Hình 2.9: Sắp xếp cụm OPTICS phụ thuộc vào ɛ Thuật tốn phân cụm đối tượng cho với tham số đầu vào ɛ MinPts, cho phép người sử dụng tùy ý lựa chọn giá trị tham số mà dẫn đến khám phá cụm chấp nhận Các thiết lập tham số thường dựa theo kinh nghiệm tập hợp khó xác định, đặc biệt với tập liệu đa chiều Tuy nhiên, có độ phức tạp thời gian thực DBSCAN có cấu trúc tương đương với DBSCAN: O(nlogn) với n kích thước tập liệu Thứ tự cụm tập liệu biếu diễn đồ thị, minh họa hình sau, thấy ba cụm, giá trị ɛ định số cụm 2.5 Thuật toán DENCLUDE Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 57 DENCLUDE (Density – base Clustering) Hinneburg Keim vào năm 1998 đưa cách tiếp cận khác với thuật toán phân cụm dựa mật độ trước đó, cách tiếp cận xem xét mơ hình sử dụng cơng thức tốn để mơ tả điểm liệu ảnh hưởng mơ gọi hàm ảnh hưởng xem hàm mà mô tả ảnh hưởng điểm liệu với đối tượng lân cận Ví dụ hàm ảnh hưởng hàm Parabolic, hàm sóng ngang, hàm Gaussian Như vậy, DENCLUDE phương pháp dựa tập hàm phân bổ mật độ xây dựng ý tưởng sau : Ảnh hưởng điểm liệu hình thức mơ hình sử dụng hàm tính tốn, gọi hàm ảnh hưởng, mô tả tác động điếm liệu với đối tượng lân cận Mật độ tồn cục khơng gian liệu mơ hình phân tích tổng hàm ảnh hưởng tất điếm liệu Các cụm xác định xác việc xác định mật độ cao (density attractors), mật độ cao điếm cực đại hàm mật độ toàn cục Sử dụng ô lưới không giữ thông tin lưới mà thực tế cịn chứa đựng điểm liệu Nó quản lý ô cấu trúc truy cập dựa nhanh so với số thuật tốn có ảnh hưởng DBSCAN Tuy nhiên, phương pháp đòi hỏi chọn lựa kỹ lưỡng tham biến mật độ ngưỡng nhiễu, việc chọn lựa tham số quan trọng ảnh hưởng tới chất lượng kết phân cụm Định nghĩa : Cho x, y hai đối tượng không gian d chiều ký hiệu Fd Hàm ảnh hưởng đối tượng y ϵ Fd lên đối tượng x hàm fBy : Fd → R0+ : f y (X) = f f b B Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 58 định khoảng cách hai véctơ d(x, y) khơng gian d chiều, ví dụ khoảng cách Euclide Hàm khoảng cách có tính chất phản xạ đối xứng Ví dụ hàm ảnh hưởng sau: • Hàm ảnh hưởng sóng ngang : ngưỡng Hàm ảnh hưởng Gaussian : f square (x, y) = e • d Mặt khác, hàm mật độ điểm x ϵ F định nghĩa tổng hàm ảnh hưởng tất điếm liệu Cho n đối tượng liệu mô tả d tập véctơ D = {xi, x2, , xn} ϵ F hàm mật độ định nghĩa n D FBx (i) (x) sau: FB (x) =i ∑ =1 Hàm mật độ thành lập dựa ảnh hưởng Gaussian xác định sau: F Gauss D i =1 Ví dụ kết phân cụm liệu thuật toán DENCLUE với hàm chi phối Gausian biểu diễn sau Các cực đại mật độ giá trị đỉnh đồ thị Một cụm cho cực đại mật độ x * tập C, hàm mật độ x* không bé δ Hình 2.10: DENCLUE với hàm phân phối Gaussian Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 59 DENCLUE phụ thuộc nhiều vào ngưỡng nhiễu tham số mật độ DENCLUE có lợi so sánh với thuật toán phân cụm khác sau : Có sở tốn học vững tổng quát hóa phương pháp phân cụm khác, bao gồm phương pháp phân cấp, dựa phân hoạch Có đặc tính phân cụm tốt cho tập liệu với số lượng lớn nhiễu Cho phép cụm có hình dạng tập liệu đa chiều mô tả cơng thức tốn Độ phức tạp tính tốn DENCLUDE O(nlogn) Các thuật tốn dựa mật độ khơng thực kỹ thuật phân mẫu tập liệu thuật tốn phân cụm phân hoạch, điều làm tăng thêm độ phức tạp có khác mật độ đối tượng mẫu với mật độ toàn liệu Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 60 CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH THỰC NGHIỆM Trong chương xây dựng chương trình thực nghiệm để áp dụng phương pháp phân cụm liệu dựa mật độ thuật toán DBSCAN với ý tưởng tốn thực tế phân nhóm điểm phát sóng viễn thơng khu vực Do kiến thức thời gian hạn chế nên khuân khổ luận văn em xây dựng chương trình thực nghiệm với tính chất mơ phỏng, nên chương trình chưa có khả áp dụng vào thực tế Rất mong nhận đóng góp ý kiến thầy để em phát triển hồn thiện chương trình đưa vào áp dụng thực tế 3.1 Ý tưởng toán Do nhu cầu nâng cao chất lượng dịch vụ viễn thông nên việc lắp đặt thêm trạm phát sóng địa bàn địa phương ngày tăng Để đảm bảo việc theo dõi quản lý tốt nên phân điểm lắp đặt trạm phát thành nhóm nhỏ để tiện cho việc phân cơng theo dõi, vận hành, bào trì, khai thác sử dụng 3.2 Nguồn liệu đầu vào Giả sử ta có tọa độ vị trí lắp đặt trạm phát sóng viễn thơng khu vực Dựa vào tọa độ ta mơ vị trí thành điểm hệ thống đồ chương trình Như vậy, liệu đầu vào sử dụng toán chủ yếu lớp thông tin dạng điểm, phạm vi khu vực đồ 3.3 Phương pháp giải toán Lựa chọn phương pháp phân cụm: Với đặc điểm liệu đầu vào ta lựa chọn phương pháp phân cụm dựa mật độ bởi: Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 61 - Đối tượng liệu cần phân cụm chủ yếu điểm, tức đối tượng dạng điểm Kiểu phù hợp với phương pháp tiếp cận dựa mật độ - Không cần thiết phải biết trước số cụm sau phân cụm có được, khơng sử dụng tiếp cận phân hoạch - Khơng cần lưu trữ thông tin mức trung gian q trình phân cụm, khơng sử dụng tiếp cận theo lưới Lựa chọn độ đo sử dụng phân cụm: Chúng ta quan tâm đến tính liên tục mặt không gian điểm cụm khoảng cách điểm không quan tâm đến hướng chúng Hơn với đối tượng dạng điểm, quan hệ topology mang ý nghĩa ngoại trừ đối tượng mang thông tin mạng lưới liên thông như: mạng lưới cột điện, mạng lưới cấp nước…Do ta sử dụng độ đo khoảng cách toán phân cụm đề (các độ đo đề cập mục 1.2.6.2, chương 1) 3.4 Kết thực nghiệm Giả sử ta có liệu mẫu nhập vào 60 điểm hệ thống đồ chương trình, sau chạy thuật toán DBSCAN để phân cụm điểm với Eps = 37 & MinPts = ta thu cụm tương ứng với màu khác thể đồ Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 62 Hình 3.1: Kết qua sau phân cụm chương trình thực nghiệm Tổng có [60] điểm: (218, 192) (251, 197) (237, 215) (242, 249) (278, 275) (268, 233) (297, 212) (307, 254) (366, 267) (358, 220) (399, 209) (421, 181) (412, 139) (430, 118) (472, 124) (482, 90) (502, 77) (528, 114) (570, 151) (601, 193) (618, 235) (575, 266) (559, 220) (576, 187) (527, 180) (515, 148) (481, 206) (507, 238) (524, 271) (543, 312) (549, 360) (524, 382) (466, 364) (412, 368) (380, 344) (410, 308) (415, 261) (427, 255) (455, 319) (496, 354) (528, 352) (488, 290) (481, 270) (470, 244) (461, 220) (469, 162) (333, 233) (419, 339) (395, 246) (596, 226) (526, 297) (427, 325) (589, 241) (408, 117) (436, 143) (403, 92) (482, 188) (405, 336) (441, 345) (476, 105) Cụm [1] chứa [6] điểm: (218, 192) (251, 197) (237, 215) (242, 249) (268, 233) (297, 212) Cụm [2] chứa [4] điểm: (278, 275) (307, 254) (358, 220) (333, 233) Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 63 Cụm [3] chứa [6] điểm: (366, 267) (399, 209) (421, 181) (415, 261) (427, 255) (395, 246) Cụm [4] chứa [5] điểm: (412, 139) (430, 118) (408, 117) (436, 143) (403, 92) Cụm [5] chứa [4] điểm: (472, 124) (482, 90) (502, 77) (476, 105) Cụm [6] chứa [8] điểm: (570, 151) (601, 193) (618, 235) (575, 266) (559, 220) (576, 187) (596, 226) (589, 241) Cụm [7] chứa [3] điểm: (528, 114) (527, 180) (515, 148) Cụm [8] chứa [11] điểm: (481, 206) (507, 238) (524, 271) (543, 312) (488, 290) (481, 270) (470, 244) (461, 220) (469, 162) (526, 297) (482, 188) Cụm [9] chứa [13] điểm: (549, 360) (524, 382) (466, 364) (412, 368) (380, 344) (410, 308) (455, 319) (496, 354) (528, 352) (419, 339) (427, 325) (405, 336) (441, 345) Khơng có điểm thuộc đối tượng nhiễu Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 64 KẾT LUẬN Những kết luận văn Luận văn tìm hiểu toán phân cụm liệu sâu tìm hiểu phân cụm liệu dựa mật độ Luận văn đạt kết là: - Nghiên cứu tổng quan khai phá liệu phân cụm liệu Các phương pháp, lĩnh vực hướng tiếp cận phân cụm liệu - Nghiên cứu chi tiết phương pháp phân cụm liệu dựa mật độ thuật toán liên quan Tìm hiêu sâu thuật tốn DBSCAN qua đánh giá so sánh - Xây dựng chương trình thực nghiệm áp dụng phương pháp phân cụm liệu dựa mật độ thuật toán DBSCAN với toán thực tế phân nhóm trạm phát sóng viễn thơng khu vực Ý nghĩa khoa học luận văn: Qua trình thực nghiệm nghiên cứu lý thuyết đưa số kết luận sau: - Mỗi giải thuật phân cụm áp dụng cho số mục tiêu kiểu liệu định - Mỗi giải thuật có mức độ xác riêng khả thực kích thước liệu khác Điều cịn tuỳ thuộc vào cách thức tổ chức liệu nhớ chính, nhớ ngồi giải thuật - Khai phá liệu hiệu bước tiền xử lý, lựa chọn thuộc tính, mơ hình giải tốt Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 65 Hướng nghiên cứu tiếp theo: - Hướng nghiên cứu luận văn mở rộng sang lớp liệu không gian, sử dụng khai phá liệu liên quan đến đối tượng địa lý - Vấn đề phân cụm liệu đa chiều thử nghiệm để so sánh với phương pháp phân cụm đơn chiều kết hợp với phân tích đa chiều liệu không gian - Một số ràng buộc trọng số đưa vào tốn để khai phá liệu cách mềm dẻo linh hoạt điều kiện cụ thể toán - Phương pháp tiếp cận sử dụng phân cụm mờ thử nghiệm tính tương đối cố hữu áp dụng với toán tối ưu Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 66 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Nguyễn Hoàng Tú Anh,“Khai thác liệu ứng dụng”, Giáo trình , Đại học KHTN Tp Hồ Chí Minh,2009 [2] Vũ Lan Phương, “Nghiên cứu cài đặt số giải thuật phân cụm phân lớp”, Luận văn thạc sĩ, Đại học Bách khoa Hà Nội, 2006 Tiếng Anh [3] Ester, M., Kriegel, H.-P., Sander, J., & Xu, X (1996), “A density-based algorithm for discovering clusters in large spatial databases with noise”, Second Int Conf on Knowledge Discovery and Data Mining , (pp 226-231) Portland, Oregon [4] Jiawei Han, Micheline Kamber, Data Mining: Concepts and techniques, Second Edition, Elsevier Inc, 2011 [5] M.Fayyad, Gregory Piatetsky-Shapiro, Padhraic Smyth, and Ramasamy Uthurusamy, Advances in Knowledge Discovery and Data Mining, AAAI Press/ The MIT Press,1996 [6] Oracle, Oracle Data Mining Concepts 10g Release (10.1), Oracle Corporation, 2003 [7] P Berkhin, Survey of Clustering Data Mining Techniques, Research paper Accrue Software, Inc, http://www.accrue.com, 2009 [8] http://home.deib.polimi.it/matteucc/Clustering/tutorial_html/index.html [9] https://en.wikipedia.org/wiki/Cluster_analysis [10] https://en.wikipedia.org/wiki/DBSCAN Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 67 PHỤ LỤC using using using using Mã code chương trình: System; System.Collections.Generic; System.Linq; System.Text; namespace DBSCAN_GUI { public class Algoritam { public const int NOISE = -1; public const int UNCLASSIFIED = 0; public List D = new List(); public double eps; public int MinPts; public List klasteri; public String text; public void dodajTocku(int x, int y) { D.Add(new Tocka(x, y)); } public int dist(Tocka p, Tocka q) { return (int)Math.Sqrt(Math.Pow(q.X - p.X, 2) + Math.Pow(q.Y - p.Y, 2)); } public void pokreniAlgoritam(List D) { klasteri = DBSCAN(D, eps, MinPts); text += "Tổng có [" + D.Count + "] điểm:\n"; foreach (Tocka p in D) text += p; int total = 0; for (int i = 0; i < klasteri.Count; i++) { int count = klasteri[i].Count; total += count; Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 68 text += "\n\nCụm [" + (i + 1) + "] chứa [" + count + "] điểm:\n"; foreach (Tocka p in klasteri[i]) text += p; } total = D.Count - total; if (total > 0) { text += "\n\nCó [" + total + "] điểm không thuộc cụm nào:\n"; } else { foreach (Tocka p in D) { if (p.C == NOISE) text += p; } text += "\n\nNo points that represent noise.\n"; } } public List DBSCAN(List D, double eps, int MinPts) { if (D == null) return null; List klasteri = new List(); int C = 1; for (int i = 0; i < D.Count; i++) { Tocka p = D[i]; if (p.C == UNCLASSIFIED) if (expandCluster(D, p, C, eps, MinPts)) C++; } int total = D.OrderBy(p => p.C).Last().C; if (total < 1) return klasteri; for (int i = 0; i < total; i++) klasteri.Add(new List()); foreach (Tocka p in D) { Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 69 if (p.C > UNCLASSIFIED) klasteri[p.C - 1].Add(p); } return klasteri; } public bool expandCluster(List NeighborPts, Tocka p, int C, double eps, int MinPts) { List seeds = regionQuery(NeighborPts, p, eps); if (seeds.Count < MinPts) { p.C = NOISE; return false; } else { for (int i = 0; i < seeds.Count; i++) seeds[i].C = C; seeds.Remove(p); while (seeds.Count > 0) { Tocka currentP = seeds[0]; List result = regionQuery(NeighborPts, currentP, eps); if (result.Count >= MinPts) { for (int i = 0; i < result.Count; i++) { Tocka resultP = result[i]; if (resultP.C == UNCLASSIFIED || resultP.C == NOISE) { if (resultP.C == UNCLASSIFIED) seeds.Add(resultP); resultP.C = C; } } } seeds.Remove(currentP); } return true; } } public List regionQuery(List D, Tocka p, double eps) Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 70 { List okolina = new List(); for (int i = 0; i < D.Count; i++) { if (dist(p, D[i])