Đồ án Thuật toán Phân cụm dữ liệu nửa giám sát

Tài liệu Đồ án Thuật toán Phân cụm dữ liệu nửa giám sát: LỜI CẢM ƠN Trước hết, em xin chân thành gửi lời cảm ơn sâu sắc đến cô giáo ThS.Nguyễn Thị Xuân Hương , người đã tận tình hướng dẫn và tạo mọi điều kiện cho em trong quá trình làm tốt nghiệp. Em xin chân thành cảm ơn các thầy cô giáo trong khoa Công Nghệ Thông Tin Trường Đại Học Dân Lập Hải Phòng đã quan tâm dạy dỗ và giúp đỡ em trong suốt bốn năm học vừa qua và trong quá trình làm tốt nghiệp. Em xin chân trọng cảm ơn thầy Trần Hữu Nghị - Hiệu trưởng trường Đại Học Dân Lập Hải Phòng đã ủng hộ, động viên, và tạo mọi điều kiện tốt nhất để em có thể hoàn thành 4 năm đại học vừa qua. Cuối cùng em xin gửi lời cảm ơn chân thành tới tất cả những người thân cùng bạn bè đã động viên, giúp đỡ và đóng góp nhiều ý kiến quý báu cho em trong quá trình học tập cũng như khi làm tốt nghiệp. Hải Phòng, tháng7 năm 2007 Sinh viên Lưu Tuấn Lâm MỤC ĐÍCH CỦA ĐỀ TÀI Công việc đọc và tìm hiểu đề tài nhằm những muc đích sau đây: Tìm hiểu qua về khai phá dữ liệu (Data mining). Tìm hiểu qua về một số...

