1. Trang chủ
  2. » Thể loại khác

Một số thuật toán phân cụm trong khai phá dữ liệu : Luận văn ThS. Công nghệ thông tin: 1.01.10

131 39 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 131
Dung lượng 1,99 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ì? 10 1.3 Qúa trình khai phá tri thức sở liệu 10 1.4 Các kỹ thuật áp dụng khai phá liệu 11 1.4.1 Các kỹ thuật tiếp cận khai phá liệu 11 1.4.2 Các dạng liệu khai phá 12 1.5 Ứng dụng khai phá liệu 13 1.6 Phân cụm liệu ứng dụng 13 1.6.1 Mục đích phân cụm liệu 13 1.6.2 Các bước để phân cụm 14 1.6.3 Các loại đặc trưng 15 1.6.4 Các ứng dụng phân cụm 16 1.6.5 Phân loại thuật toán phân cụm 17 1.7 Các khái niệm định nghĩa 20 1.7.1 Các định nghĩa phân cụm 20 1.7.2 Các độ đo gần gũi 21 Chƣơng CÁC THUẬT TOÁN PHÂN CỤM TUẦN TỰ 33 2.1 Số cách phân cụm 33 2.2 Thuật toán phân cụm - BSAS 34 2.3 Ƣớc lƣợng số cụm 36 2.4 Sửa đổi thuật toán BSAS - Thuật toán MBSAS 37 2.5 Thuật toán phân cụm hai ngƣỡng - TTSAS 39 2.6 Giai đoạn tinh chế 42 -2- Chƣơng CÁC THUẬT TOÁN PHÂN CỤM PHÂN CẤP 44 3.1 Giới thiệu 44 3.2 Các thuật tốn tích tụ - GAS 45 3.2.1 Một số định nghĩa 46 3.2.2 Một số thuật tốn tích tụ dựa lý thuyết ma trận 49 3.2.3 Monotonicity Crossover 56 3.2.4 Một sơ thuật tốn tích tụ dựa lý thuyết đồ thị 59 3.2.5 Ảnh hưởng ma trận gần gũi tới sơ đồ phân cụm 70 3.3 Các thuật toán phân rã - GDS 73 3.3.1 Cải tiến sơ đồ GDS 76 3.4 Lựa chọn phân cụm tốt 80 Chƣơng CÁC THUẬT TOÁN PHÂN CỤM QUA TỐI ƢU HOÁ 82 4.1 Tổng quan tối ƣu hoá khái niệm 82 4.1.1 Một số khái niệm giải tích lồi 82 4.1.2 Các toán tối ưu 84 4.1.3 Một số phương pháp giải toán tối ưu 86 4.2 Bài toán phân cụm theo tâm 93 4.2.1 Phân cụm qua quy hoạch toán học 93 4.2.2 Phân cụm qua tối ưu hoá d.c 98 Chƣơng PHÂN TÍCH VÀ CÀI ĐẶT THỬ NGHIỆM 108 5.1 Cài đặt 108 5.1.1 MBSAS 109 5.1.2 TTSAS 109 5.1.3 GAS 110 5.1.4 GDS 111 5.2 Mô cụm 112 5.2.1 Sinh liệu khởi tạo thuật toán 113 5.3 Kết thử nghiệm 114 5.3.1 Ảnh hưởng tham số 115 KẾT LUẬN 117 Hƣớng phát triển đề tài 118 TÀI LIỆU DẪN 119 PHỤ LỤC: MÃ NGUỒN CỦA MỘT SỐ THUẬT TOÁN 121 -3- DANH SÁCH HÌNH VẼ Hình 1-1 Các bƣớc thực trình khai phá tri thức 11 Hình 1-2 Các bƣớc trình phân cụm 15 Hình 1-3 Hình dạng loại cụm 20 Hình 1-4 Phân bố vector rời rạc lƣới ℓ - chiều 25 Hình 1-5 Các loại cụm đại diện 30 Hình 2-1 Sự phụ thuộc số cụm đƣợc tạo số cụm lớn đƣợc phép q 35 Hình 2-2 Đồ thị ƣớc lƣợng số cụm 37 Hình 2-3 Minh hoạ phân cụm thuật tốn MBSAS (a) thuật tốn TTSAS (b) 42 Hình 3-1 Sơ đồ phân cụm phân cấp với tập liệu X ví dụ 3.2 47 Hình 3-2 Minh hoạ sơ đồ tƣơng tự không tƣơng tự 48 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) 51 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 57 Hình 3-5 Minh hoạ đƣờng loại đồ thị 60 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 61 Hình 3-7 Đồ thị với khả liên kết cạnh đỉnh bậc đỉnh 62 Hình 3-8 Các đồ thị ngƣỡng ma trận khơng tƣơng tự P ví dụ 3.5 65 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 67 Hình 3-10 Các sơ đồ phân cụm dùng thuật toán GTAS thoả thuộc tính h(k) ví dụ 3.6 68 Hình 3-11 Sơ đồ ngƣỡng ví dụ 3.6 với thuộc tính bậc đỉnh k =3 69 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 toán dựa MST (b) cho ví dụ 3.7 70 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 71 Hình 3-14 Sơ đồ khơng tƣơng tự đạt đƣợc thuật toán liên kết đơn (a) thuật toán liên kết đầy đủ (b) với ma trận P1 72 Hình 3-15 Minh hoạ bƣớc phân cụm sơ đồ GDS 79 Hình 3-16 Sơ đồ trƣờng hợp có hai cụm (a) có cụm (b) tập liệu 80 -4Hình 3-17 Ví dụ độ đo “Tự - tương tự” (a) mô điều kiện kết thúc phƣơng pháp II (b) 81 Hình 4-1 Sơ đồ nhánh cận 92 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 97 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 98 Hình 5-1 Quan sát cụm đƣợc tạo 113 Hình 5-2: Màn hình sinh liệu 114 Hình 5-3 Màn hình thiết lập thơng số cho thuật toán 114 Hình 5-4 Ý nghĩa việc chọn tham số đắn 115 Hình 5-5 Ý nghĩa đắn số cụm tạo 116 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ừ tiếng Anh Từ cụm từ Từ tiếng Việt BLP BiLinear Programming Quy hoạch song tuyến tính BSAS Basic Sequential Algorithmic Scheme Sơ đồ thuật toán phân cụm sở CSDL D.C DM GAS Data Base Difference of two Convex functions Dissimilarity Measure Generalized Agglomerative Scheme Cơ sở liệu Hiệu hai hàm lồi Độ đo không tương tự Sơ đồ tích tụ tổng quát GDS Generalized Divisive Scheme Sơ đồ phân rã tổng quát GTAS Graph Theory – based Algorithmic Scheme KDD Knowledge Discovery in Databases LP Linear Programming Sơ đồ thuật toán dựa lý thuyết đồ thị Khai phá tri thức sở liệu Quy hoạch tuyến tính MBSAS Modified Basic Sequential Algorithmic Scheme Sơ đồ thuật toán phân cụm sở sửa đổi MST Minimum Spanning Tree Cây khung nhỏ MUAS Matrix Updating Algorithmic Scheme Sơ đồ thuật toán biến đổi ma trận SM Similarity Measure Độ đo tương tự TTSAS Two – Threshold Sequential Algorithmic Scheme Sơ đồ thuật toán ngưỡng UPGMA Unweighted Pair Group Method Average Phương pháp trung bình theo cặp khơng trọng số UPGMC Unweight Pair Group Method Centroid Phương pháp trọng tâm theo cặp không chọn số WPGMA Weighted Pair Group Method Average Phương pháp trung bình theo cặp trọng số WPGMC Weighted Pair Group Method Centroid Phương pháp trọng tâm theo cặp trọng số 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 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 hố, Đế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 toá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 toá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 Tố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 toá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 -9- 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 Những năm 60 kỷ trước, người ta bắt đầu sử dụng công cụ tin học để tổ chức khai thác CSDL Cùng với phát triển vượt bậc công nghệ điện tử truyền thông, khả thu thập lưu trữ xử lý liệu cho hệ thống tin học khơng ngừng nâng cao, theo đó, lượng thông tin lưu trữ thiết bị nhớ không ngừng tăng lên Thống kê sơ cho thấy, lượng thông tin hệ thống tin học sau 20 tháng lại tăng gấp đôi [3] Cuối thập kỷ 80 kỷ 20, phát triển rộng khắp CSDL quy mô tạo bùng nổ thơng tin tồn cầu Vào thời gian này, người ta bắt đầu đề cập đến khái niệm khủng hoảng phân tích liệu tác nghiệp để cung cấp thông tin với yêu cầu chất lượng ngày cao cho người làm định tổ chức tài chính, thương mại, khoa học,… Đúng John Naisbett cảnh báo “Chúng ta chìm ngập liệu mà đói tri thức” Lượng liệu khổng lồ thực nguồn “tài ngun” có nhiều giá trị thơng tin yếu tố then chốt hoạt động quản lý, kinh doanh, phát triển sản xuất dịch vụ, … giúp người điều hành quản lý có hiểu biết mơi trường tiến trình hoạt động tổ chức trước định để tác động đến trình hoạt động nhằm đạt mục tiêu cách hiệu bền vững Khai phá liệu (Data Mining) lĩnh vực xuất hiện, nhằm tự động khai thác thông tin, tri thức có tính tiềm ẩn, hữu ích từ CSDL lớn cho đơn vị, tổ chức, doanh nghiệp,… từ làm thúc đẩy khả sản xuất, kinh doanh, cạnh tranh cho đơn vị, tổ chức Các kết khoa học ứng dụng thành công khám phá tri thức, cho thấy, khai phá liệu lĩnh vực phát triển bền vững, mang lại nhiều lợi ích có nhiều triển vọng, đồng thời có ưu hẳn so với cơng cụ phân tích liệu truyền thống Hiện nay, khai phá liệu ứng dụng ngày rộng rãi lĩnh vực như: Thương mại, tài chính, điều trị y học, viễn thơng, tin – sinh,… - 116 Hì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 tố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(n2)) Để 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 tốn thảo luận: liên kết đơn, liên kết đầy đủ, WPGMA, UPGMA, WPGMC, UPGMC Ward Trong thuật toá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 toá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 - 118 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, 5th 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 */ - 122 virtual 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 virtual float Distance(const fVector3& /** Tra ve binh phuong khoang cach toi virtual float Distance(const CCluster* /** Lam sach va xoa cum */ virtual ~CCluster(void); }; /** Mot danh sach cac tro cum */ typedef list ClList; vector da cho */ vec); mot cum khac */ clust); // 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 { - 123 public: 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++) { - 124 float 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++) { - 127 maxdist2 = 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

Ngày đăng: 23/09/2020, 22:33

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w