Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 170 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
170
Dung lượng
1,55 MB
Nội dung
SỞ GIÁO DỤC VÀ ĐÀO TẠO HÀ TÂY TRƯỜNG THPT PHÚ XUYÊN B GIÁO ÁN TIN HỌC LỚP 11 Năm học 2007-2008 Biên soạn: Trần Nguyên Hương -1- Mục lục Mục lục DANH SÁCH HÌNH VẼ BẢNG TỪ VIẾT TẮT TỪ KHOÁ LỜI CẢM ƠN MỞ ĐẦU Chƣơng TỔNG QUAN VỀ PHÂN CỤM TRONG KHAI PHÁ DỮ LIỆU VÀ CÁC KHÁI NIỆM CƠ BẢN 1.1.Giới thiệu chung 1.2.Khai phá liệu gì? 1.3.Qúa trình khai phá tri thức sở li 1.4.Các kỹ thuật áp dụng khai phá liệu 1.4.1 Các kỹ thuật tiếp cận khai phá liệu 1.4.2 Các dạng liệu khai phá 1.5.Ứng dụng khai phá liệu 1.6.Phân cụm liệu ứng dụng 1.6.1 Mục đích phân cụm liệu 1.6.2 Các bước để phân cụm 1.6.3 Các loại đặc trưng 1.6.4 Các ứng dụng phân cụm 1.6.5 Phân loại thuật toán phân cụm 1.7.Các khái niệm định nghĩa 1.7.1 Các định nghĩa phân cụm 1.7.2 Các độ đo gần gũi Chƣơng CÁC THUẬT TOÁN PHÂN CỤM TUẦN TỰ 2.1.Số cách phân cụm 2.2.Thuật toán phân cụm - BSAS 2.3.Ƣớc lƣợng số cụm 2.4.Sửa đổi thuật toán BSAS - Thuật toán MBSA 2.5.Thuật toán phân cụm hai ngƣỡng - T 2.6.Giai đoạn tinh chế -2- Chƣơng CÁC THUẬT TOÁN PHÂN CỤM PHÂN CẤP 3.1.Giới thiệu 3.2.Các thuật tốn tích tụ - GAS 3.2.1 Một số định nghĩa 3.2.2 Một số thuật tốn tích tụ dựa lý thuyết ma trận 3.2.3 Monotonicity Crossover 3.2.4 Một sơ thuật tốn tích tụ dựa lý thuyết đồ thị 3.2.5 Ảnh hưởng ma trận gần gũi tới sơ đồ phân cụm 3.3.Các thuật toán phân rã - GDS 3.3.1 Cải tiến sơ đồ GDS 3.4.Lựa chọn phân cụm tốt Chƣơng CÁC THUẬT TOÁN PHÂN CỤM QUA TỐI ƢU HỐ 4.1 Tổng quan tối ƣu hố khái niệm 4.1.1 Một số khái niệm giải tích lồi 4.1.2 Các toán tối ưu 4.1.3 Một số phương pháp giải toán tối ưu 4.2 Bài toán phân cụm theo tâm 4.2.1 Phân cụm qua quy hoạch toán học 4.2.2 Phân cụm qua tối ưu hoá d.c Chƣơng PHÂN TÍCH VÀ CÀI ĐẶT THỬ NGHIỆM 5.1 Cài đặt 5.1.1 MBSAS 5.1.2 TTSAS 5.1.3 GAS 5.1.4 GDS 5.2 Mô cụm 5.2.1 Sinh liệu khởi tạo thuật toán 5.3 Kết thử nghiệm 5.3.1 Ảnh hưởng tham số KẾT LUẬN Hƣớng phát triển đề tài TÀI LIỆU DẪN PHỤ LỤC: MÃ NGUỒN CỦA MỘT SỐ THUẬT TOÁN -3- DANH SÁCH HÌNH VẼ Hình 1-1 Các bƣớc thực trình khai phá tri thức Hình 1-2 Các bƣớc trình phân cụm Hình 1-3 Hình dạng loại cụm Hình 1-4 Phân bố vector rời rạc lƣới ℓ - chiều Hình 1-5 Các loại cụm đại diện Hình 2-1 Sự phụ thuộc số cụm đƣợc tạo số cụm lớn đƣợc phép q Hình 2-2 Đồ thị ƣớc lƣợng số cụm Hình 2-3 Minh hoạ phân cụm thuật toán MBSAS (a) thuật toán TTSAS (b) Hình 3-1 Sơ đồ phân cụm phân cấp với tập liệu X ví dụ 3.2 Hình 3-2 Minh hoạ sơ đồ tƣơng tự không tƣơng tự Hình 3-3 Tập liệu X (a) Sơ đồ không tƣơng tự sinh thuật toán liên kết đơn (b), thuật toán liên kết đầy đủ (c) Hình 3-4 Sơ đồ khơng tƣơng tự sinh thuật tốn Liên kết đơn, Liên kết đầy đủ, UPGMC WPGMC với tƣợng crossover Hình 3-5 Minh hoạ đƣờng loại đồ thị Hình 3-6 Các đồ thị ngƣỡng đồ thị gần gũi xây dựng từ ma trận khơng tƣơng tự P(X) ví dụ 3.2 Hình 3-7 Đồ thị với khả liên kết cạnh đỉnh bậc đỉnh Hình 3-8 Các đồ thị ngƣỡng ma trận không tƣơng tự P ví dụ 3.5 Hình 3-9 Đồ thị gần gũi G(13) sinh từ ma trận khơng tƣơng tự P ví dụ 3.6 Hình 3-10 Các sơ đồ phân cụm dùng thuật tốn GTAS thoả thuộc tính h(k) ví dụ 3.6 Hình 3-11 Sơ đồ ngƣỡng ví dụ 3.6 với thuộc tính bậc đỉnh k =3 Hình 3-12 Cây khung nhỏ ma trận không tƣơng tự (a) Sơ đồ khơng tƣơng tự tƣơng ứng áp dụng thuật tốn dựa MST (b) cho ví dụ 3.7 Hình 3-13 Các sơ đồ minh hoạ cho trƣờng hợp ma trận khơng tƣơng tự có hai phần tử ví dụ 3.8 Hình 3-14 Sơ đồ khơng tƣơng tự đạt đƣợc thuật toán liên kết đơn (a) kết đầy đủ (b) với ma trận P1 Hình 3-15 Minh hoạ bƣớc phân cụm sơ đồ GDS Hình 3-16 Sơ đồ trƣờng hợp có hai cụm (a) có cụm (b) tập liệu 80 -4- Hình 4-2 Các đƣờng cong sống sót đại diện cho cụm 194 bệnh nhân ung thƣ áp dụng thuật toán k-Median Hình 4-3 Các đƣờng cong sống sót đại diện cho cụm 194 bệnh nhân ung thƣ áp dụng thuật toán k-Mean Hình 5-1 Quan sát cụm đƣợc tạo Hình 5-2: Màn hình sinh liệu Hình 5-3 Màn hình thiết lập thơng số cho thuật toán Hình 5-4 Ý nghĩa việc chọn tham số đắn Hình 5-5 Ý nghĩa đắn số cụm tạo DANH SÁCH BẢNG BIỂU Bảng 3-1 Các kết thuật toán thảo luận áp dụng ma trận gần gũi ví dụ 3.4 56 Bảng 5-1: Thời gian thực thuật toán với liệu khác 115 -5- BẢNG TỪ VIẾT TẮT Từ cụm từ BLP BSAS CSDL D.C DM GAS GDS GTAS KDD LP MBSAS MST MUAS SM TTSAS UPGMA UPGMC WPGMA WPGMC TỪ KHOÁ Clustering algorithms, Sequential Clustering algorithms, Hierarchical Clustering algorithms, Clustering Algorithms Based on Cost Function Optimization, Clustering via D.C Optimization, Clustering via Mathematical Programming, Mathematical Programming in data mining, Optimization Global, Clustering software… Thank you for evaluating AnyBizSoft PDF Splitter A watermark is added at the end of each output PDF file To remove the watermark, you need to purchase the software from http://www.anypdftools.com/buy/buy-pdf-splitter.html -7- MỞ ĐẦU Ngày nay, với phát triển mạnh mẽ công nghệ phần cứng truyền thông, hệ thống liệu phục vụ cho lĩnh vực kinh tế - xã hội không ngừng tăng lên, lượng liệu tạo ngày lớn Sự phong phú liệu, thông tin với khả kịp thời khai thác chúng mang đến suất chất lượng cho công tác quản lý, hoạt động kinh doanh,…Nhưng yêu cầu thông tin lĩnh vực hoạt động đó, đặc biệt lĩnh vực làm định, ngày đòi hỏi cao hơn, người định khơng cần liệu mà cịn cần có thêm nhiều hiểu biết, nhiều tri thức để hỗ trợ cho việc định Cho đến năm 90 kỷ trước, nhu cầu khám phá tri thức thực bùng nổ, theo đó, hàng loạt lĩnh vực nghiên cứu tổ chức kho liệu kho thông tin, hệ trợ giúp định, thuật toán nhận dạng mẫu phân lớp mẫu, …và đặc biệt khai phá liệu (Data Mining) đời Từ đời, khai phá liệu trở thành hướng nghiên cứu phổ biến lĩnh vực khoa học máy tính cơng nghệ tri thức Nhiều kết nghiên cứu, ứng dụng khai phá liệu lĩnh vực khoa học, kinh tế, xã hội Khai phá liệu bao hàm nhiều hướng nghiên cứu quan trọng, số phân cụm liệu (Data Clustering) Phân cụm liệu trình tìm kiếm phát cụm mẫu liệu tự nhiên sở liệu lớn Các kỹ thuật áp dụng phân cụm liệu phần lớn kế thừa từ lĩnh vực thống kê, học máy, nhận dạng, lượng hoá, Đến nay, có nhiều ứng dụng phân cụm liệu cho việc giải vấn đề lĩnh vực tài chính, thơng tin địa lý, sinh học, nhận dạng ảnh,… Trong thời gian gần đây, lĩnh vực phân cụm liệu, người ta tập trung chủ yếu vào nghiên cứu, phân tích mơ hình liệu phức tạp liệu văn bản, Web, hình ảnh,…và đặc biệt mơ hình liệu hỗn hợp để áp dụng chúng phân cụm liệu Ở Việt Nam, năm trở lại đây, nhu cầu tự động khám phá tri thức từ liệu sẵn có nhằm tăng lực cạnh tranh ngành kinh tế phát triển nhanh Vì vậy, tơi chọn hướng nghiên cứu "Một số thuật tốn phân cụm liệu khai phá liệu" làm đề tài nghiên cứu cho luận văn Luận văn trình bày có hệ thống số họ thuật tốn phân cụm liệu điển hình, bao gồm cách tiếp cận đặc điểm ứng dụng -8Cấu trúc nội dung luận văn bao gồm phần nhƣ sau: Chương 1: Trình bày tổng quan khai phá liệu, phân cụm, thuật toán phân cụm phân loại khai phá liệu đồng thời trình bày khái niệm số độ đo tương tự, không tương tự… Chương chương 3: Trình bày thuật tốn phân cụm truyền thống gồm họ thuật toán phân cụm thuật tốn phân cụm phân cấp điển hình ưu điểm, nhược điểm chúng Chương 4: Tập trung nghiên cứu giải toán cụm theo tâm dựa vào tối ưu hố Có hai cách tiếp cận đưa phân cụm qua quy hoạch toán học phân cụm qua tối ưu hố d.c Để khẳng định tính hiệu cách tiếp cận, luận văn trình bày lại kết thí nghiệm phân cụm bệnh nhân ung thư vú sở liệu đại học Wisconsin Đây cơng trình nghiên cứu GS TSKH Hồng Tuỵ (viện Toán học Việt Nam), GS Mangasarian (đại học Wisconsin, Madison) cộng Chương 5: Phân tích cài đặt thử nghiệm phân cụm tập liệu vector không gian ba chiều sử dụng số thuật toán tiêu biểu MBSAS, TTSAS, GAS, GDS Chúng ta đưa cách cài đặt kết đạt Phần kết luận trình bày tóm tắt nội dung thực luận văn, đồng thời đưa vấn đề nghiên cứu tiếp cho tương lai Phần phụ lục trình bày số modul chương trình cài đặt cho thuật tốn MBSAS, TTSAS, GAS, GDS Do thời gian nghiên cứu trình độ có hạn, luận văn khơng tránh khỏi có hạn chế thiếu sót Tơi xin tiếp thu ý kiến, đánh giá, bảo thầy giáo bạn bè đồng nghiệp Tôi xin chân thành cảm ơn Hà Nội, tháng 10 năm 2007 Học viên Trần Nguyên Hƣơng -116Hình bên trái TTSAS với giá trị ngưỡng theta không (1000, 2000) kết phân lớp sai, phần cụm màu xanh da trời (green) nằm cụm màu đỏ (cụm bên trái) Khi giá trị theta giảm (500, 1500) TTSAS tạo cụm đắn hình bên phải Vấn đề khơng bật với GDS GAS chúng khơng có tham số khơng tương tự (phân cụm khơng sử dụng ngưỡng) Hình 5.5 minh hoạ trường hợp tạo số cụm không (4 thay 5) MBSAS TTSAS GAS GDS Hình 5-5 Ý nghĩa đắn số cụm tạo Hình góc bên trái kết thuật toán MBSAS: cụm màu xanh da trời - blue (bên trái) có quy mơ khơng so với hình góc bên phải TTSAS Kết TTSAS xác khơng phụ thuộc vào số cụm phải tạo Hình góc bên trái kết thuật tốn GAS, tương tự với MBSAS GDS (góc bên phải) tạo cụm màu đỏ lớn hơn, chứa vector cụm màu xanh (green) Thực tế GDS khác với GAS cụm màu đỏ GDS chặt chẽ cụm màu xanh da trời (blue) GAS -117- KẾT LUẬN Những kết đạt đƣợc Ngày nay, q trình khai thác thơng tin hệ thống CSDL ngày đa dạng, tăng trưởng nhanh chất lẫn lượng; nữa, nhu cầu khai thác tri thức từ CSDL (dưới dạng phân hoạch CSDL thành cụm liệu cần quan tâm) ngày lớn Vì vậy, nghiên cứu thuật toán phân cụm việc làm cần thiết có nhiều ý nghĩa khoa học thực tiễn Luận văn tập hợp trình bày lại cách có hệ thống ba họ thuật toán phân cụm tiêu biểu: tuần tự, phân cấp tối ưu hoá Với họ thuật tốn trình bày sơ đồ thuật tốn, phân tích ưu nhược điểm, phạm vi áp dụng; đồng thời đưa cài đặt thử nghiệm mang tính chất mơ để so sánh thuật tốn Cụ thể chương sau: Chương 1: Trình bày tổng quan khai phá liệu, phân cụm, thuật toán phân cụm phân loại khai phá liệu đồng thời trình bày khái niệm số độ đo tương tự, không tương tự nhằm cung cấp sở toán học cho thuật tốn Chương 2: Trình bày thuật toán phân cụm Trong chương này, trước hết xét sơ đồ phân cụm tổng quát BSAS, sơ đồ BSAS sửa đổi (MBSAS) phân cụm hai ngưỡng TTSAS Hai thuật tốn BSAS, MBSAS có kết phụ thuộc chặt chẽ vào thứ tự vector đưa vào phân cụm giá trị ngưỡng TTSAS phụ thuộc vào thứ tự vector đưa vào phân cụm mà số cụm sinh phụ thuộc vào chọn giá trị cho hai ngưỡng Trong thuật toán trên, TTSAS có hiệu (độ phức tạp O(n )) Để kết phân cụm hợp lý hơn, người ta sử dụng kết hợp thủ tục xếp lại thủ tục trộn trình thực thuật tốn Chương 3: Trình bày chi tiết họ thuật toán phân cụm phân cấp Các thuật toán chia thành loại tích tụ phân rã sử dụng lý thuyết ma trận lý thuyết đồ thị Trong thuật tốn tích tụ dựa lý thuyết ma trận có thuật toán thảo luận: liên kết đơn, liên kết đầy đủ, WPGMA, UPGMA, WPGMC, UPGMC Ward Trong thuật tốn thuật tốn liên kết đơn có khuynh hướng hình thành cụm dài cịn liên kết đầy đủ có khuynh hướng hình thành nên cụm chặt Các thuật toán khác nằm hai thuật toán Thuật tốn tích tụ dựa lý thuyết đồ thị gồm: liên kết đơn, liên kết đầy đủ thuật toán dựa -118trên khung nhỏ Các thuật toán loại này, cụm hình thành hợp lệ phải thoả tính chất đồ thị Các thuật toán phân cụm phân rã thực ngược với phân cụm tích tụ cần tính tốn chặt chẽ Người ta biểu diễn trình phân cụm sơ đồ ngưỡng Đây sơ đồ biểu diễn trình hình thành cụm mức ngưỡng Bằng cách cắt sơ đồ ngưỡng mức ta cụm sinh mức Phần cuối chương thảo luận phương pháp cắt sơ đồ ngưỡng để cụm sinh phù hợp với liệu Nhìn chung, cụm thuộc loại có độ phức tạp theo lý thuyết O(n3) Chương 4: Giới thiệu phương pháp phân cụm qua tối ưu hoá để giải toán phân cụm theo tâm Cụ thể phương pháp quy hoạch toán học tối ưu hoá d.c Đây phương pháp tỏ có hiệu phương pháp khác Để kiểm tra tính hiệu phương pháp này, luận văn trình bày lại thí nghiệm tác giả Mangasarian, H Tuỵ CSDL chuẩn đoán ung thư vú đại học Wisconsin Chương 5: Đưa số phân tích, cài đặt thử nghiện thuật toán MBSAS, TTSAS, GAS (Liên kết đơn) GDS (cải tiến) đồng thời so sánh thời gian thực thảo luận hình thành cụm qua thuật toán Phần phụ lục luận văn giới thiệu mã nguồn số thuật toán Hạn chế đề tài: - Chưa có điều kiện nghiên cứu kỹ lớp toán phân cụm nhờ tối ưu hoá - Chưa cài đặt thuật toán phân cụm nhờ tối ưu hoá cho ứng dụng cụ thể mà sử dụng kết thử nghiệm có tác giả khác giới thiệu chương - Cài đặt thuật toán chương mang tính chất mơ phỏng, chưa ứng dụng vào thực tế Hƣớng phát triển đề tài Nghiên cứu thuật toán phân cụm qua tối ưu hoá Cụ thể: - Bài toán phân cụm theo siêu phẳng; - Bài toán phân cụm mặt phẳng, mặt cầu; - Nghiên cứu tối ưu hoá đơn điệu áp dụng vào toán phân cụm; - Cài đặt thử nghiệm số thuật toán dựa tối ưu hoá ứng dụng vào toán thực tế -119- TÀI LIỆU DẪN Tài liệu tiếng Việt [1] Hoàng Tuỵ (2006), "Lý thuyết tối ưu" (Bài giảng lớp cao học), Viện Toán học Hà Nội, 2006 [2] Hoàng Tuỵ (2005), Hàm thực giải tích hàm, Nhà xuất Đại học Quốc gia Hà Nội Tài liệu tiếng Anh [3] Alan Rea (1995), Data Mining – An Introduction The Parallel Computer Centre, Nor of The Queen’s University of Belfast http://www.pcc.qub.ac.uk/tec/courses/datamining/stu_notes/dm_book_1.html [4] A.M Gagirov, A.M Rubinov, A Stranieri and J Yearwood (1999) The global optimization approach to the clustering analysis Woking paper 45/99, University of Ballarat, Australia [5] Boberg J., Salakoski T “General formulation and evaluation of agglomerative clustering methods with metric and non-metric distances,” Pattern Recognition, Vol 26(9), pp 1395-1406, 1993 [6] H Tuy (1997), "A general d.c approach to location problems", in State of the Art in Global optimization: Computational Methods and Application, eds C Floudas and P.Pardalos, eds., Kluwer, 413-432 [7] H Tuy (1998), "Convex Analysis and Global Optimization", Kluwer [8] H Tuy (1999), Monotonic Optimization: Problems and Solution Approaches, Preprint, Institute of Mathematics, Hanoi [9] H.Tuy , A.M Gagirov, A.M Rubinov: Clustering via D.C Optimization Research Report 00/13 (2000), School of Information Technology and Mathematical Sciences, Univerity of Ballarat Submitted [10] Jiawei Han and Micheline Kamber (2001), Data Mining : Concepts and Techniques, Hacours Science and Technology Company, USA [11] Lance G.N., Williams W.T “A general theory of classificatory sorting strategies: II Clustering System.” Computer Journal, Vol 10, pp 271-277, 1967 [12] MacQuenn J.B “Some methods for classification and analysis of multivariate observations,” Proceedings of the Symposium on Mathematical Statistics and Probability, th Berkeley, Vol 1, pp 218-297, AD 669871, University of California Press, 1967 [13] Maria Halkidi (2001), On Clustering Validation Techniques, Kluwer Academic Publishers, Holland [14] O.L Mangasarian (1987) Mathematical Programming in Data Mining, in Data Mining and Knowledge Discovery 1, 183-201 -120[15] O.L Mangasarian, W.N Street and W.H Wolberg: Breast cancer diagnosis and prognosis via linear Programming Operations research 4(1995), 570-577 [16] P.S Bradley, O.L Magasarian and W.N Street (1997), Clustering via cancave Minimization, Techincal Report 96-03, Computer Sciences Department, University of Wisconsin, Madison, Wisconsin, May 1996 Advances In Neural Information processing Systems MIT Press, Cambridge, MA, 368-374, M.C Mozer, M.I.Jordan and T Petsche, editors Available by ftp://ftp.cs.winsc.edu/math-prog/tech-trports/96-03.ps.Z [17] R Horst and H Tuy (1996), "Global Optimization" (Deterministic Approaches), Springer, third edition [18] W.H Wolberg, W.N Street and O.L Magasarian (1994), Machine learning techniques to diagnose breast cancer from fine-needle aspirates Cancer Letters, 77, 163-171 [19] Yu G Evtushenko (1982), Solution Methods of Extremal Problems and Their Application to optimization System, Moscow, Nauka (In Russian) -121- PHỤ LỤC: MÃ NGUỒN CỦA MỘT SỐ THUẬT TOÁN /** * Cluster.h * * La mot lop co so chua cac vector mau * */ /** * * * * * * Dinh nghia mot cum don Mot cum co mot danh sach cac vector thuoc cum Cac vector co the duoc them vao hoac loai bo khoi cum Cac lop khac co the kế thừa lop Chang han nhu cac lop co cac vector dai dien khac Lop su dung dai dien la vec tor trung binh * */ class CCluster { protected: /** Danh sach Cac vector dang thuoc ve cum */ VList Vectors; /** Dai dien trung binh */ fVector3 Medium; /** Cac vector Outlier hien tai */ fVector3 Outlier; /** Khoang cach tu cac vector Outlier toi vector dai dien */ float fOutlierDist; /** La cac outlier hop le */ bool bOutlierValid; /** Cap nhat gia tri dai dien */ virtual void UpdateMedium(); /** Cap nhat vector outlier (vector nam xa vetor dai dien nhat */ virtual void UpdateOutlier(); public: CCluster(void); /** Kiem tra xem cum co rong khong? */ bool IsEmpty() const; /** Them mot vector vao cum */ virtual void AddVector(const fVector3& vec); /** Loai bo mot vector khoi cum */ virtual void RemoveVector(const fVector3& vec); /** Chua tat ca vector cua mot cum da cho */ virtual void Include(CCluster& cluster); /** Tra ve mot tham chieu toi danh sach cac vector */ virtual const VList& GetVectors() const; /** Tra ve vector dai dien */ virtual fVector3 GetRepresentative() const { return Medium; } /** Tra ve vector outlier */ -122virtual fVector3 GetOutlier(); /** Tra ve khoang cach outlier */ virtual float GetOutlierDist(); /** Tra ve mot doi tuong cum moi */ virtual CCluster* GetNewCluster() { return new CCluster(); } /** Tra ve binh phuong khoang cach toi vector da cho */ virtual float Distance(const fVector3& vec); /** Tra ve binh phuong khoang cach toi mot cum khac */ virtual float Distance(const CCluster* clust); /** Lam sach va xoa cum */ virtual ~CCluster(void); }; /** Mot danh sach cac tro cum */ typedef list ClList; // Cluster.cpp… void CCluster::Include(CCluster& cluster) { VList::iterator i; for (i = cluster.Vectors.begin(); i != cluster.Vectors.end(); ++i) { Vectors.push_back(*i); } UpdateMedium(); bOutlierValid = false; } const VList& CCluster::GetVectors() const { return Vectors; } float CCluster::Distance(const fVector3& vec) { return Medium.SquaredDistance(vec); } float CCluster::Distance(const CCluster* clust) { return Medium.SquaredDistance(clust->GetRepresentative()); } /** * ClustAlgorithm.h **/ #pragma once #include "Cluster.h" /** * Cung cap lop co so cho tat ca cac thuat toan phan cum */ class CClustAlgorithm { -123public: CClustAlgorithm() {}; virtual void SetParameters(float theta, int q = 0) = 0; /** * Tao phep phan cum toi uu cac vector su dung cac lop empty da cho * Co the cho cac loai lop cum khac nhu tham so * */ virtual ClList* Clusterize(const VList* vectors, CCluster* empty) const = 0; /** Tra ve so cum tim duoc, neu khong co*/ virtual int GetClusters() { return 0; } /** Tra ve tham so theta duoc su dung, neu khong su dung */ virtual float GetTheta() { return 0.f; } virtual float GetTheta2() { return 0.f; } /** Tra ve ten cua thuat toan */ virtual const char* GetName() const = 0; virtual ~CClustAlgorithm(void) {}; }; // MBSAS.cpp… ClList* CMBSAS::Clusterize(const VList* vectors, CCluster* empty) const { int numVectors = 0; int clusters = 0; fVector3 tmp; if ((vectors == NULL) || (empty == NULL)) return NULL; if ((int)vectors->size() < 1) return NULL; / Day khong la cach toi uu VList tmplist = *vectors; ClList* ClusterList = new ClList(); VList::iterator iter; ClList::iterator iter2; / Khoi tao tat ca cac vector iter = tmplist.begin(); empty->AddVector(*iter); iter++; ClusterList->push_back(empty); / 'Tạo cac cum' for (; iter != tmplist.end(); iter++) { tmp = *iter; float mindist = FLT_MAX; // Tim khoang cach nho nhat for (iter2 = ClusterList->begin(); iter2 != ClusterList->end(); iter2++) { -124float dist = (*iter2)->Distance(tmp); if (dist < mindist) mindist = dist; } // Co tao cum moi khong? if ((mindist > fTheta) && ((int)ClusterList->size() < iq)) { CCluster* newclust = empty->GetNewCluster(); newclust->AddVector(tmp); ClusterList->push_back(newclust); } } // Phai loai bo mau vua tao for (iter2 = ClusterList->begin(); iter2 != ClusterList->end(); iter2++) { tmp = (*iter2)->GetRepresentative(); // Dai dien la nhat tmplist.remove(tmp); } // Phan loai cac vector lai for (iter = tmplist.begin(); iter != tmplist.end(); iter++) { tmp = *iter; float mindist = FLT_MAX; CCluster* minclust = NULL; // Tim khoang cach cum nho nhat for (iter2 = ClusterList->begin(); iter2 != ClusterList->end(); iter2++) { float dist = (*iter2)->Distance(tmp); if (dist < mindist) { mindist = dist; minclust = *iter2; } } minclust->AddVector(tmp); // them vector vao cum } return ClusterList; } // TTSAS.cpp ClList* CTTSAS::Clusterize(const VList* vectors, CCluster* empty) const { if ((vectors == NULL) || (empty == NULL)) return NULL; if ((int)vectors->size() < 1) return NULL; bool* clas = new bool[vectors->size()]; fVector3* tmplist = new fVector3[vectors>size()]; VList::const_iterator iter; int i = 0; for (iter = vectors->begin(); iter != vectors->end(); iter++, i++) { tmplist[i] = *iter; clas[i] = false; -125} ClList* ClusterList = new ClList(); int numVectors = (int)vectors->size(); int numDone = 0; // So mau da duoc phan lop int existsChange = 0; // So vector duoc phan lop lan duyet int curChange = 0; // So vector da duoc phan lop tinh den lan duyet hien tai int prevChange = 0; // So vector da duoc phan lop cac lan duyet truoc float mindist = FLT_MAX; CCluster* minclust = NULL; ClList::iterator iter2; while (numDone < numVectors) { bool gotOne = false; for (i = 0; i < numVectors; i++) { if (!clas[i] && existsChange == && !gotOne) { / Dam bao rang vong while se phai ket thuc :) CCluster* clust = empty->GetNewCluster(); clust>AddVector(tmplist[i]); ClusterList>push_back(clust); clas[i] = true; curChange++; numDone++; gotOne = true; } else if (clas[i] == 0) { mindist = FLT_MAX; minclust = NULL; / Tim cum khoang cach nho nhat for (iter2 = ClusterList->begin(); iter2 != ClusterList->end(); iter2++) { float dist = (*iter2)->Distance(tmplist[i]); if (dist < mindist) { mindist = dist; minclust = *iter2; } } if (mindist < fTheta1) { // them vector vao cum da co minclust->AddVector(tmplist[i]); clas[i] = true; curChange++; numDone++; } else if (mindist > fTheta2) { // can tao cum moi CCluster* clust = empty->GetNewCluster(); clust->AddVector(tmplist[i]); ClusterList>push_back(clust); clas[i] = true; curChange++; numDone++; } } else // clas == curChange++; -126} existsChange = abs(curChange prevChange); prevChange = curChange; curChange = 0; } delete empty; delete[] clas; delete[] tmplist; return ClusterList; } // GDS.cpp ClList* CGDS::Clusterize(const VList* vectors, CCluster* empty) const { if ((vectors == NULL) || (empty == NULL)) return NULL; if ((int)vectors->size() < 1) return NULL; / Tạo phep phan cum khoi tao ClList* ClusterList = new ClList(); VList::const_iterator iter; CCluster* tmp = empty->GetNewCluster(); for (iter = vectors->begin(); iter != vectors->end(); iter+ +) tmp->AddVector(*iter); ClusterList->push_back(tmp); float maxdist, maxdist2; CCluster* maxclust; ClList::iterator iter2; while ((int)ClusterList->size() < iq) { maxdist = 0; maxclust = NULL; / Tim cum co phan tu outlier lon nhat for (iter2 = ClusterList->begin(); iter2 != ClusterList->end(); iter2+ +) if ((*iter2)->GetOutlierDist() > maxdist) { maxdist = (*iter2)>GetOutlierDist(); maxclust = *iter2; } // Chuyen outlier vao mot cum moi CCluster* newclust = empty->GetNewCluster(); newclust->AddVector(maxclust->GetOutlier()); maxclust->RemoveVector(maxclust>GetOutlier()); ClusterList>push_back(newclust); bool foundOne = true; / Khi tim thay mot vector tuong tu hon mot cum moi while (foundOne) { foundOne = false; // Chua tim thay vector nao fVector3 vect(0, 0, 0); maxdist = FLT_MAX; / Duyet qua tat ca cac vector cum cu for (iter = maxclust -> GetVectors().begin();iter != maxclust-> GetVectors().end(); iter++) { -127maxdist2 = newclust->Distance(*iter); // Khoang cach toi cum moi if (maxclust->Distance(*iter) > maxdist2 && maxdist2 < maxdist) { foundOne = true; maxdist = maxdist2; // Khoang cach gan nhat toi cum moi vect = *iter; } } if (foundOne) { // Tim thay mot vector? newclust->AddVector(vect); maxclust->RemoveVector(vect); } } } delete empty; return ClusterList; } // GAS.cpp ClList* CGAS::Clusterize(const VList* vectors, CCluster* empty) const { if ((vectors == NULL) || (empty == NULL)) return NULL; if ((int)vectors->size() < 1) return NULL; / Tao mot phan cum khoi tao ClList* ClusterList = new ClList(); VList::const_iterator iter; for (iter = vectors->begin(); iter != vectors->end(); iter++) { CCluster* tmp = empty->GetNewCluster(); tmp>AddVector(*iter); ClusterList->push_back(tmp); } ClList::iterator iter2; ClList::iterator iter3; float mindist; CCluster* minclust1; CCluster* minclust2; while ((int)ClusterList->size() > iq) { mindist = FLT_MAX; minclust1 = NULL; minclust2 = NULL; / Duyet hai cum ma no co khoang cach nho nhat (slow) for (iter2 = ClusterList->begin(); iter2 != ClusterList->end(); iter2++) { iter2++; // Tang gia for (iter3 = iter2 ; iter3 != ClusterList->end(); iter3++) { float dist = (*iter2)->Distance(*iter3); if (dist < mindist) { mindist = dist; minclust1 = *iter2; minclust2 = *iter3; } -128} } / .va ket hop hai cum voi if (minclust2 != NULL) { minclust1>Include(*minclust2); ClusterList->remove(minclust2); delete minclust2; } } delete empty; return ClusterList; } / GLRenderer.cpp… void CGLRenderer::DrawVolumes(const ClList* list) { int c = 0; glColor4f(0.5f, 0.5f, 0.5f, 0.4f); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); for (ClList::const_iterator iter=list->begin();iter!= iter++, c+=3){ glPushMatrix(); float dist = (*iter)->GetOutlierDist(); fVector3 out = (*iter)->GetRepresentative(); glTranslatef(out.x, out.y, out.z); glutWireSphere(sqrt(dist), 8, 8); glutSolidSphere(sqrt(dist), 8, 8); glPopMatrix(); } glDisable(GL_BLEND); } void CGLRenderer::RotateCamera(float xrot, float yrot) { // Quay len tren vdir = vdir.Rotate(vup, 3.1415f * yrot / 180.f); vleft = vleft.Rotate(vup, 3.1415f * yrot / 180.f); vup = vdir.Cross(vleft); // Quay sang trai vup = vup.Rotate(vleft, 3.1415f * xrot / 180.f); vdir = vdir.Rotate(vleft, 3.1415f * xrot / 180.f); vleft = vup.Cross(vdir); vdir.Normalize(); vleft.Normalize(); vup.Normalize(); } list->end(); Thank you for evaluating AnyBizSoft PDF Splitter A watermark is added at the end of each output PDF file To remove the watermark, you need to purchase the software from http://www.anypdftools.com/buy/buy-pdf-splitter.html Thank you for evaluating AnyBizSoft PDF Merger! To remove this page, please register your program! Go to Purchase Now>> AnyBizSoft PDF Merger Merge multiple PDF files into one Select page range of PDF to merge Select specific page(s) to merge Extract page(s) from different PDF files and merge into one ... cận khai phá liệu 1. 4.2 Các dạng liệu khai phá 1. 5.Ứng dụng khai phá liệu 1. 6 .Phân cụm liệu ứng dụng 1. 6 .1 Mục đích phân cụm liệu 1. 6.2 Các bước để phân cụm 1. 6.3... CÁC THUẬT TOÁN PHÂN CỤM TUẦN TỰ 2 .1 .Số cách phân cụm 2.2 .Thuật toán phân cụm - BSAS 2.3.Ƣớc lƣợng số cụm 2.4.Sửa đổi thuật toán BSAS - Thuật toán MBSA 2.5 .Thuật toán phân cụm hai...LIỆU VÀ CÁC KHÁI NIỆM CƠ BẢN 1. 1.Giới thiệu chung 1. 2 .Khai phá liệu gì? 1. 3.Qúa trình khai phá tri thức sở li 1. 4.Các kỹ thuật áp dụng khai phá liệu 1. 4 .1 Các kỹ thuật