doc61 trang | Chia sẻ: hunglv | Lượt xem: 1778 | Lượt tải: 3download
Bạn đang xem trước 20 trang mẫu tài liệu Đồ án Thuật toán Phân cụm dữ liệu nửa giám sát, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
LỜI CẢM ƠN Trước hết, em xin chân thành gửi lời cảm ơn sâu sắc đến cô giáo ThS.Nguyễn Thị Xuân Hương , người đã tận tình hướng dẫn và tạo mọi điều kiện cho em trong quá trình làm tốt nghiệp. Em xin chân thành cảm ơn các thầy cô giáo trong khoa Công Nghệ Thông Tin Trường Đại Học Dân Lập Hải Phòng đã quan tâm dạy dỗ và giúp đỡ em trong suốt bốn năm học vừa qua và trong quá trình làm tốt nghiệp. Em xin chân trọng cảm ơn thầy Trần Hữu Nghị - Hiệu trưởng trường Đại Học Dân Lập Hải Phòng đã ủng hộ, động viên, và tạo mọi điều kiện tốt nhất để em có thể hoàn thành 4 năm đại học vừa qua. Cuối cùng em xin gửi lời cảm ơn chân thành tới tất cả những người thân cùng bạn bè đã động viên, giúp đỡ và đóng góp nhiều ý kiến quý báu cho em trong quá trình học tập cũng như khi làm tốt nghiệp. Hải Phòng, tháng7 năm 2007 Sinh viên Lưu Tuấn Lâm MỤC ĐÍCH CỦA ĐỀ TÀI Công việc đọc và tìm hiểu đề tài nhằm những muc đích sau đây: Tìm hiểu qua về khai phá dữ liệu (Data mining). Tìm hiểu qua về một số thuật toán phân cụm dữ liệu không giám sát Trên lền tảng lý thuyết về khai phá dữ liệu và một số thuật toán phân cụm không giám sát tiến tới đi sâu vào tìm hiểu, phân tích, đánh giá một số thuật toán của phương pháp phân cụm dữ liệu nửa giám sát.( Thuật toán Seeded-Kmeans và Constrained-Kmeans) Xây dựng một chương trình demo, mô phỏng hoạt động của phương pháp phân cụm dữ liệu nửa giám sát. GIỚI THIỆU Trong vài thập niên gần đây, cùng với sự thay đổi và phát triển không ngừng của ngành công nghệ thông tin nói chung và trong các ngành công nghệ phần cứng, phân mềm, truyền thông và hệ thống các dữ liệu phục vụ trong các lĩnh vực kinh tế - xã hội nói riêng. Thì việc thu thập thông tin cũng như nhu cầu lưu trữ thông tin càng ngày càng lớn. Bên cạnh đó việc tin học hoá một cách ồ ạt và nhanh chóng các hoạt động sản xuất, kinh doanh cũng như nhiều lĩnh vực hoạt động khác đã tạo ra cho chúng ta một lượng dữ liệu lưu trữ khổng lồ. Hàng triệu Cơ sở dữ liệu đã được sử dụng trong các hoạt động sản xuất, kinh doanh, quản lí..., trong đó có nhiều Cơ sở dữ liệu cực lớn cỡ Gigabyte, thậm chí là Terabyte. Sự bùng nổ này đã dẫn tới một yêu cầu cấp thiết là cần có những kĩ thuật và công cụ mới để tự động chuyển đổi lượng dữ liệu khổng lồ kia thành các tri thức có ích. Từ đó, các kĩ thuật Khai phá dữ liệu đã trở thành một lĩnh vực thời sự của nền Công nghệ thông tin thế giới hiện nay. Một vấn đề được đặt ra là phải làm sao trích chọn được những thông tin có ý nghĩa từ tập dữ liệu lớn để từ đó có thể giải quyết được các yêu cầu của thực tế như trợ giúp ra quyết định, dự đoán,… và Khai phá dữ liệu (Data mining) đã ra đời nhằm giải quyết các yêu cầu đó. Khai phá dữ liệu được định nghĩa là: quá trình trích xuất các thông tin có giá trị tiềm ẩn bên trong lượng lớn dữ liệu được lưu trữ trong các Cơ sở dữ liệu, kho dữ liệu… Hiện nay, ngoài thuật ngữ khai phá dữ liệu, người ta còn dùng một số thuật ngữ khác có ý nghĩa tương tự như: khai phá tri thức từ Cơ sở dữ liệu (knowlegde mining from databases), trích lọc dữ liệu (knowlegde extraction), phân tích dữ liệu/mẫu (data/pattern analysis), khảo cổ dữ liệu (data archaeology), nạo vét dữ liệu (data dredging). Nhiều người coi khai phá dữ liệu và một thuật ngữ thông dụng khác là khám phá tri thức trong Cơ sở dữ liệu(Knowlegde Discovery in Databases – KDD) là như nhau. Tuy nhiên trên thực tế, khai phá dữ liệu chỉ là một bước thiết yếu trong quá trình Khám phá tri thức trong Cơ sở dữ liệu. Ngay từ những ngày đầu khi xuất hiện, Data mining đã trở thành một trong những xu hướng nghiên cứu phổ biến trong lĩnh vực học máy tính và công nghệ tri thức. Nhiều thành tựu nghiên cứu của Data mining đã được áp dụng trong thực tế. Data mining có nhiều hướng quan trọng và một trong các hướng đó là phân cụm dữ liệu (Data Clustering ). Phân cụm dữ liệu là quá trính tìm kiếm để phân ra các cụm dữ liệu, các mẫu dữ liệu từ tập Cơ sở dữ liệu lớn. Phân cụm dữ liệu là một phương pháp học không giám sát. Trong những năm trở lại đây, do phương pháp phân cụm dữ liệu không giám sát còn nhiều nhược điểm vì vậy dựa trên học không giám sát và học có giám sát đã ra đời một phương pháp phân cụm dữ liệu mới đó là phương pháp phân cụm dữ liệu nửa giám sát. Phương pháp phân cụm nửa giám sát không phải là một phương pháp phân cụm hoàn thiện nhưng nó đã phần nào khắc phục được những hạn chế và phát huy ưu điểm của phương pháp phân cụm không giám sát. MỤC LỤC TỔNG QUAN VỀ DATA MINING Giới thiệu về khám phá tri thức Trong vài chục năm gần đây cùng với sự phát triển mạnh mẽ của kỹ thuật công nghệ cũng như nhu cầu lưu trữ thông tin dẫn đến trữ lượng dữ liệu được lưu trữ không ngừng tăng theo. Những cơ sở dữ liệu rất lớn ra đời, có những cơ sở dữ liệu lên đến cỡ Gigabyte và thậm chí cả Terabyte. Nếu bạn có trong tay một kho cơ sở dữ liệu cũng có nghĩa bạn có trong tay một kho tri thức.Nhưng vấn đề đặt ra là làm thế nào bạn có thể trích lọc được những thông tin, tri thức từ một kho dữ liệu với rất nhiều thông tin về các lĩnh vực khác nhau. Để giải quyết vấn đề đó thì kỹ thuật khám phá tri thức trong cơ sở dữ liệu (Knowledge Discovery in Databases- KDD) đã ra đời.Khám phá tri thức trong cơ sở dữ liệu (KDD) là lĩnh vực liên quan đến các ngành như: xác suất thống kê, học máy, trực quan hóa dữ liệu, tính toán song song,…Trong đó quá trình KDD có thể chia thành các bước thực hiện như sau [1]: Bước 1: Trích chọn dữ liệu: Ở bước này các dữ liệu liên quan trực tiếp đến nhiệm vụ của quá trình KDD sẽ được thu thập từ các nguồn dữ liệu ban đầu. Bước 2: Tiền xử lý dữ liệu: có nhiệm vụ làm sạch, loại bỏ nhiễu, rút gọn và rời rạc hóa dữ liệu. Bước 3: Biến đổi dữ liệu: nhằm chuẩn hóa và làm mịn dữ liệu để chuyển dữ liệu về dạng thuận lợi nhất phục vụ cho việc khai phá. Bước 4: Data mining: dùng các kỹ thuật phân tích để khai thác dữ liệu, trích chọn các mẫu thông tin cần thiết,… Công đoạn này được xem là mất thời gian nhất và cũng là quan trọng nhất trong quá trình KDD. Bước 5: Đánh giá và biểu diễn tri thức: Các thông tin và mối liên hệ giữa chúng vừa khám phá trong công đoạn trước được biểu diễn dưới các dạng trực quan đồng thời được đánh giá theo những tiêu chí nhất định. Dữ liệu thô Trích chọn dữ liệu Tiền xử lý dữ liệu Biến đổi dữ liệu Data mining Đánh giá và biểu diễn Tri thức Dữ liệu Dữ liệu tiền xử lý Mẫu Hình 1: Quá trình khám phá tri thức trong CSDL Khai phá dữ liệu và các khái niệm liên quan Data mning là một công đoạn trong quá trình khám phá tri thức trong cơ sở dữ liệu. Và Data mining cũng là một khâu quan trọng nhất trong quá trình khám phá tri thức trong cơ sở dữ liệu. Nhiệm vụ của Data mining là khai thác thông tin, tri thức có tính tiềm ẩn và hữu ích trong tập Cơ sở dữ liệu lớn nhằm cung cấp thông tin cần thiết cho các lĩnh vực sản xuất, khinh doanh, và nghiên cứu,… Các kết quả nghiên cứu cùng với những ứng dụng thành công của việc khai phá tri thức cho thấy Data mining là một lĩnh vực đầy tiềm năng và bền vững. Data mining đã giả được bài toàn khó đó là làm thế nào để có thể trích lọc được các thông tin, tri thức hữu ích từ một tập Cơ sở dữ liệu lớn. và khẳng định sự ưu việt của mình so với các công cụ phân tích dữu liệu truyền thông. Hiện nay, Data mining đã được ứng dụng ngày càng rộng dãi trong nhiều 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,… Khi đọc đến đây bạn có thể nhầm lẫn rằng hai khái niệm Data mining và khám phá tri thức trong cơ sở dữ liệu (KDD) là như nhau. Nhưng thực ra KDD là mục tiêu của Data mining. Và Data mining là một bước quan trọng và mang tính quyết định của quá trình KDD. Khái niệm khai phá dữ liệu Do sự phát triển mạnh mẽ của Data mining về phạm vi các lĩnh vực ứng dụng trong thực tế và các phương pháp tìm kiếm lên có rất nhiều khài niệm khác nhau về Data mining. Ở đây em xin nêu ra một định nghĩa gắn gọn và dễ hiểu về Data mining như sau [1]: Data mining là một quá trình tìm kiếm, chắt lọc các chi thức mới, tiềm ẩn, hữu dụng trong tập dữ liệu lớn. Các kỹ thuật tiếp cận trong khai phá cữ liệu Các kỹ thuật áp dụng trong Data mining phần lớn được kế thừa từ các lĩnh vực như: Cơ sở dữ liệu (Database), Học máy (Machine learning), Trí tuệ nhân tạo, Xác suất thống kê,… vì vậy ta có hai hướng tiếp cận sau đây: Theo quan điểm của học máy, các kỹ thuật trong Data mining gồm: Học có giám sát (Supervised learning): Là quá trình gán nhãn lớp cho các đối tượng trong tập dữ liệu dựa trên một bộ các đối tượng huấn luyện và các thông tin về nhãn lớp đã biết. Học không giám sát (Unsupervised learning): Là quá trình phân chia một tập dữ liệu thành các lớp hay cụm (cluster) dữ liệu tương tự nhau mà chưa biết trước các thông tin về nhãn lớp. Học nửa giám sát (Semi-Supervised learning): Là quá trình chia một tập dữ liệu thành các lớp con dựa trên một số thông tin bổ trợ cho trước. Theo các lớp bài toán cần giải quyết, các kỹ thuật trong Data mining gồm: Phân lớp và dự đoán (Classification and Prediction): đưa một đối tượng vào một trong các lớp đã biết trước. Phân lớp và dự đoán còn được gọi là học có giám sát. Luật kết hợp (Association rules): Là dạng luật biểu diễn tri thức ở dạng khá đơn giản. Một luật kết hợp được mô tả như sau: Nếu a thì b với xác suất p Phân tích chuỗi theo thời gian: giống như khai phá luật kết hợp nhưng có thêm tính thứ tự và thời gian Phân cụm (Clustering): Nhóm các đối tượng thành từng cụm dữ liệu. Đây là phương pháp học không giám sát. Mô tả khái niệm: Mô tả, tổng hợp và tóm tắt khái niệm, ví dụ như tóm tắt văn bản. PHÂN CỤM DỮ LIỆU VÀ CÁC TIẾP CẬN Khái quát về phân cụm dữ liệu Phân cụm dữ liệu là một kỹ thuật phát triển mạnh mẽ trong nhiều năm trở lại đây do các ứng dụng và lợi ích to lớn của nó trong các lĩnh vực trong thực tế. Ở một mức cơ bản nhất người ta định nghĩa phân cụm dữ liệu như sau [1]: Phân cụm dữ liệu là một kỹ thuật trong Data mining nhằm tìm kiếm, phát hiện các cụm, các mẫu dữ liệu tự nhiên tiềm ẩn và quan trọng trong tập dữ liệu lớn để từ đó cung cấp thông tin, tri thức cho việc ra quyết định. Do đó, phân cụm dữ liệu là quá trình phân chia một tập dữ liệu ban đầu thành các cụm dữ liệu sao cho các đối tượng trong một cụm thì “tương tự” nhau và các đối tượng trong các cụm khác nhau thì “phi tương tự” với nhau. Số cụm dữ liệu được xác định bằng kinh nghiệm hoặc bằng một số phương pháp phân cụm. Sau khi xác định các đặc tính của dữ liệu, người ta đi tìm cách thích hợp để xác định "khoảng cách" giữa các đối tượng, hay là phép đo tương tự dữ liệu. Đây chính là các hàm để đo sự giống nhau giữa các cặp đối tượng dữ liệu, thông thường các hàm này hoặc là để tính độ tương tự (Similar) hoặc là tính độ phi tương tự (Dissimilar) giữa các đối tượng dữ liệu. Giá trị của hàm tính độ đo tương tự càng lớn thì sự giống nhau giữa đối tượng càng lớn và ngược lại, còn hàm tính độ phi tương tự tỉ lệ nghịch với hàm tính độ tương tự. Trong quá trình phân cụm dữ liệu thì vấn đề trở ngại lớn nhất đó là nhiễu (noise). Nhiễu xuất hiện do trong quá trình thu thấp thông tin, dữ liệu thiếu chính xác hoặc không đầy đủ. Vì vậy chúng ta cần phải khử nhiễu trong quá trình tiến hành phân cụm dữ liệu. Các bước của một bài toán phân cụm dữ liệu gồm: Xây dựng hàm tính độ tương tự Xây dựng các tiêu chuẩn phân cụm Xây dựng mô hình cho cấu trúc dữ liệu Xây dựng thuật toán phân cụm và xác lập các điều kiện khởi tạo Xây dựng các thủ tục biểu diễn và đánh giá kết quả phân cụm Các kiểu dữ liệu và độ đo tương tự Sau đây là các kiểu của dữ liệu, và ứng với mỗi kiểu dữ liệu thì có một hàm tính độ đo tương tự để xác định khoảng cách giữa 2 phân tử của cùng một kiểu dữ liệu. Tất cả các độ đo đều được xác định trong không gian metric. Bất kỳ một metric nào cũng là một độ đo nhưng ngược lại thì không đúng. Độ đo ở đây có thể là tương tự hoặc phi tương tự. Một tập dữ liệu X là không gian metric nếu: với mỗi cặp x,y thuộc X đều xác định được một số thực d(x,y) theo một quy tắc nào đó và được gọi là khoảng cách của x,y. Quy tắc đó phải thoả mãn các tính chất sau: d(x,y) > 0 nếu x ≠ y d(x,y) = 0 nếu x = y d(x,y) = d(y,x) d(x,y) <= d(x,z) + d(z,y) Sau đây là các kiểu thuộc tính dữ liệu phổ biến : Kiểu thuộc tính nhị phân: Thuộc tính nhị phân chỉ có hai giá trị là 0 va 1. Trong đó 0 có nghĩa là sai và 1 có nghĩa là đúng y:1 y:0 x: 1 a g a+g x: 0 d q d+q a+d g+q Ví du: thuộc tính hút thuốc của bệnh lao phổi, 0 sẽ ứng vơi bệnh nhân không hút thuốc, 1 sẽ ứng với bệnh nhân có hút thuốc. Nếu ta đặt x = a+g+d+q. Với x, y là đối tượng có tất cả thuộc tính đều ở dạng nhị phân.Trong đó a,g,d,q được hiểu như sau: a là tổng số các thuộc tính có giá trị là 1 trong cả hai đối tượng x, y g là tổng số các thuộc tính có giá trị 1 trong x và 0 trong y d là tổng số các thuộc tính có giá trị 0 trong x và 1 trong y q là tổng số các thuộc tính có giá trị là 0 trong cả hai đối tượng x, y Khi đó độ tương tự được cho như sau: Hệ số đối sánh đơn giản: , Ở đây x và y có vai trò như nhau, tức là chúng đối xứng và cùng trọng số. Hệ số Jacard: , công thức này được áp dụng trong trường hợp mà trọng số của các thuộc tính có giá trị 1 lớn hơn rất nhiều các thuộc tính có giá trị 0, như vậy các thuộc tính nhị phân ở đây không đối xứng. Kiểu thuộc tính khoảng (Interval) Dùng để đo các giá trị theo xấp xỉ tuyến tính, với thuộc tính khoảng ta có thể xác định một thuộc tính đướng trước hoặc đứng sau một thuộc tính khác với khoảng là bao nhiêu. Nếu xi > yi thì ta nói x cách y một khoảng là xi-yi ứng với thuộc tính thứ i. Độ đo phi tương tự của x và y được tính bằng các metric khoảng cách sau Khoảng cách Minkowski: Khoảng cách Euclide: , nó là trường hợp của khoảng cách Minkowski với q = 2. Khoảng cách Mahattan, nó là trường hợp của khoảng cách Minkowski với q = 1. Kiểu thuộc tính định danh (Nominal) Đây là dạng tổng quat hoá của thuộc tính nhị phân, trong đó miền giá trị là rời rạc không phân biệt thứ tự. Nếu x và y là hai thuộc tính định danh thì ta có thể xác định x = y hoặc x ≠ y Ví dụ: thuộc tính nơi sinh, quê quán của một sinh viên trong cơ sở dữ liệu sinh viên. Độ đo phi tương tự giữa hai đối tượng x và y được xác định qua công thức sau: , trong đó m là số thuộc tính đối sánh tương ứng trùng nhau và p là tổng số các thuộc tính. Kiểu thuộc tính thứ tự (Ordinal) Là thuộc tính định danh có tính thứ tự, nhưng chúng không được định lượng. Nếu x và y là hai thuộc tính có thứ tự thì ta có thể xác định x = y hoặc x ≠ y hoặc x > y hoặc x < y. Ví dụ : thuộc tính xếp hạng kết quả thi đấu của một cuộc đua ôtô. Độ đo phi tương tự được tính thông qua các bước sau: Gọi f là một thuộc tính, giá trị của f ứng với đối tượng thứ i là xif. Giả sử f có Mf trạng thái có thứ tự: 1,2,…,Mf. Ta thay thế mỗi xif bởi giá trị tương ứng rif [1,Mf]. Vì mỗi thuộc tính f có thứ tự có số lượng các trạng thái khác nhau nên ta cần làm cho rif thuộc khoảng [0.0,1.0] để mỗi thuộc tính đều có cùng trọng số. Do đó rif được thay thế bởi Cuối cùng ta sử dụng công thức tính độ phi tương tự của thuộc tính khoảng với zif đại diện cho giá trị thuộc tính f của đối tượng thứ i Kiểu thuộc tính tỷ lệ (Ratio) Đây là thuộc tính khoảng nhưng được xác định một cách tương đối so với điểm mốc Ví dụ : thuộc tính chiều cao của một người, lấy điểm mốc là mặt đất chỗ người đó đang đứng, và chiều cao của điểm mốc là 0. Có nhiều cách để tính độ tương tự giữa các thuộc tính tỉ lệ. Một trong số đó là việc sử dụng công thức tính logarit để chuyển mỗi thuộc tính tỉ lệ xi về dạng thuộc tính khoảng yi = log(xi). Những kỹ thuật tiếp cận trong phân cụm dữ liệu Các kỹ thuật áp dụng để giải quyết vấn đề phân cụm dữ liệu đều hướng tới hai mục tiêu chung : Chất lượng của các cụm khám phá được và tốc độ thực hiện của thuật toán. Hiện nay, các kỹ phân cụm dữ liệu có thể phân loại theo các cách tiếp cận chính sau : Phân cụm phân hoạch Phương pháp phân cụm phân hoạch nhằm phân một tập dữ liệu có n phần tử cho trước thành k nhóm dữ liệu sao cho : mỗi phần tử dữ liệu chỉ thuộc về một nhóm dữ liệu và mỗi nhóm dữ liệu có tối thiểu ít nhất một phần tử dữ liệu. Các thuật toán phân hoạch dữ liệu có độ phức tạp rất lớn khi xác định nghiệm tối ưu toàn cục cho vấn đề PCDL, do nó phải tìm kiếm tất cả các cách phân hoạch có thể được. Chính vì vậy, trên thực tế người ta thường đi tìm giải pháp tối ưu cục bộ cho vấn đề này bằng cách sử dụng một hàm tiêu chuẩn để đánh giá chất lượng của các cụm cũng như để hướng dẫn cho quá trình tìm kiếm phân hoạch dữ liệu. Với chiến lược này, thông thường người ta bắt đầu khởi tạo một phân hoạch ban đầu cho tập dữ liệu theo phép ngẫu nhiên hoặc theo heuristic, và liên tục tinh chỉnh nó cho đến khi thu được một phân hoạch mong muốn, thoả mãn ràng buộc cho trước. Các thuật toán phân cụm phân hoạch cố gắng cải tiến tiêu chuẩn phân cụm, bằng cách tính các giá trị đo độ tương tự giữa các đối tượng dữ liệu và sắp xếp các giá trị này, sau đó thuật toán lựa chọn một giá trị trong dãy sắp xếp sao cho hàm tiêu chuẩn đạt giá trị tối thiểu. Như vậy, ý tưởng chính của thuật toán phân cụm phân hoạch tối ưu cục bộ là sử dụng chiến lược ăn tham (Greedy) để tìm kiếm nghiệm. Một số thuật toán phân cụm phân hoạch điển hình như k-means, PAM, CLARA, CLARANS,…sẽ được trình bày chi tiết ở chương sau. Phân cụm dữ liệu phân cấp Phân cụm phân cấp sắp xếp một tập dữ liệu đã cho thành một cấu trúc có dạng hình cây, cây phân cấp này được xây dựng theo kỹ thuật đệ quy. Cây phân cụm có thể được xây dựng theo hai phương pháp tổng quát : phương pháp trên xuống (Top down) và phương pháp dưới lên (Bottum up). Phương pháp “dưới lên” (Bottom up) : Phương pháp này bắt đầu với mỗi đối tượng được khởi tạo tương ứng với các cụm riêng biệt, sau đó tiến hành nhóm các đối tượng theo một độ đo tương tự (như khoảng cách giữa hai trung tâm của hai nhóm), quá trình này được thực hiện cho đến khi tất cả các nhóm được hòa nhập vào một nhóm (mức cao nhất của cây phân cấp) hoặc cho đến khi các điều kiện kết thúc thỏa mãn. Như vậy, cách tiếp cận này sử dụng chiến lược ăn tham trong quá trình phân cụm. Phương pháp “trên xuống” (Top Down) : Bắt đầu với trạng thái là tất cả các đối tượng được xếp trong cùng một cụm. Mỗi vòng lặp thành công, một cụm được tách thành các cụm nhỏ hơn theo giá trị của một phép đo độ tương tự nào đó cho đến khi mỗi đối tượng là một cụm, hoặc cho đến khi điều kiện dừng thỏa mãn. Cách tiếp cận này sử dụng chiến lược chia để trị trong quá trình phân cụm. Một số thuật toán phân cụm phân cấp điển hình như CURE, BIRCH, …sẽ được trình bày chi tiết ở trong chương sau. Thực tế áp dụng, có nhiều trường hợp người ta kết hợp cả hai phương pháp phân cụm phân hoạch và phương phân cụm phân cấp, nghĩa là kết quả thu được của phương pháp phân cấp có thể cải tiến thông quan bước phân cụm phân hoạch. Phân cụm phân hoạch và phân cụm phân cấp là hai phương pháp PCDL cổ điển, hiện nay đã có nhiều thuật toán cải tiến dựa trên hai phương pháp này đã được áp dụng phổ biến trong Data Mining. Phân cụm dữ liệu dựa trên mật độ Phương pháp này nhóm các đối tượng theo hàm mật độ xác định. Mật độ được định nghĩa như là số các đối tượng lân cận của một đối tượng dữ liệu theo một ngưỡng nào đó. Trong cách tiếp cận này, khi một cụm dữ liệu đã xác định thì nó tiếp tục được phát triển thêm các đối tượng dữ liệu mới miễn là số các đối tượng lân cận của các đối tượng này phải lớn hơn một ngưỡng đã được xác định trước. Phương pháp phân cụm dựa vào mật độ của các đối tượng để xác định các cụm dữ liệu có thể phát hiện ra các cụm dữ liệu với hình thù bất kỳ. Tuy vậy, việc xác định các tham số mật độ của thuật toán rất khó khăn, trong khi các tham số này lại có tác động rất lớn đến kết quả phân cụm dữ liệu. Hình 5 dưới đây là một minh hoạ về các cụm dữ liệu với các hình thù khác nhau dựa trên mật độ được khám phá từ 3 CSDL khác nhau. CSDL 3 CSDL 2 CSDL 1 Hình 2 : Một số hình dạng cụm dữ liệu khám phá được bởi kỹ thuật PCDL dựa trên mật độ Một số thuật toán PCDL dựa trên mật độ điển hình như DBSCAN, OPTICS, DENCLUE, …sẽ được trình bày chi tiết trong chương tiếp theo. Phân cụm dữ liệu dựa trên lưới Kỹ thuật phân cụm dựa trên mật độ không thích hợp với dữ liệu nhiều chiều, để giải quyết cho đòi hỏi này, người ta đã dử dụng phương pháp phân cụm dựa trên lưới. Đây là phương pháp dựa trên cấu trúc dữ liệu lưới để PCDL, phương pháp này chủ yếu tập trung áp dụng cho lớp dữ liệu không gian. Thí dụ như dữ liệu được biểu diễn dưới dạng cấu trúc hình học của đối tượng trong không gian cùng với các quan hệ, các thuộc tính, các hoạt động của chúng. Mục tiêu của phương pháp này là lượng hoá tập dữ liệu thành các ô (Cell), các cell này tạo thành cấu trúc dữ liệu lưới, sau đó các thao tác PCDL làm việc với các đối tượng trong từng Cell này. Cách tiếp cận dựa trên lưới này không di chuyển các đối tượng trong các cell mà xây dựng nhiều mức phân cấp của nhóm các đối tượng trong một cell. Trong ngữ cảnh này, phương pháp này gần giống với phương pháp phân cụm phân cấp nhưng chỉ có điều chúng không trộn các Cell. Do vậy các cụm không dựa trên độ đo khoảng cách (hay còn gọi là độ đo tương tự đối với các dữ liệu không gian) mà nó được quyết định bởi một tham số xác định trước. Ưu điểm của phương pháp PCDL dựa trên lưới là thời gian xử lý nhanh và độc lập với số đối tượng dữ liệu trong tập dữ liệu ban đầu, thay vào đó là chúng phụ thuộc vào số cell trong mỗi chiều của không gian lưới. Một thí dụ về cấu trúc dữ liệu lưới chứa các cell trong không gian như hình 6 sau : Mức 1 (mức cao nhất ) có thể chỉ chứa một Cell Cell mức i-1 có thể tương ứng với 4 cell của mức i Tầng 1 . . . . . Tầng i-1 Tầng i Hình 3 : Mô hình cấu trúc dữ liệu lưới Một số thuật toán PCDL dựa trên cấu trúc lưới điển hình như : STING, WAVECluster, CLIQUE,… Phân cụm dữ liệu dựa trên mô hình Phương pháp này cố gắng khám phá các phép xấp xỉ tốt của các tham số mô hình sao cho khớp với dữ liệu một cách tốt nhất. Chúng có thể sử dụng chiến lược phân cụm phân hoạch hoặc chiến lược phân cụm phân cấp, dựa trên cấu trúc hoặc mô hình mà chúng giả định về tập dữ liệu và cách mà chúng tinh chỉnh các mô hình này để nhận dạng ra các phân hoạch. Phương pháp PCDL dựa trên mô hình cố gắng khớp giữa dữ liệu với mô hình toán học, nó dựa trên giả định rằng dữ liệu được tạo ra bằng hỗn hợp phân phối xác suất cơ bản. Các thuật toán phân cụm dựa trên mô hình có hai tiếp cận chính : Mô hình thống kê và Mạng Nơ ron. Phương pháp này gần giống với phương pháp dựa trên mật độ, bởi vì chúng phát triển các cụm riêng biệt nhằm cải tiến các mô hình đã được xác định trước đó, nhưng đôi khi nó không bắt đầu với một số cụm cố định và không sử dụng cùng một khái niệm mật độ cho các cụm. Phân cụm dữ liệu có ràng buộc Sự phát triển của phân cụm dữ liệu không gian trên CSDL lớn đã cung cấp nhiều công cụ tiện lợi cho việc phân tích thông tin địa lý, tuy nhiên hầu hết các thuật toán này cung cấp rất ít cách thức cho người dùng để xác định các ràng buộc trong thế giới thực cần phải được thoả mãn trong quá trình PCDL. Để phân cụm dữ liệu không gian hiệu quả hơn, các nghiên cứu bổ sung cần được thực hiện để cung cấp cho người dùng khả năng kết hợp các ràng buộc trong thuật toán phân cụm. Thực tế, các phương pháp trên đã và đang được phát triển và áp dụng nhiều trong PCDL. Đến nay, đã có một số nhánh nghiên cứu được phát triển trên cơ sở của các phương pháp tiếp cận trong PCDL đã trình bày ở trên như sau : Phân cụm thống kê : Dựa trên các khái niệm phân tích thống kê, nhánh nghiên cứu này sử dụng các độ đo tương tự để phân hoạch các đối tượng, nhưng chúng chỉ áp dụng cho các dữ liệu có thuộc tính số. Phân cụm khái niệm : Các kỹ thuật phân cụm được phát triển áp dụng cho dữ liệu hạng mục, chúng phân cụm các đối tượng theo các khái niệm mà chúng xử lý. Phân cụm mờ : Sử dụng kỹ thuật mờ để PCDL, trong đó một đối tượng dữ liệu có thể thuộc vào nhiều cụm dữ liệu khác nhau. Các thuật toán thuộc loại này chỉ ra lược đồ phân cụm thích hợp với tất cả hoạt động đời sống hàng ngày, chúng chỉ xử lý các dữ liệu thực không chắc chắn. Thuật toán phân cụm mờ quan trọng nhất là thuật toán FCM (Fuzzy c-means) . Phân cụm mạng Kohonen : loại phân cụm này dựa trên khái niệm của các mạng nơ ron. Mạng Kohnen có tầng nơ ron vào và các tầng nơ ron ra. Mỗi nơ ron của tầng vào tương ứng với mỗi thuộc tính của bản ghi, mỗi một nơ ron vào kết nối với tất cả các nơ ron của tầng ra. Mỗi liên kết được gắn liền với một trọng số nhằm xác định vị trí của nơ ron ra tương ứng. Tóm lại, các kỹ thuật PCDL trình bày ở trên đã được sử dụng rộng rãi trong thực tế, thế nhưng hầu hết chúng chỉ nhằm áp dụng cho tập dữ liệu với cùng một kiểu thuộc tính. Vì vậy, việc PCDL trên tập dữ liệu có kiểu hỗn hợp là một vấn đề đặt ra trong Data Mining trong giai đoạn hiện nay. Phần nội dung tiếp theo của luận văn sẽ trình bày tóm lược về các yêu cầu cơ bản làm tiêu chí cho việc lựa chọn, đánh giá kết quả cho các phương pháp phân cụm PCDL. Một số ứng dụng của phân cụm dữ liệu Phân cụm dữ liệu được ứng dụng vào rất nhiều lĩnh vực như thương mại, sinh học, phân tích dữ liệu không gian, lập quy hoạch đô thị, nghiên cứu trái đất, địa lý, Web,… Trong thương mại, phân cụm có thể giúp các thương gia tìm kiếm ra các nhóm khách hàng quan trọng cũng như phân loại khách hàng thành từng nhóm khách hàng để từ đó có chiến lược kinh doanh hợp lý. Trong sinh học, phân cụm được dùng để xác định các loài sinh vật cũng như khám phá ra các kiểu gene quý hiếm. Trong phân tích dữ liệu không gian: Do sự đồ sộ của dữ liệu không gian như các hình ảnh vệ tinh hoặc hệ thống thông tin địa lý ,… làm cho người dùng khó khăn trong phân tích và xử lý chúng. Phân cụm có thể giúp chúng ta tự động nhận dạng và chiết xuất các đặc tính trong cơ sở dữ liệu không gian. Trong lập quy hoạch đô thị, phân cụm giúp cho việc nhận dạng cá nhóm nhà theo kiến trúc và vị trí địa lý để lập quy hoạch đô thị hợp lý. Trong nghiên cứu trái đất, phân cụm hỗ trợ việc theo dõi các biến động của trái đất như núi lửa, động đất,… để đưa ra cảnh báo cho chúng ta. PHÂN CỤM DỮ LIỆU KHÔNG GIÁM SÁT Do sự phát triển không ngừng của phương pháp phân cụm dữ liệu lên hiện nay có rất nhiều phương pháp phân cụm dữ liệu khác nhau. Các thuật toán phân cụm dữ liệu được chia thành các nhóm sau đây : Phương pháp phân hoạch (pratition), Phương pháp phân cấp (hierarchical), Phương pháp dựa trên mật độ (density-based), Phương pháp dựa trên lưới (grid-based) Phương pháp dựa trên mô hình (model-based). Trong phạm vi tìm hiểu của đề tài này, em xin trình bày hai phương pháp phân cụm phân hoạch và phân cụm phân cấp, làm cơ sở để trình bày một số phương pháp phân cụm nửa giám sát. Phương pháp phân hoạch Trong phân cụm phân hoạch, bài toán đặt ra như sau:cho là tập N đối tượng dữ liệu ta muốn phân cụm, trong đó . Thuật toán phân cụm có nhiệm vụ chia nhỏ tập dữ liệu thành K phân hoạch ( K là giá trị cho trước) mà mỗi phân hoạch đại diện cho một cụm. Các cụm được hình thành trên cơ sở làm tối ưu giá trị hàm mục tiêu (thường là hàm đo độ tương tự) để sao cho các đối tượng trong một cụm là tương tự nhau trong khi các đối tượng trong các cụm khác nhau thì phi tương tự nhau. Có rất nhiều thuật toán phân cụm phân hoạch như : K-Means, K-Medoids, PAM (Partition Around Medoids), CLARA (Clustering Large Applications), CLARANS (Clustering Large Applications based on RAndomized Search), CLASA (Clustering Large Applications based on Simulated Annealing).Ở đây em xin trình bày về hai thuật toán K-Means và K-Medoids. Trong K-Means mỗi cụm được đại diện bởi giá trị tâm (mean) của các đối tượng trong cụm đó. Trong K-Medoids mỗi cụm được đại diện bởi một trong các đối tượng gần tâm cụm nhất. Thuật toán K-Means K-Means lặp lại nhiều lần quá trình bố trí lại vị trí của đối tượng dữ liệu để phân hoạch một tập dữ liệu thành K cụm và cực tiểu địa phương giá trị bình phương trung bình khoảng cách giữa các các đối tượng tới tâm cụm của nó. Cụ thể hơn, với tập dữ liệu , thuật toán K-Means tạo ra K phân hoạch của sao cho nếu đại diện cho K tâm thì hàm mục tiêu sau: được cực tiểu địa phương. Thuật toán: K-Means. Input: - Tập các đối tượng dữ liệu - Số lượng cụm: K Output: K phân hoạch tách rời: của sao cho hàm mục tiêu được tối ưu. Các bước: Khởi tạo các cụm: các tâm ban đầu được chọn ngẫu nhiên Lặp cho tới khi hội tụ Gán cụm: Gán mỗi đối tượng dữ liệu x vào cụm h* (tức là tập ) với h* = argmin Ước lượng tâm: t t+1 Đánh giá thuật toán K-Means Ưu điểm: K-Means [1] là có độ phức tạp tính toán nhỏ O(NKt). Nhược điểm: K-Means 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. K-Means không khắc phục được nhiễu và giá trị K được xác định bởi người dùng. Thuật toán K-Medoids Thuật toán K-Medoids có khả năng khắc phục được nhiễu bằng cách chọn đối tượng ở gần tâm cụm nhất làm đại diện cho cụm đó (medoid). Thuật toán K-Medoids được thực hiện qua các bước sau: Chọn K đối tượng bất kỳ trong N đối tượng ban đầu làm các medoid ban đầu Lặp cho tới khi hội tụ Gán mỗi đối tượng còn lại vào cụm có medoid gần nhất với nó Thay thế medoid hiện tại bằng một đối tượng không phải là medoid sao cho chất lượng phân cụm được cải thiện (Chất lượng được đánh giá sử dụng hàm chi phí, hàm tính độ phi tương tự giữa một đối tượng và medoid của cụm chứa đối tượng đó). K-Medoids tỏ ra hiệu quả hơn K-Means trong trường hợp dữ liệu có nhiễu hoặc đối tượng ngoại lai (Outlier) . Nhưng so với K-Means thì K-Medoids có độ phức tạp tính toán lớn hơn. Cả hai thuật toán trên đề có nhược điểm chung là số lượng cụm K được cung cấp bởi người dùng. Phương pháp phân cấp Trong phân cụm phân cấp, tập dữ liệu được tổ chức thành một cây mà mỗi đỉnh của nó là một cụm. Phân cụm phân cấp được chia thành hai phương pháp là : top-down và bottom-up. Phương pháp bottom-up: Phương pháp này được thiết kế theo chiến lược từ dưới lên (bottom-up). Phương pháp này bắt đầu với mỗi đối tượng được khởi tạo tương ứng với các cụm riêng biệt, sau đó ghép những cụm này thành các cụm lớn hơn cho tới khi tất cả đối tượng đều nằm trong một cụm duy nhất hoặc cho tối khi gặp điều kiện dừng. Phương pháp top-down: Phương pháp này được thiết kế theo chiến lược trên xuống (top-down), nó thực hiện ngược lại so với phương pháp bottom-up, tức là chia nhỏ cụm lớn thành các cụm nhỏ hơn cho tới khi mỗi đối tượng được chứa trong một cụm riêng lẻ hoặc gặp điều kiện dừng như: đạt đến số lượng các cụm cho phép, hoặc khoảng cách giữa hai cụm gần nhất đã lớn hơn khoảng cách ngưỡng. bottom-up step 0 step 1 step 3 step 2 step 4 step 4 step 3 step 1 step 2 step 0 Top-down a b c d e ab de cde abcde Hình 4: Phân cụm phân cấp Top-down và Bottom-up Sau đây em xin trình bày hai thuật toán điển hình của phương pháp phân cụm phân cấp đó là: CURE (Clustering Using REpresentatives), BIRCH (Balanced Interative Reducing and Clustering Hierarchies) Thuật toán CURE CURE là thuật toán sử dụng chiến lược bottom-up của phương pháp phân cụm phân cấp. Khác với hai thuật toán phân cụm phân hoách ở trên thuật toán CURE sử dụng nhiều đối tượng để biểu diễn cho một cụm thay vì sử dụng các trọng tâm hay đối tượng tâm. Các đối tượng đại diện của một cụm ban đầu được chọn rải rác đều ở các vị trí khác nhau, sau đó chúng được di chuyển bằng cách co lại theo một tỉ lệ nhất định nào đó. Khi hai cụm có cặp đối tượng đại diện gần nhất sẽ được trộn lại thành một cụm. Các bước thực hiện của thuật toán CURE: Chọn một mẫu ngẫu nhiên S từ tập dữ liệu ban đầu Phân hoạch mẫu S này thành các nhóm dữ liệu có kích thước bằng nhau Tiến hành phân cụm riêng rẽ cho mỗi nhóm Loại bỏ các đối tượng ngoại lai bằng việc lấy mẫu ngẫu nhiên. Nếu một cụm tăng trưởng quá chậm thì loại bỏ nó. Phân cụm cho các cụm riêng biệt: Các đối tượng đại diện được di chuyển về phía tâm của cụm mới hình thành. Các đối tượng này sẽ mô tả hình dạng cụm đó. Đánh dấu dữ liệu với các nhãn cụm tương ứng. Hình ảnh dưới đây là thí dụ về các dạng và kích thước cụm dữ liệu được khám phá bởi CURE : Hình 5 : Các cụm dữ liệu được khám phá bởi CURE Đánh giá thuật toán CURE Ưu điểm: Bằng cách sử dụng trên một đại diện cho một cụm, CURE có khả năng khám phá được các cụm có hình thù và kích thước bất kỳ trong tập dữ liệu lớn. Việc co các đối tượng đại diện có tác dụng làm giảm tác động của các đối tượng ngoại lai. Do đó CURE có thể xử lý tốt các đối tượng ngoại lai. Tốc độ thực hiện của CURE nhanh O(N). Nhược điểm: CURE là dễ bị ảnh hưởng bởi các tham số cho bởi người dùng như cỡ mẫu, số cụm mong muốn. Thuật toán BIRCH BIRCH là thuật toán phân cụm phân cấp sử dụng chiến lược Top-down. Tư tưởng của BIRCH là không lưu toàn bộ đối tượng dữ liệu của các cụm trong bộ nhớ mà chỉ lưu các tham số thống kê. Đối với mỗi cụm dữ liệu, BIRCH chỉ lưu bộ ba (N, LS, SS), trong đó N là số đối tượng trong cụm, LS là tổng các giá trị thuộc tính của các đối tượng trong cụm, và SS là tổng bình phương của các giá trị thuộc tính của các đối tượng trong cụm. Bộ ba này được gọi là đặc trưng cụm (Cluster Feature- CF). Khi đó các cụm trong tập dữ liệu ban đầu sẽ được cho dưới dạng một cây CF. Người ta đã chứng minh được rằng các đại lượng thống kê như độ đo có thể xác định từ cây CF. Hình 4 sau đây mô tả cấu trúc cây CF. CF1 CF2 ………. CFk Gốc ………. Lớp đầu . . . . . ...... ...... ...... Hình 6: Cấu trúc cây CF CF11 CF12 ………. CF1k Cây CF là một cây cân bằng nhằm lưu các đặc trưng của cụm. Một cây CF chứa các nút cha và lá, nút cha chứa các nút con, nút lá không có con. Nút cha lưu giữ tổng các đặc trưng cụm của các nút con của nó. Cây CF có hai đặc trưng cơ bản sau: Yếu tố nhánh (Branching Factor- B) nhằm xác định số lượng nút con tối đa trong một nút cha. Ngưỡng (Threshold- T) nhằm xác định khoảng cách tối đa giữa bất kỳ một cặp đối tượng trong nút lá của cây CF, khoảng cách này chính là đường kính của các cụm con được lưu lại ở nút lá. Thuật toán BIRCH được thực hiện qua hai giai đoạn sau: BIRCH duyệt tất cả các đối tượng trong tập dữ liệu và xây dựng một cây CF ban đầu. Ở giai đoạn này các đối tượng lần lượt được chèn vào nút lá gần nhất của cây CF (nút lá của cây đóng vai trò cụm con), sau khi chèn xong thì mọi nút trên cây CF được cập nhật thông tin. Nếu đường kính của cụm con sau khi chèn lớn hơn ngưỡng T thì nút được tách. Quá trình này được lặp đi lặp lại cho đến khi tất cả các đối tượng đều được chèn vào cây CF. BIRCH chọn một thuật toán phân cụm bất kỳ (như thuật toán phân hoạch) để thực hiện phân cụm cho tất các các nút lá. Đánh giá thuật toán BIRCH. Ưu điểm: Nhờ sử dụng cây CF, BIRCH có tốc độ phân cụm nhanh O(N) (vì BIRCH chỉ duyệt toàn bộ dữ liệu một lần). BIRCH áp dụng được đối với tập dữ liệu lớn, đặc biệt nó phù hợp với các tập dữ liệu gia tăng theo thời gian. Nhược điểm: Chất lượng cụm được khám phá bởi BIRCH là không tốt. Ngoài ra tham số ngưỡng T ảnh hưởng lớn đến kích thước và tính tự nhiên của cụm. Thuật toán k-tâm: Thuật toán k-tâm mở rộng thuật toán k –means để làm việc với tập dữ liệu hỗn hợp gồm: thuộc tính số, thuộc tính định danh và thuộc tính có thứ tự[7]. Cơ sở toán học của thuật toán k-tâm Trong đối tượng dữ liệu hỗn hợp, miền giá trị của các thuộc tính Aj có thể là tập số thực, định danh hay là tập có thứ tự. Giả sử ta có tập dữ liệu hỗn hợp X có n đối tượng, mỗi đối tượng có m thuộc tính. Các kiểu thuộc tính có thể là: thuộc tính số, thuộc tính định danh, thuộc tính có thứ tự. Các đối tượng có kiểu hỗn hợp Đối tượng O được gọi là đối tượng có kiểu hỗn hợp nếu nó chứa cả thuộc tính số và thuộc tính hạng mục, ký hiệu là : . Trong đó p phần tử đầu tiên là các giá trị số và các phần tử còn lại là các giá trị hạng mục. Cho tập X={X1, X2,..,Xn} là n đối tượng có kiểu hỗn hợp. Đối tượng Xi =[xi1, xi2,.., xim] trong đó : Xi = Xk nếu xij = xkj với Quan hệ Xi = Xk không có nghĩa là Xi và Xk là cùng chỉ một đối tượng trong tập dữ liệu thực. Thí dụ như hai khách hàng tuy có cùng các giá trị thuộc tính về sản phẩm đã mua nhưng là khách hàng hoàn toàn khác nhau, họ chỉ phân biệt nhau thông qua chỉ số định danh ID trong cơ sở dữ liệu. Mô hình dữ liệu hỗn hợp này được sử dụng cho phân cụm dữ liệu của thuật toán k-prototypes. Độ đo tương tự Giả sử DOM(Aj) là miền giá trị của thuộc tính Aj ta có các khái niệm: Thuộc tính đinh danh: Aj được gọi là thuộc tính định danh nếu DOM(Aj) là tập không có thứ tự tức là "a,b Î DOM(Aj) hoặc a=b hay a¹b. Thuộc tính số: Aj là thuộc tính số nếu DOM(Aj) là tập số thực. Thuộc tính có thứ tự: nếu DOM(Aj) là tập hữu hạn và có thứ tự hoàn toàn. Công thức tính khoảng cách giữa hai đối tượng Giả sử ta có x,yÎDOM(Aj), hàm dj(x,y) được xác định như sau: Nếu Aj là thuộc tính số thì dj được dj(x,y)=úx-yú (9) Nếu Aj là thuộc tính thứ tự và DOM(Aj) = với , ta lấy một hàm đơn điệu fj:DOM(Aj)→ [0,1] sao cho (Hàm này có thể là : ) . Khi đó dj(x,y)= │fj(x)-fj(y) │. (10) Nếu Aj là dữ liệu định danh thì dj(x,y)= (11) Vậy khoảng cách d(x,y) giữa hai đối tượng x = (x1,...,xn) và y = (y1,...,yn) được tính bởi công thức: (12) trong đó các dj(xj,yj) được tính theo các công thức (9-11) và rj là các trọng số dương cho bởi các chuyên gia. Với định nghĩa trên, ta luôn có thể xem các thuộc tính thứ tự có miền giá trị là đoạn [0,1] (các giá trị trên thuộc tính này của D là tập con) và nó cũng được xem là thuộc tính số khi không xảy ra nhầm lẫn. Tìm mode của tập dữ liệu Định lý : Nếu xem miền giá trị của các thuộc tính có thứ tự là đoạn [0,1] và mode của tập hợp xác định như đã nói ở trên thì với mọi tập dữ liệu hỗn hợp C , mode(C) cực tiểu hàm: E(x)= (13). trong đó x là phần tử của quan hệ r trên lược đồ quan hệ R={A1,...,An}. Thuật toán K-Tâm Thuật toán k-tâm phân cụm dữ liệu hỗn hợp là mở rộng thuật toán k-mean khi đã mở rộng các miền giá trị của thuộc tính có thứ tự và xác định khoảng cách giữa các đối tượng như đã nêu. Thuật toán được đặc tả như sau: Proceduce k-tâm Begin Chọn các trọng số , các hàm fj ,xác định k. Chọn k phần tử ban đầu của D làm tâm các cụm Xếp mỗi x D vào cụm Cj mà nó gần tâm nhất; For j=1,...,k do ; Repeat Phân bố lại cụm theo tâm mới// như k-mean; Cập nhật lại tâm cho các cụm // nhờ tính mode Until các cụm không đổi; Xác định các cụm End Đặc tả thủ tục k-tâm Dễ dàng nhận được định lý sau về tính hội tụ của thuật toán. Sự hội tụ của thuật toán Thuật toán trên hội tụ sau một số hữu hạn bước lặp tới điểm cực tiểu địa phương của hàm P: (14) Nhận xét 1) Khi thuật toán kết thúc, các đối tượng tâm có thể không thuộc tập X. Để tìm phần tử đại diện cho mỗi cụm, ta lấy phần tử thuộc cụm gần với tâm của nó nhất. 2) Như đã nói trong định lý, thuật toán chỉ hội tụ tới điểm cực tiểu địa phương của P. PHÂN CỤM DỮ LIỆU NỬA GIÁM SÁT Phân cụm nửa giám sát là phương pháp sử dụng các thông tin bổ trợ để hướng dẫn cho quá trình phân cụm. Các thông tin bổ trợ có thể được cho dưới dạng tập các cặp ràng buộc hoặc một tập nhỏ một số dữ liệu được dán nhãn. Công việc xác định những tập ràng buộc hay những tập dữ liệu được dán nhãn được thực hiện bởi người phân cụm. Việc xác định này tuỳ thuộc vào kinh nghiệm của người phân cụm hoặc có thể dựa vào các tiêu chuẩn khác nhau tuỳ theo mục đích của việc phân cụm. Hiện nay có hai hương tiếp cận phương pháp phân cụm nửa giám sát đó là: Phương pháp dựa trên tìm kiếm(search-based ) Trong hướng tiếp cận này, chính thuật toán phân cụm đã được sửa đổi nhằm tìm kiếm một phân hoạch thích hợp thông qua việc sử dụng các thông tin bổ trợ. Trong phần sau em xin trình bày ba thuật: COP-KMeans, Seeded-KMeans, Constrained-KMeans là các thuật toán điển hình của phương pháp dựa trên tìm kiếm. Phương pháp dựa trên độ đo tương tự(similarity-based). Trong phương pháp này, người ta sử dụng một thuật toán phân cụm (có sử dụng độ đo tương tự) hiện có. Tuy nhiên, độ đo đầu tiên được huấn luyện để thoả mãn các thông tin bổ trợ. Các độ đo được dùng có thể kể đến như: khoảng cách Euclide, khoảng cách Mahattan,… Thuật toán COP-KMeans Trong thuật toán COP-KMeans[1] (Wagstaff đề xuất năm 2001), các thông tin bổ trợ được cung cấp dưới dạng một tập các ràng buộc Must-link và cannot-link. Trong đó : Must-link: hai đối tượng dữ liệu phải cùng nằm trong một cụm Cannot-link: hai đối tượng dữ liệu phải khác cụm với nhau. Các ràng buộc này được áp dụng vào trong suốt quá trình phân cụm. Nhằm điều hướng quá trình phân cụm để đạt được kết quả phân cụm theo ý muốn. Thuật toán COP-Kmeans được thực hiện như sau : Thuật toán: COP-KMeans. Input: - Tập các đối tượng dữ liệu Số lượng cụm: K Tập ràng buộc must-link và cannot-link Output: K phân hoạch tách rời: của sao cho hàm mục tiêu được tối ưu. Các bước: Khởi tạo các cụm: các tâm ban đầu được chọn ngẫu nhiên sao cho không vi phạm ràng buộc đã cho. 2. Lặp cho tới khi hội tụ Gán cụm : gán mỗi đối tượng dữ liệu vào trong cụm gần nhất sao cho không vi phạm ràng buộc Ước lượng tâm: cập nhật lại tâm là trung bình của tất cả đối tượng nằm trong cụm của tâm đó. t t+1 Phân cụm nửa giám sát dựa trên tập tập dữ liệu được dán nhãn Trong phân cụm nửa giám sát, người ta sử dụng dữ liệu được dán nhãn hoặc hình thành nên các cụm giống nhằm khởi tạo cho một thuật toán phân cụm hoặc để sinh ra các ràng buộc nhằm dẫn dắt quá trình phân cụm. Cho một tập dữ liệu ban đầu , gọi là tập giống (tập dữ liệu đã dán nhãn) trong đó với mỗi đối tượng xj ÎS người dùng cung cấp cho nó một phân hoạch (cụm) . Giả sử rằng bất kể cụm nào trong X cũng có ít nhất một đối tượng xj thuộc tập giống. Người ta phân hoạch tập giống S thành K cụm giống tách rời , do đó mọi đối tượng xj ÎSh đều nằm trong cụm tương ứng. Nhiệm vụ cần giải quyết là từ K cụm giống chúng ta phải phân hoạch tập dữ liệu X thành K phân hoạch tách rời . Thuật toán Seeded-KMeans Thuật toán Seeded-KMeans sử dụng các cụm giống Sh để khởi tạo cho thuật toán K-Means. Do vậy thay vì phải khởi tạo K cụm ngẫu nhiên chúng ta khởi tạo K cụm từ tập giống. Với tập giống là những phần tử đã được dán nhãn, do người thực hiện phân cụm xác định từ kinh nghiệm hoặc từ những tiêu chuẩn cụ thể đối với từng mục đích phân cụm. Thuật toán: Seeded-KMeans. Input: - Tập các đối tượng dữ liệu Số lượng cụm: K Tập giống Output: K phân hoạch tách rời: của sao cho hàm mục tiêu được tối ưu. Các bước: Khởi tạo các cụm: , với h = 1,...K; t¬0. 2 Lặp cho tới khi hội tụ 2.1 Gán cụm: Gán mỗi đối tượng dữ liệu x vào cụm h* (tức là tập ) với h* = argmin 2.2 Ước lượng tâm: t t+1 Thuật toán Seeded-Kmeans bằng cách khởi tạo K cụm từ tập giống đã giúp cho người dùng có thể can thiệp và điều chỉnh quá trình phân cụm dữ liệu nhằm đạt được một kết quả phân cụm theo ý muốn của mình một cách nhanh nhất. Đánh giá Trong bài Tốt nghiệp này em đã tiến hành cài đặt thuật toán Seeded-Kmeans và sau khi chạy thử chương trình. Kết quả thu được sau mỗi lần chạy thử với các tập giống lựa chọn là khác nhau thu được những kết quả khác nhau. Nếu chọn tập giống tốt có thể thu được một kết quả phân cụm tốt và với một thời gian rất ngắn. Nếu chọn một tập giống không tốt thì thời gian phân cụm sẽ rất lâu và kết quả phân cụm thu được là không tôt. Thuật toán Constrained-KMeans Thuật toán Constrained-KMeans dùng các cụm giống như những ràng buộc để dẫn dắt quá trình phân cụm của K-Means. Nhưng trong các bước sau, mọi đối tượng thuộc tập giống S không được bố trí lại, mà chỉ có các đối tượng không thuộc tập giống mới được bố trí lại. Thuật toán: Constrained-KMeans. Input: - Tập các đối tượng dữ liệu Số lượng cụm: K Tập giống Output: K phân hoạch tách rời: của sao cho hàm mục tiêu được tối ưu. Các bước: Khởi tạo các cụm: , với h = 1,...K; t¬0. 2 Lặp cho tới khi hội tụ 2.1 Gán cụm: - Với mỗi , nếu thì gán x vào cụm h -Với mỗi gán x vào cụm h* , với h* = argmin 2.2 Ước lượng tâm: t t+1 * Nhận xét Các Thuật toán dựa trên tập giống Seeded-KMeans, Constrained-KMeans do Basu đề xuất vào năm 2002 và COP-KMeans do Wagstaff đề xuất năm 2001 là các thuật toán điển hình hiện nay về phân cụm nửa giám sát. Các thông tin bổ trợ đều do người dùng cung cấp. Vậy phân cụm nửa giám sát thực chất là quá trình kết hợp giữa người và máy để làm tăng chất lượng phân cụm. Thuật toán COP-KMeans và Constrained-KMeans nói chung có bản chất giống nhau vì thông tin bổ trợ mà chúng sử dụng đều là tập ràng buộc giữa các cặp đối tượng dữ liệu. Chúng chỉ khác nhau ở chỗ ràng buộc mà Constrained-KMeans dùng được lấy ra từ tập giống còn ràng buộc mà COP-KMeans dùng là một tập các ràng buộc giữa các cặp đối tượng bất kỳ trong tập dữ liệu lớn. Do vậy, tập ràng buộc dùng trong Constrained-KMeans thường đầy đủ và chặt hơn tập ràng buộc dùng trong COP-KMeans. Thuật toán K-Means phân cấp Ba thuật toán phân cụm nửa giám sát: Seeded-KMeans, Constrained-Kmeans, COP-KMeans đạt hiệu quả kém trước bài toán phân cụm mà số lượng cụm chưa được xác định một cách chính xác. Chúng ta có thể gặp vấn đề này rất nhiều trong thực tế, ví dụ: bài toán phân cụm một dữ liệu gồm các đối tượng sinh viên trong một lớp: nếu ta phân loại sinh viên theo giới tính thì số cụm cần phân K = 2 là một giá trị chắc chắn, tuy nhiên nếu ta phân loại sinh viên theo quê quán thì số cụm K cần phân là mập mờ. Sau đây em xin trình bày bài toán K-Means phân cấp, một thuật toán được nêu ra nhằm giải quyết vấn đề trên. Thuật toán K-Means phân cấp do hai tác giả: Hoàng Xuân Huấn và Nguyễn Trung Thông nghiên cứu và đề xuất. Đây có thể nói là một thuật toán cải tiến của Seeded-Kmeans bằng cách kết hợp thuật toán Seeded-Kmeans với phương pháp phân cụm phân cấp. Một tập dữ liệu và tập giống , trong đó số lượng cụm K được đặt ra cho bài toán phân cụm là một giá trị không được xác định chắc chắn. Thuật toán K-Means phân cấp có nhiệm vụ dự đoán một giá trị K hợp lý nhất mà không làm đỗ vỡ cấu trúc cụm. Số cụm K được tìm trong khoảng [Kmin, Kmax]. Để tìm K chúng ta dùng mô hình phân cấp (Top-down) để tiến hành tách cụm và dự đoán K. Mà không dùng phương pháp lặp lại nhiều lần thuật toán SeededK-Means vì nó sẽ làm cho cấu trúc cụm bị xáo trộn và ta không biết khi nào thì giá trị K là tốt nhất. Qua các thí nghiệm hai tác giả đã chứng minh được rằng phương pháp K-Means phân cấp có chất lượng tốt hơn phương pháp SeededK-Means cả về phương diện tìm số cụm K, cả về cấu trúc cụm. Thuật toán K-Means phân cấp lấy Kmin bằng số cụm giống (số loại nhãn lớp của tập giống) bởi vì trong phân cụm nửa giám sát dựa trên tập giống thì tập giống đó chỉ là một phần thông tin nhỏ nằm trong tập dữ liệu lớn X cần phân cụm, do vậy số cụm giống luôn là giá trị nhỏ nhất trong các giá trị có thể có của số cụm K cần phân hoạch từ X. Kmax được cung cấp bởi người dùng và làm ngưỡng của điều kiện dừng cho thuật toán K-Means phân cấp.Và qua thí nghiệm hai tác giả đã chứng minh được rằng việc xác định Kmax không ảnh hưởng nhiều đến chất lượng của thuật toán K-Means phân cấp, và khi Kmax đạt đến một giá trị nhất định thì số cụm K dự đoán không thay đổi nữa. Thuật toán K-Means phân cấp gồm 3 bước chính sau: Bước1 : Chạy thuật toán Seeded-KMeans để khởi ra Kmin cụm ban đầu (Kmin là số cụm giống) Bước 2: Với mỗi cụm trong tập cụm hiện thời tiến hành tách đôi thông qua mô hình phân cấp top-down và tiêu chuẩn BIC. Bước 3: Lặp lại bước 2 cho đến khi BIC tổng thể (Total_BIC) không đổi hoặc số cụm hiện tại lớn hơn hoặc bằng Kmax. Hình 8: Dùng 2-KMeans để chia các cụm cha thành hai cụm con Hình 7: Seeded-KMeans khởi tạo 3 cụm ban đầu Hình 10: Kết quả có 4 cụm Hình 9: Áp dụng tiêu chuẩn BIC Thuật toán: K-Means phân cấp Input: - Tập các đối tượng dữ liệu Số lượng cụm tối đa Kmax Tập giống Output: K phân hoạch tách rời: của sao cho hàm mục tiêu được tối ưu. Các bước: 1. Khởi tạo các cụm: , với h = 1,...Kmin; t¬0. 2. Lặp cho tới khi hoàn thành 2.1 Lặp cho tới khi hội tụ 2.1.1 Gán cụm: Gán mỗi đối tượng dữ liệu x vào cụm h* với h* = argmin 2.1.2 Ước lượng tâm: 2.1.3 t t+1 2.2 Cập nhật giá trị BIC tổng thể (tất cả các cụm): Total_BIC 2.3 Với mỗi cụm có tâm 2.3.1 Chạy thuật toán KMeans để tách cụm h thành 2 cụm con h1 và h2. 2.3.2 Nếu (BIC(h1,h2) > BIC (h)) và (Tổng số tâm mới < = Tổng số tâm hiện tại) ® Quyết định tách + Cập nhật các tâm mới New_centers. 2.4 Tính giá trị BIC tổng thể mới trên các cụm mới: New_Total_BIC 2.5 Nếu New_Total_BIC> Total_BIC ® cập nhật các tâm cũ = New_centers 2.6 Nếu: Tổng số cụm (tâm) mới > = Kmax hoặc Tổng số cụm mới = tổng số cụm hiện thời: à hoàn thành * Tiêu chuẩn BIC (Bayesian Information Criterion) Cho một tập dữ liệu và tập hợp các mô hình khác nhau. Với thuật toán K-Means phân cấp thì mỗi ứng với một số lượng cụm K khác nhau. Nhiệm vụ đặt ra là phải chọn mô hình tốt nhất trong các mô hình đó. Để đánh giá mô hình Mi người ta dùng tiêu chuẩn BIC được xác đinh như sau : Trong đó: Mi là mô hình thứ i cần tính giá trị BIC pi là số lượng tham số trong mô hình Mi N là cỡ của tập dữ liệu X (số đối tượng trong tập dữ liệu) là likelihood của tập dữ liệu X theo mô hình thứ i tại điểm cực đại likelihood . Công thức (2) cho thấy BIC gồm 2 thành phần: và . Như chúng ta đã biết, sự phức tạp (complexity) của một mô hình càng lớn khi số lượng tham số của mô hình đó càng tăng. Do đó thành phần phản ánh sự phức tạp của mô hình và sự phức tạp đó tăng tuyến tính theo số lượng tham số (vì N là không đổi). Trong khi đó thành phần đánh giá chất lượng bố trí (phù hợp) của các đối tượng dữ liệu trong mô hình . Như vậy BIC phản ánh tính đơn giản của một mô hình và sự bố trí phù hợp các đối tượng dữ liệu trong mô hình đó. Khi đó mô hình được xem là tốt nhất nếu nó có giá trị lớn nhất. Trong K-Means phân cấp, tiêu chuẩn BIC được dùng ở hai công đoạn: Chọn mô hình cha hoặc mô hình con; Chọn mô hình chứa các cụm cũ hay mô hình chứa các cụm mới (đây là một điều kiện dừng thuật toán). GIỚI THIỆU VỀ NGÔN NGỮ VB 6.0 Ngôn ngữ lập trình Visual Basic 6.0 là một công cụ phát triển phần mềm. Visual Basic gắn liền với khái niệm lập trình trực quan (Visual), có nghĩa là khi thiết kế chương trình, ta nhìn thấy ngay kết quả qua từng thao tác và giao diện khi chương trình thực hiện. Đây là thuận lợi lớn so với các ngôn ngữ lập trình khác, Visual Basic cho phép ta chỉnh sửa đơn giản, nhanh chóng màu sắc, kích thước, hình dáng của các đối tượng có mặt trong ứng dụng. Một khả năng khác của Visual Basic chính là khả năng kết hợp các thư viện liên kết động DLL (Dynamic Link Library). DLL chính là phần mở rộng cho Visual Basic tức là khi xây dựng một ứng dụng nào đó có một số yêu cầu mà Visual Basic chưa đáp ứng đủ, ta viết thêm DLL phụ trợ. Khi viết chương trình bằng Visual Basic, chúng ta phải qua hai bước: - Thiết kế giao diện (Visual Programming) - Viết lệnh (Code Programming) Cấu trúc một đề án (Project) Một đề án ( project .VBP) bao gồm: + Các form (.frm): dùng để cập nhật dữ liệu cho cơ sở dữ liệu (nhập, sửa, xoá tìm kiếm, xử lý tính toán dữ liệu). + Các Report : được lưu trữ dưới dạng tên (.dsr) : dùng để in ấn các báo cáo. + Các thiết kế : (.DSR) Designer Data Enviroment: tạo kết nối tới cơ sở dữ liệu Data Report : Tạo các báo cáo + Các Module (.bas) : Dùng để chứa các hàm, các thủ tục. Khi đó trong tất cả mọi nơi của chương trình cho phép sử dụng các hàm thủ tục vừa lập trong Module. + Các Class Modull (.cls): tạo ra các lớp. + Các User control (.ctr): Cho phép tạo ra các điều khiển riêng của người sử dụng. Một số các điều khiển Data Control: Kết nối với cơ sở dữ liệu tại chỗ bao gồm các thuộc tính Name, DataName, Connect, Database Name, Read only, Recordset Type, Record Source.... Các phương thức (Method): Khi điều khiển Data đã kết nối được thành công với CSDL thì việc xử lý dữ liệu được thực hiện nhò các phương thức sau: Thêm bản ghi mới, Xoá bản ghi, Lưu trữ bản ghi, Sửa chữa bản ghi, Di chuyển bản ghi ,Đếm số bản ghi, Kiểm tra đầu cuối Điều khiển DBGird : Dùng để hiển thị dữ liệu dưới dạng bảng của CSDL đã được kết nối bằng điều khiển Data. Một số các thuộc tính: Name, Allow AddNew, Allow Arrows, Data Source. Điều khiển Data Grid: Dùng để hiển thị dữ liệu dưới dạng bảng của cơ sở dữ liệu được kết nối bằng điều khiển ADODB ( Active Data Object Data Control) và nó thuộc mô hình ADO. Các thuộc tính của nó giống như các thuộc tính của DBGird nhưng Data Source: phải là tên của điều khiển ADODC kết nối với cơ sở dữ liệu từ xa. Điều khiển DB Combo/DB List: Dùng để nhập dữ liệu cho các trường của bảng với giá trị được chọn trong danh sách. Một số các thuộc tính: Name, DataField, dataSource, ListField, RowSource, Bound Column. Điều khiển DataCombo và Data List: Dùng để nhập dữ liệu cho các trường của bảng với các giá trị được lựa chọng trong danh sách. Một số các thuộc tính: Name, DataField, DataSource, ListField, RowSource. Điều khiển Combo và ListBox: Cho phép chọn các giá trị khi được hiểnthị trên danh sách và giá trị đó sẽ được sử dụng tuỳ ý. Điều khiển Text Box: Dùng để nhập dữ liệu cho các trường. Một số các thuộc tính: DataSource, DataField. Mô hình truy cập cơ sở dữ liệu bằng ADO Mô hình này dùng để truy cập và xử lý cơ sở dữ liệu từ xa thông qua mạng nhờ kết nối ODBC. ODBC: ( Open Database Connectivity – Khả năng tương kết cơ sở mở) Là một biện pháp độc lập ứng dụng để kết nối nhiều cơ sở dữ liệu miễn là có một trình điều khiển đúng đắn thì ODBC sẽ cho phép kết nối với cơ sở dữ liệu nào đó từ xa. Mô hình ADO ( Active Data Object) Connection Command Parameter Field RecordSet Error Điều khiển ADODC ( ADO Data Control) Project Component Control Microsoft ADO Data Control 6.0 (OLEDB) Một số các thuộc tính: Connection String = “DSN = Tên kết nối ODBC ” Command Type ( Xác định các kiểu câu lệnh) : adCmdTable, adCmdText Cursor Type( Kiểu con trỏ ): adopenDynamic, adopenStatic... Lock Type: adLockBatch Optimistic, adLock Optimistic... Mode: adMode Read, adMode ReadWrite, adMode Unknow RecordSource: Xác định bảng dữ liệu cần truy cập Một số các phương thức ( Method): Khi việc kết nối CSDL thành công cho phép sử dụng một số phương pháp sau để xử lý dữ liệu. Việc xử lý dữ liệu được thực hiện nhờ các phương thức của thành phần Recordset: Di chuyển bản ghi, Thêm bản ghi mới, Lưu trữ bản ghi, Loại bỏ bản ghi, Kiểm tra đầu cuối, Đếm số phần tử của bảng. Đối tượng ADODB Tham chiếu đến thư viện: Project References Microsoft Active X Data Object 2.0 Library Khai báo và thiết lập : Dim cn as ADODB.Connection, rs as ADODB.RecordSet Set cn = New ADODB.Connection cn.Open “ Tên kết nối ODBC” Set rs = cn.excute(“ tên bảng | Nội dung của câu lệnh Select ”) Trình thiết kế môi trường dữ liệu ( Data Environment ) Data Environment Connection 1 Command 1 Child Command 1 Child Command 2 … Command 2 … Connection 2 … Mỗi một kết nối (Conection) là một CSDL tại chỗ hoặc ở xa thông qua ODBC. Trong mỗi kết nối có nhiều câu lệnh (Command). Mỗi một câu lệnh trong kết nối sẽ kết nối tới một hay nhiềubảng trong cơ sở dữ liệu đang được kết nối.hoặc kết nỗi với nhiều bảng trong CSDL đang kết nối (UserSQL).trong Command.Còn có thể có các các câu lệnh con ở trong nó (Child Command i).Mỗi câu lệnh con ở trong nó có sẽ kết nối đến một bảng trong CSDL đang kết nỗi thoả mãn bảng này có quan hệ n-1 với bảng mã câu lệnh cha đang kết nối vào Có thể phân nhóm dữ liệu theo một trường nào đó hoặc có thể thay đổi quyền truy cập .Ngoài ra mỗi câu lệnh khi kết nỗi vào 1 hoặc nhiều bảng dữ liệu thì nó có thể phân nhóm dữ liệu hoặc bảng theo 1 trường nào đó (Grouping) hạn chế quyền truy cập đố với bảng này .Đặc biệt đối với cấu lệnh con,khi toạ trong câu lệnh tra bắt buộc phải thiết lậnh 1 mối quan hệ với bảng dữ liệu mà câu lệnh tra truy cập (Reladtion)để hạn chế người dùng trong Advanceed Một DE được tạo ra sẽ tồn tại ở bộ nhớ ngoài dưới dạng 1 tệp có phần mở rộng ngoài (DER) Các phương thức của Recordset trong Command Tạo mới : tên Data Environment.RS tên lệnh .Add New Xoá : tên Data Environment.RS tên lệnh .Add New Delete Sửa : tên Data Environment.RS tên lệnh Update Tìm kiểm : tên Data Environment.RS tên lệnh Find “biểu thức điều kiện” Tìm kiếm các bảng ghi ở trong bảng thoả mãn biểu thức điều kiện tính từ bản ghi hiện hành . Dịnh chuyển : tên Data Environment.RS tên lệnh.Move First tên Data Environment.RS tên lệnh.Move Last tên Data Environment.RS tên lệnh.Move Next tên Data Environment.RS tên lệnh.Move Previous tên Data Environment.RS tên lệnh.Move n Thuộc tính : tên Data Environment.RS tên lệnh.EOF tên Data Environment.RS tên lệnh.BOF tên Data Environment.RS tên lệnh.Filter=”biểu thức điều kiện” Đặt lọc dữ liệu tên Data Environment.RS tên lệnh.RecoroCount tên Data Environment.RS tên lệnh.Fields(“Tên trường”) BÀI TOÁN ỨNG DỤNG Trong vài năm gần đây hoạt động kinh doanh bảo hiểm ở Việt Nam đã có sự phát triển vượt bậc. Thị trường bảo hiểm ở nước ta đang được đa dạng hóa, sức ép mở cửa thị trường ngày càng lớn. Các doanh nghiệp muốn tồn tại và phát triển buộc phải mở rộng thị phần, phát triển các sản phẩm bảo hiểm. Kinh doanh bảo hiểm nhân thọ bản thân nó đã có tính rủi ro rất cao do các rủi ro bất ngờ xẩy đến với người mua bảo hiểm, ngoài ra còn có các cá nhân cố tình trục lợi từ việc bảo hiểm như khai báo không trung thực hay cố ý tạo ra các sự kiện bảo hiểm. Việc xác định các tiềm năng từ thông tin khách hàng cung cấp trong hợp đồng bảo hiểm và tính xác thực của các thông tin đó là công việc rất quan trọng. Chỉ những chuyên gia hoặc những người đã có kinh nghiệm mới có thể đánh giá được nhóm các khách hàng tiềm năng. Vấn đề đặt ra ở đây là số lượng hợp đồng bảo hiểm là rất lớn việc xác định mức độ rủi ro cho từng hợp đồng bảo hiểm mất rất nhiều thời gian vì không phải ai cũng có thể đánh giá được mức độ rủi ro từ những thông tin của khách hàng trong hợp đồng. Vì vậy cần đưa ra các mẫu để trợ giúp những nhân viên ít kinh nghiệm có thể xác định mức độ rủi ro cho từng hợp đồng bảo hiểm. Bước đầu phân loại các mức độ rủi ro cho các hợp đồng bảo hiểm. Việc xác định tính đúng đắn của nó cần có chuyên gia đánh giá lại, nhưng như vậy đã giảm đi rất nhiều công việc cho các chuyên gia. Bên cạnh đó còn giúp các nhân viên tư vấn khách hàng hướng khách hàng đến những sản phẩm bảo hiểm phù hợp với điều kiện của họ. Việc đánh giá rủi ro cho các hợp đồng mua bảo hiểm còn góp phần quan trọng trong việc công ty có chấp nhận cho khách hàng đó mua bảo hiểm mà họ đã yêu cầu không. Rủi ro của hợp đồng bảo hiểm là những biến cố xảy ra bất thường với hậu quả thiệt hại hoặc mang lại kết quả không như dự tính trong thời gian khách hàng mua bảo hiểm. Khi xẩy ra rủi ro, công ty bảo hiểm sẽ xác định mức chi trả cho khách hàng theo những quy định và nội dung của hợp đồng. Rủi ro của hợp đồng bảo hiểm có nhiều mức, để xác định mức độ rủi ro của các hợp đồng bảo hiểm phải dựa trên nhiều thông tin: độ tuổi thu nhập, nghề nghiệp, tình trạng sức khỏe, và cả những thông tin về người thân của người tham gia bảo hiểm như có bệnh gì không, những thông tin này cũng rất quan trọng vì có một số bệnh nghiêm có tính di truyền và khả năng mắc bệnh của người tham gia bảo hiểm là có thể xảy ra. Bài toán Input: Tập n các hồ sơ mua bảo hiểm, gồm các thông tin về khách hàng mua và được bảo hiểm và các thông tin về việc mua bảo hiểm của khách hàng. Các thông tin này được coi là một tập dữ liệu hỗn hợp có các thuộc tính số thuộc tính thứ tự, và thuộc tính định danh. K mức độ rủi ro từ các thông tin khách hàng cung cấp theo ý kiến của các chuyên gia có kinh nghiệm. Output: Đưa ra k nhóm khách hàng có sự giống nhau là lớn nhất và dựa theo sự đánh giá của các chuyên gia để có thể đưa ra các mẫu khách hàng với các mức độ rủi ro tương ứng. Tất cả những thông tin khách hàng cung cấp đều quan trọng nhưng trong đó có những thông tin quan trọng hơn. Mỗi thông tin khách hàng cung cấp ta gán cho chúng một trọng số theo kinh nghiệm của các chuyên gia. Bảng sau gồm các thuộc tính dùng để đánh giá các mức độ rủi ro: Số TT Tên thuộc tính Kiểu thuộc tính Các giá trị có thể 1 Tuồi của người được bảo hiểm Số 1¸60 2 Nghề nghiệp của người được bảo hiểm Định danh 3 Loại nghề nghiệp của người được bảo hiểm Thứ tự 1: An toàn 2:Bình thường 3: Hơi nguy hiểm 4: Nguy hiểm 4 Thu nhập của người được bảo hiểm Số 5 Quan hệ với người được bảo hiểm Định danh 6 Bệnh của người được bảo hiểm Định danh 7 Tuồi của người mua bảo hiểm Số 1¸60 8 Nghề nghiệp của người mua bảo hiểm Định danh 9 Loại nghề nghiệp của người mua bảo hiểm Thứ tự 1: An toàn 2:Bình thường 3: Hơi nguy hiểm 4: Nguy hiểm 10 Thu nhập gia đình của người mua bảo hiểm Số 11 Bệnh của người mua bảo hiểm Định danh 12 Tên bảo hiểm đăng kí mua Định danh 13 Số tiền mua bảo hiểm Số 14 Số năm mua bảo hiểm Số 5¸60 (tùy từng bảo hiểm) Vì thuộc tính bệnh của khách thì có rất nhiều các bệnh khách nhau do đó trong chương trình ứng dụng để đơn giản em chuyển thuộc tính bệnh thành các cấp độ tình trạng của sức khỏe từ 1 đến 10 theo cấp độ nguy hiểm tăng dần 1: Hoàn toàn khỏe mạnh và tăng dần đến 10 là các bệnh nghiêm trọng ung thư, tiểu đường, bệnh về tim mạch. Với cấp độ 10 khách hàng sẽ khó có cơ hội mua bảo hiểm hoặc được mua nhưng với phí sẽ rất cao. Do đó thuộc tính bệnh sẽ được coi như thuộc tính có thứ tự trong chương trình ứng dụng Tương tự như vậy với thuộc tính nghề nghiệp, em xin bỏ thuộc tính nghề nghiệp, thay vào đó sẽ xét theo mức độ nguy hiểm của nghề nghiệp theo thuộc tính loại nghề nghiệp. Các thông tin về các loại bảo hiểm nhân thọ Công ty Prudential có các loại bảo hiểm chính sau: Phú_Thành tài, Phú _Khởi nghiệp, Phú_Tích lũy gia tăng, Phú_An khang thịnh kỳ, Phú_An khang tích lũy thịnh kỳ, Phú_An khang hưu trí, Phú_An khang hưu trí toàn diện, Phú_An khang trọn đời, Phú_Trường an, Phú_Hoà nhân an, Phú_Thành gia. Khi khách hàng mua các sản phẩm bảo hiểm chính còn có thể mua kèm các sản phẩm bảo hiểm bổ sung: Phú_Thành tài: Trẻ em (Người được bảo hiểm): 0 - 12 tuổi. Tuổi tối đa khi đáo hạn hợp đồng: Trẻ em (Người được bảo hiểm): 24 tuổi. Phú_Khởi nghiệp: Người được bảo hiểm: từ 0-17 tuổi.Tuổi khi đáo hạn hợp đồng: 28 tuổi. Thời hạn hợp đồng: 11-28 năm. Phú_Tích lũy gia tăng: Người được bảo hiểm: 0 - 63 tuổi. Tuổi tối đa khi đáo hạn hợp đồng: 75 tuổi. Thời hạn hợp đồng: 12,15 hoặc 18 năm. Phú_Trường an: Độ tuổi khi tham gia bảo hiểm: 0 – 55. Tuổi khi đáo hạn hợp đồng: 99. Thời hạn hợp đồng: 44 đến 99 năm. Phú_Hòa nhân an: Độ tuổi khi tham gia bảo hiểm: từ 15 – 60 tuổi.Tuổi tối đa khi đáo hạn hợp đồng: 65 tuổi. Thời hạn hợp đồng: 5 năm hoặc 8 năm. Phú_Thành gia: Người được bảo hiểm: 15-50 tuổi. Tuổi tối đa khi đáo hạn hợp đồng: 65 tuổi. Thời hạn hợp đồng: 15 năm. Phú_An khang thịnh kỳ: Người được bảo hiểm: 0 - 60 hoặc 61 - 65 tuổi. Tuổi tối đa khi đáo hạn hợp đồng: 75 tuổi. Thời hạn hợp đồng: 10 đến 30 năm. Phú_An khang tích lũy gia tăng: Người được bảo hiểm: 0-65 tuổi.Tuổi tối đa khi đáo hạn hợp đồng: 75 tuổi. Thời hạn hợp đồng: 7 đến 30 năm. Phú_An khang hưu trí: Người được bảo hiểm: 20 - 55 tuổi. Tuổi tối đa khi đáo hạn hợp đồng: 74 tuổi. Thời hạn hợp đồng: 19 đến 39 năm. Phú_An khang hưu trí toàn diện: Người được bảo hiểm: 20-50 tuổi. Tuổi tối đa khi đáo hạn hợp đồng: 69 tuổi. Thời hạn hợp đồng: 19 đến 39 năm. Phú_An khang trọn đời: Người được bảo hiểm: 18-45 tuổi hoặc 18-50 tuổi (tùy thuộc độ tuổi chọn nghỉ hưu).Tuổi tối đa khi đáo hạn hợp đồng: 70 hoặc 75  tuổi. Thời hạn hợp đồng: 10 đến 57 năm. Cài đặt thuật toán Phân cụm nửa giám sát vời dữ liệu hốn hợp Nếu ta có thể nói Thuật toán K-Tâm là cải tiến của thuật toán K-Means áp dụng với kiểu dữ liệu hỡn hợp. Và thuật toán Phân cụm dữ liệu nửa giám sát ( Seeded-Kmeans và Constrained-Kmeans) là cải tiến của thuật toán K-Means với việc khởi tạo K cụm ban đầu từ tập giống. Thì bằng cách phân cụm dữ liệu áp dụng thuật toán Phân cụm dữ liệu nửa giám sát cho kiểu dữ liệu hỗn hợp có nghĩa là ta đã kết hợp thuật toán K-Tâm và Thuật toán phân cụm dữ liệu nửa giám sát. Về cơ bản khi tiến hành phân cụm dữ liệu nửa giám sát cho kiểu dữ liệu hỗn hợp không khác gì mấy so vời việc phân cụm dữ liệu nửa giám sát với kiểu dữ liệu số. Chỉ có một điểm khác nhau cơ bản ở đây là việc tính khoảng cách giữa hai đối tượng ta phải áp dụng phương pháp tình khoảng cách với kiểu dữ liệu hỗn hợp thay vì kiểu dữ liệu số thông thường. Các công thức tính khoảng cách : Nếu Aj là thuộc tính số thì dj được dj(x,y)=úx-yú (9) Nếu Aj là thuộc tính thứ tự và DOM(Aj) = với , ta lấy một hàm đơn điệu fj:DOM(Aj)→ [0,1] sao cho (Hàm này có thể là : ) . Khi đó dj(x,y)= │fj(x)-fj(y) │. (10) Nếu Aj là dữ liệu định danh thì dj(x,y)= (11) Vậy khoảng cách d(x,y) giữa hai đối tượng x = (x1,...,xn) và y = (y1,...,yn) được tính bởi công thức: (12) trong đó các dj(xj,yj) được tính theo các công thức (9-11) và rj là các trọng số dương cho bởi các chuyên gia. Các giá trị trọng số này cũng chính là một phần thể hiện sự nửa giám sát, các trọng số sẽ giúp cho việc xác định các thông tin nào là quan trọng vá các thông tin nào là kém quan trọng hơn trọng qua trình phân cụm. Giá trị của các trọng số sẽ góp phần quan trọng trong kết quả phân cụm thu được. Các hàm thủ tục chính khi thực hiện thuật toán Hàm khởi tạo tâm từ Tập giống Public Sub KhoiTaoTam() Dim i As Integer, j As Integer Dim KhCach As Integer, KhCachMin As Integer For i = 1 To 100 For j = 1 To 100 TongThTGiong(i, j) = 0 Next j DemPT(i) = 0 Next i If DEQLbaohiem.rscmdtam.RecordCount > 0 Then If DEQLbaohiem.rscmdtam.BOF = False Then DEQLbaohiem.rscmdtam.MoveFirst End If While DEQLbaohiem.rscmdtam.EOF = False DEQLbaohiem.rscmdtam.Delete adAffectCurrent DEQLbaohiem.rscmdtam.MoveNext Wend End If If DEQLbaohiem.rscmdTapgiong.RecordCount = 0 Then MsgBox "Ban chua khoi tao tap giong" End End If For i = 1 To K DEQLbaohiem.rscmdTapgiong.MoveFirst While Not DEQLbaohiem.rscmdTapgiong.EOF If DEQLbaohiem.rscmdTapgiong.Fields(0) = i Then For j = 1 To SThT TongThTGiong(i, j) = TongThTGiong(i, j) + DEQLbaohiem.rscmdTapgiong.Fields(j) Next j DemPT(i) = DemPT(i) + 1 End If DEQLbaohiem.rscmdTapgiong.MoveNext Wend Next i For i = 1 To K DEQLbaohiem.rscmdtam.AddNew DEQLbaohiem.rscmdtam.Fields(0) = i For j = 1 To SThT DEQLbaohiem.rscmdtam.Fields(j) = Int(TongThTGiong(i, j) / DemPT(i)) Next j DEQLbaohiem.rscmdTapgiong.MoveFirst KhCachMin = 30000 While Not DEQLbaohiem.rscmdTapgiong.EOF If DEQLbaohiem.rscmdTapgiong.Fields(0) = i Then KhCach = KhoangCach(DEQLbaohiem.rscmdTapgiong, DEQLbaohiem.rscmdtam) If KhCachMin > KhCach Then KhCachMin = KhCach For j = 1 To SThT DEQLbaohiem.rscmdtam.Fields(j) = DEQLbaohiem.rscmdTapgiong.Fields(j) Next j End If End If DEQLbaohiem.rscmdTapgiong.MoveNext Wend DEQLbaohiem.rscmdtam.Update Next i End Sub Các hàm tính khoảng cách Hàm tính khoản cách với kiểu dữ liệu Số Function KCso(X As ADODB.Recordset, Y As ADODB.Recordset) As Double Dim kc As Double Dim tmp As Double Dim tmp1 As Double kc = 0 tmp = 0 tmp1 = 0 KCso = 0 For i = 1 To SThT If KieuDL(i) = 0 Then tmp = Abs(X.Fields(i) - Y.Fields(i)) tmp1 = tmp * TrongSo(i) kc = kc + tmp + tmp1 End If Next i KCso = Sqr(kc) End Function Hàm tính khoảng cách với kiểu dữ liệu Phạm trù Function KCphamtru(X As ADODB.Recordset,Y As ADODB.Recordset)As Integer Dim tmp As Integer tmp = 0 KCphamtru = 0 For i = 1 To SThT If KieuDL(i) = 1 Then If X.Fields(i) Y.Fields(i) Then tmp = tmp + 1 End If End If Next i KCphamtru = tmp End Function Function f(j As Integer, GTr As Integer) As Double f = 0 f = (GTr - 1) / (SGTr(j) - 1) End Function Hàm tính khoảng cách với kiểu dữ liệu Thứ tự Function KCthutu(X As ADODB.Recordset, Y As ADODB.Recordset) As Double Dim j As Integer Dim tmp As Double Dim a As Double Dim b As Double KCthutu = 0 For j = 1 To SThT If KieuDL(j) = 2 Then a = f(j, X.Fields(j)) b = f(j, Y.Fields(j)) tmp = a - b KCthutu = KCthutu + TrongSo(j) * (Abs(tmp)) End If Next j End Function thuật toán Constrained-Kmeans Public Sub ConstrainedKMeans() Dim a As Integer, b As Integer, c As Integer, d As Integer, i As Integer, j As Integer Dim KhCach As Integer, KhCachMin As Integer For a = 1 To 100 For b = 1 To 100 TongThTso(a, b) = 0 Next b SoPTcum(a) = 0 Next a Dim KCmin As Double, KCtinh As Double, cum As Integer DEQLbaohiem.rscmdKQ.MoveFirst DEQLbaohiem.rscmdcum.MoveFirst While DEQLbaohiem.rscmdKQ.EOF = False And DEQLbaohiem.rscmdKQ.BOF = False DEQLbaohiem.rscmdTapgiong.MoveFirst While Not DEQLbaohiem.rscmdTapgiong.EOF If DEQLbaohiem.rscmdKQ.Fields(1) = DEQLbaohiem.rscmdTapgiong.Fields(1) Then cum = DEQLbaohiem.rscmdTapgiong.Fields(0) GoTo thuocTG End If DEQLbaohiem.rscmdTapgiong.MoveNext Wend DEQLbaohiem.rscmdtam.MoveFirst KCmin = KhoangCach(DEQLbaohiem.rscmdKQ, DEQLbaohiem.rscmdtam) cum = DEQLbaohiem.rscmdtam.Fields(0) DEQLbaohiem.rscmdtam.MoveNext While DEQLbaohiem.rscmdtam.EOF = False And DEQLbaohiem.rscmdtam.BOF = False KCtinh = KhoangCach(DEQLbaohiem.rscmdKQ, DEQLbaohiem.rscmdtam) If KCmin > KCtinh Then KCmin = KCtinh cum = DEQLbaohiem.rscmdtam.Fields(0) End If DEQLbaohiem.rscmdtam.MoveNext Wend thuocTG: SoPTcum(cum) = SoPTcum(cum) + 1 For j = 1 To SThT TongThTso(cum, j) = TongThTso(cum, j) + DEQLbaohiem.rscmdKQ.Fields(j) Next j DEQLbaohiem.rscmdcum.Fields(0) = cum DEQLbaohiem.rscmdcum.Update DEQLbaohiem.rscmdtam.MoveFirst DEQLbaohiem.rscmdtam.Move cum - 1 For j = 1 To SThT DEQLbaohiem.rscmdtam.Fields(j) = Int(TongThTso(cum, j) / SoPTcum(cum)) Next j '------------------------------------- DEQLbaohiem.rscmdCNtamPC.Open DEQLbaohiem.rscmdCNtamPC.MoveFirst KhCachMin = 30000 While Not DEQLbaohiem.rscmdCNtamPC.EOF If DEQLbaohiem.rscmdCNtamPC.Fields(0) = cum Then KhCach = KhoangCach(DEQLbaohiem.rscmdCNtamPC, DEQLbaohiem.rscmdtam) If KhCachMin > KhCach Then KhCachMin = KhCach For j = 0 To SThT DEQLbaohiem.rscmdtam.Fields(j) = DEQLbaohiem.rscmdCNtamPC.Fields(j) Next j End If End If DEQLbaohiem.rscmdCNtamPC.MoveNext Wend DEQLbaohiem.rscmdtam.Update DEQLbaohiem.rscmdCNtamPC.Close '------------------------------------------------ DEQLbaohiem.rscmdKQ.MoveNext DEQLbaohiem.rscmdcum.MoveNext Wend End Sub Hàm kiểm tra hội tun của thuật toán Public Sub Re_ConstrainedKMeans() Dim SoBGThayDoi As Integer, j As Integer, SoLanLap As Integer Dim KCmin As Double, KCtinh As Double Dim cum As Integer, cumCu As Integer Dim KhCach As Integer, KhCachMin As Integer SoLanLap = 0 Do SoBGThayDoi = 0 DEQLbaohiem.rscmdcum.MoveFirst DEQLbaohiem.rscmdKQ.MoveFirst While Not DEQLbaohiem.rscmdKQ.EOF DEQLbaohiem.rscmdTapgiong.MoveFirst While Not DEQLbaohiem.rscmdTapgiong.EOF If DEQLbaohiem.rscmdKQ.Fields(1) = DEQLbaohiem.rscmdTapgiong.Fields(1) Then cum = DEQLbaohiem.rscmdTapgiong.Fields(0) GoTo thuocTGRe End If DEQLbaohiem.rscmdTapgiong.MoveNext Wend DEQLbaohiem.rscmdtam.MoveFirst KCmin = KhoangCach(DEQLbaohiem.rscmdKQ, DEQLbaohiem.rscmdtam) cum = DEQLbaohiem.rscmdtam.Fields(0) DEQLbaohiem.rscmdtam.MoveNext While DEQLbaohiem.rscmdtam.EOF = False And DEQLbaohiem.rscmdtam.BOF = False KCtinh = KhoangCach(DEQLbaohiem.rscmdKQ, DEQLbaohiem.rscmdtam) If KCmin > KCtinh Then KCmin = KCtinh cum = DEQLbaohiem.rscmdtam.Fields(0) End If DEQLbaohiem.rscmdtam.MoveNext Wend thuocTGRe: If DEQLbaohiem.rscmdKQ.Fields(0) cum Then SoBGThayDoi = 1 cumCu = DEQLbaohiem.rscmdKQ.Fields(0) DEQLbaohiem.rscmdcum.Fields(0) = cum DEQLbaohiem.rscmdcum.Update SoPTcum(cum) = SoPTcum(cum) + 1 SoPTcum(cumCu) = SoPTcum(cumCu) - 1 DEQLbaohiem.rscmdtam.MoveFirst While Not DEQLbaohiem.rscmdtam.EOF If DEQLbaohiem.rscmdtam.Fields(0) = cum Then For j = 1 To SThT TongThTso(cum, j) = TongThTso(cum, j) + DEQLbaohiem.rscmdKQ.Fields(j) If SoPTcum(cum) > 0 Then DEQLbaohiem.rscmdtam.Fields(j) = Int(TongThTso(cum, j) / SoPTcum(cum)) End If Next j '------------------------------------------- DEQLbaohiem.rscmdCNtamPC.Open KhCachMin = 30000 DEQLbaohiem.rscmdCNtamPC.MoveFirst While Not DEQLbaohiem.rscmdCNtamPC.EOF If DEQLbaohiem.rscmdCNtamPC.Fields(0) = cum Then KhCach = KhoangCach(DEQLbaohiem.rscmdCNtamPC, DEQLbaohiem.rscmdtam) If KhCachMin > KhCach Then KhCachMin = KhCach For j = 0 To SThT DEQLbaohiem.rscmdtam.Fields(j) = DEQLbaohiem.rscmdCNtamPC.Fields(j) Next j End If End If DEQLbaohiem.rscmdCNtamPC.MoveNext Wend DEQLbaohiem.rscmdtam.Update DEQLbaohiem.rscmdCNtamPC.Close '------------------------------------------------ Else If DEQLbaohiem.rscmdtam.Fields(0) = cumCu Then For j = 1 To SThT TongThTso(cumCu, j) = TongThTso(cumCu, j) - DEQLbaohiem.rscmdKQ.Fields(j) If SoPTcum(cumCu) > 0 Then DEQLbaohiem.rscmdtam.Fields(j) = Int(TongThTso(cumCu, j) / SoPTcum(cumCu)) End If Next j '------------------------------------------- DEQLbaohiem.rscmdCNtamPC.Open KhCachMin = 30000 DEQLbaohiem.rscmdCNtamPC.MoveFirst While Not DEQLbaohiem.rscmdCNtamPC.EOF If DEQLbaohiem.rscmdCNtamPC.Fields(0) = cumCu Then KhCach = KhoangCach(DEQLbaohiem.rscmdCNtamPC, DEQLbaohiem.rscmdtam) If KhCachMin > KhCach Then KhCachMin = KhCach For j = 0 To SThT DEQLbaohiem.rscmdtam.Fields(j) = DEQLbaohiem.rscmdCNtamPC.Fields(j) Next j End If End If DEQLbaohiem.rscmdCNtamPC.MoveNext Wend DEQLbaohiem.rscmdtam.Update DEQLbaohiem.rscmdCNtamPC.Close '------------------------------------------------ End If End If DEQLbaohiem.rscmdtam.MoveNext Wend End If DEQLbaohiem.rscmdKQ.MoveNext If SoLanLap > 10 Then 'MsgBox "lap lai qua 10 lan", , "Thong bao" GoTo nhan End If Wend SoLanLap = SoLanLap + 1 Loop Until SoBGThayDoi = 0 nhan: End Sub Giao diện chương trình Giao diện khởi động Trong chương trình này do tập chung thể hiện thuaatj toán phân cụm dữ liệu lên em sẽ bỏ đi một số phần không quá quan trọng trong một hệ thống quản lý thông thường (đăng nhập, phân quyền,...). Đây là giao diện sẽ được load khi chương trình chạy. Nó là một form kiểu Flash Một số giao diện cập nhập Đây là những giao diện cập nhập thông tin cho hệ thống quản lý Bảo hiểm Giao diện Phân cụm dữ liệu Cập nhập số cụm K Khởi tạo phân cụm, nhập số cụm K mà bạn muốn phân cụm. Cập nhập tập giống Chọn tập giống, khi chon một phần tử làm tập giống bạn phải chon số cụm khởi tạo cho nó. Kết quả khởi tạo Đây là hiểm thi các kết quả khởi tạo dựa vào tập giống bạn đã chọn ở trên. Phân cụm dữ liệu Đây là giao diện thực hiện phân cụm và chạy trong quá trình phân cụm Kết quả phân cụm Đây là kết quả thu được sau khi thực hiện thuật toán phân cụm KẾT LUẬN Data mining là một trong những lĩnh vực nghiên cứ mới, nhưng đồng thời nó cũng là một trong những xu hướng nghiên cứu ngày càng phổ biến. Do nhu cầu của thực tế, với sự phát triển của công nghệ máy tính, của các lĩnh vực kinh tế - xã hôi thì lượng thông tin lưu trữ ngày càng tăng, và nhu cầu khai thác thông tin, tri thức ngày càng lớn. Do đó việc đọc, nghiên cứu và phát triển phương pháp phân cụm dữ liệu đóng một vai trò rất quan trọng trong hoạt động của khoa học công nghệ máy tính, cũng như trong hoạt động thực tiễn. Trong bài báo cáo này em đã nêu lên những nét đặc trưng nhất trong lĩnh vực Data Mining bao gồm các vấn đề cần khám phá tri thức, các hướng tiếp cận nghiên cứu tiêu biểu, trong đó phân cụm dữ liệu là một phương pháp khám phá tri thức quan trọng trong Data Mining có nhiều ý nghĩa trong khoa học cũng như thực tiễn. Trong đó phân cụm dữ liệu nửa giám sát là một trong những hướng nghiên cứu mới được nhiều nhà khoa học quan tâm. Bài báo cáo đã nêu được một cách khái quát về data mining và phương pháp phân cụm không giám sát, từ đó phân tích chi tiết về phân cụm nửa giám sát. Trình bày ba thuật toán điển hình của phân cụm nửa giám sát đó là : COP-KMeans, Seeded-KMeans, Constrained-KMeans và trình bày thuật toán KMeans phân cấp mới được đề xuất của hai tác giả Việt Nam là : Hoàng Xuân Huấn và Nguyễn Trung Thông. Tóm lại phân cụm dữ liệu nói chung và phân cụm nửa giám sát nói riêng đang ngày càng được quan tâm ở nước ta và trên thế giới. Ngày càng có nhiều thuật toán và tư tưởng mới về phân cụm dữ liệu ra đời. Phân cụm dữ liệu đã từng bước chứng minh được tầm quan trong cũng như vài trò của mình trong sự phát triển của công nghệ máy tính nói riêng và phát triển của thế giới nói chung. Trong quá trình làm luận văn tốt nghiệp do thời gian thực hiện và trình độ còn nhiều hạn chế lên chưa thể tìm hiểu chi tiết hơn về Phân cụm nửa giám sát. Em mong nhận được sự chỉ bảo của thầy cô và sự góp ý của bạn bè. Tài liệu tham khảo Trong quá trình đọc và tìm hiểu về đề tài em đã tham khảo những tài liệu sau: [1] Nguyễn Trung Thông. Phương pháp phân cụm nửa giám sát [ 2 ] KS. Nguyễn Anh Trung - Trung tâm Công nghệ Thông tin. Ứng dụng các kỹ thuật khai phá dữ liệu vào lĩnh vực viễn thông [3] Hoàng Hải Xanh – K9 đại học công nghệ - ĐHQGHN (Luận văn thạc sĩ) Một số kỹ thuật phân cụm dữ liệu trong Data Mining. [4] Hoàng Xuân Huấn, Nguyễn Thị Xuân Hương. Mở rộng thuật toán phân cụm k-mean cho dữ liệu hỗn hợp. Một số vấn đề chọn lọc của công nghệ thông tin, Hải phòng 25-27 tháng 8 năm 2005. [5] Basu, S., Banerjee, A., & Mooney, R. J. (2002). Semi-supervised clustering by seeding. In Proceedings of 19th International Conference on Machine Learning (ICML-2002), pp. 19–26. [6] Basu, S., Banerjee, A., & Mooney, R. J. (2003). Active semi-supervision for pairwise constrained clustering. Submitted for publication, available at ˜sugato/. [7] Basu Sugato (2004) Semi-supervised Clustering with Limited Background Knowledge. Proceedings of the Ninth AAAI/SIGART Doctoral Consortium, pp. 979-980, San Jose, CA, July 2004. [8] Blake, C. L., & Merz, C. J. (1998). UCI repository of machine learning databases. ˜mlearn/MLRepository.html. [9] Cohn, D., Caruana, R., & McCallum, A. (2000). Semi-supervised clustering with user feedback. Unpublished manuscript. Available at ˜mccallum/. [10] Kantardzic Mehmed, 2003 DATA MINING:Concepts, Models, Methods & Algorithms. Copyright © 2003 by Mehmed Kantardzic. pp 79-120.

Các file đính kèm theo tài liệu này:

  • docBaoCaoTotNghiep.doc
  • pptBaoCaoTN.ppt
  • docBCTomTat.doc
  • rarCTHoanThien.rar
  • rartrinhchieu.rar