Thuật toán K-Tâm

Một phần của tài liệu Thuật toán phân cụm dữ liệu nửa giám sát (Trang 32)

Thuật toán K-Tâm mở rộng từ thuật toán K-Means để làm việc với tập dữ liệu hỗn hợp.

2.4.3.1. 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ự.

2.4.3.2. 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à: [ , ,..., , ,..., ]

1 2 1 x x x x x cm c p r p r r O   .

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.

Trang 33

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 j1,m.

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.

2.4.3.3. Độ đ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.

2.4.3.4. 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 (1)

 Nếu Aj là thuộc tính thứ tự và DOM(Aj) = k

j j a a1,..., với k j j j a a a1  2 ... , ta lấy một hàm đơn điệu fj: DOM(Aj)→ [0,1] sao

cho ( 1)0; ( k)1 j j j j a f a f (hàm này có thể là : 1 1 ) (    k i a fj ij ).

Khi đó dj(x, y)= │fj(x)-fj(y)│. (2)

 Nếu Aj là dữ liệu định danh thì dj(x, y)=

     y x khi y x khi : 1 : 0 (3)

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:    n j j j j jd x y y x d 1 2 2 ) , ( ) , (  (4)

Trang 34

Trong đó các dj(xj, yj) đƣợc tính theo các công thức (1-4) và j 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)= C y x y d2( , )

Trong đó: x là phần tử của quan hệ r trên lƣợc đồ quan hệ R={A1,...,An}.

2.4.3.5. 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- Means 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ố j, các hàm fj ,xác định k; Chọn k phần tử ban đầu  k j j z 1 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;

Trang 35

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.

2.5. Các phương pháp và thuật toán điển hình liên quan đến PCDL 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. 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-base), phƣơng pháp dựa trên độ đo tƣơng tự (similarity-based).

2.5.1. K-Means bán giám sát với một phần dữ liệu đã gán nhãn: Seeded-KMeans và Constrained-KMeans Seeded-KMeans và Constrained-KMeans

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  N1 i i

Xx, gọi SX 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) Xh. 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

Trang 36

thành K cụm giống tách rời  K1 h h

S  , do đó mọi đối tƣợng xj Sh đều nằm trong cụm Xh tƣơng ứng. Nhiệm vụ cần giải quyết là từ K cụm giống

 K1 h h

S  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

 K1

h h

X  .

Sau đây em xin trình bày hai thuật toán: Thuật toán Seeded-KMeans và Constrained-KMeans do Basu đề xuất vào năm 2002.

2.5.1.1. 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át Seeded-KMeans

Input: - Tập các đối tƣợng dữ liệu X x1,...,xN,xid

- Số lƣợng cụm: K - Tập giống S Kh1Sh

Output: K phân hoạch tách rời:  K1

h h

X  của X sao cho hàm mục tiêu đƣợc

tối ƣu.

Các bước:

Bước 1: Khởi tạo các cụm:

(0) 1 h h x S h x S     , với h = 1,...K; t0.

Trang 37

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  * ( 1) 1 K t h h X   ) với h* = argmin || xh( )t ||2 2.2 Ƣớc lƣợng tâm: ( 1) ( 1) ( 1) 1 | | ht t h t x X h x X        2.3 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 một cách nhanh nhất.

2.5.1.2. 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 X x1,...,xN,xid

- Số lƣợng cụm: K

- Tập giống K 1 h h S   S

Output: K phân hoạch tách rời:  K 1

h h

X  của X sao cho hàm mục tiêu đƣợc

tối ƣu.

Các bước:

Bước 1: Khởi tạo các cụm: (0) 1

h h x S h x S     , với h = 1,...K; t0.

Trang 38

2.1 Gán cụm:

- Với mỗi xS , nếu xSh thì gán x vào cụm h

- Với mỗi x S gán x vào cụm h*, với h* = argmin || xh( )t ||2

2.2 Ƣớc lƣợng tâm: ( 1) ( 1) ( 1) 1 | | ht t h t x X h x X        2.3 t t+1

Tập ràng buộc mà thuật toán Constrained-KMeans dùng đƣợc lấy ra từ tập giống nên thƣờng đầy đủ. Các thuật toán dựa trên tập giống Seeded- KMeans, Constrained-KMeans 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.

2.5.2. K-Means bán giám sát trên cơ sở các ràng buộc: COP-KMeans

Trong thuật toán COP-KMeans (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:

Input: - Tập các đối tƣợng dữ liệu X x1,...,xN,xid

Trang 39

- Tập ràng buộc must-link và cannot-link

Output: K phân hoạch tách rời:  K1

h h

X  của X sao cho hàm mục tiêu đƣợc

tối ƣu.

Các bước:

Bước 1: 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.

Bước 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 vào trong cụm gần nhất sao cho không vi phạm ràng buộc.

2.2 Ƣớ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 đó.

2.3 t t+1

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.

Trang 40

Chương 3

XÂY DỰNG ỨNG DỤNG

3.1. Giới thiệu ngôn ngữ Visual Basic 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), đâ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).

3.1.1. Cấu trúc một đề án (Project)

Một đề án 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 (.dsr): Dùng để in ấn 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.

Trang 41

 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.

3.1.2. Một số đ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): 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.

3.1.3. Thuộc tính, phương thức và sự kiện

 Đối tƣợng: Trong Visual Basic, đối tƣợng là các thành phần tạo nên giao diện ngƣời sử dụng cho ứng dụng.

 Lập trình hƣớng đối tƣợng: Visual Basic 6.0 hỗ trợ lập trình hƣớng đối tƣợng (Object Oriented Programming). Với lập trình hƣớng đối tƣợng, lập trình viên sẽ chia nhỏ các vấn đề cần giải quyết thành các đối tƣợng. Từng đối tƣợng sẽ có những đặc điểm mà ta gọi là các thuộc tính (properties) và các chức năng riêng biệt gọi là phƣơng thức (method).

 Thuộc tính: Mỗi đối tƣợng đều có một bộ thuộc tính mô tả đối tƣợng. Trong các bộ thuộc tính này có một số thuộc tính thông dụng cho hầu hết các điều khiển.

Trang 42 Connection Command Parameter Field RecordSet Error

 Phƣơng thức: Là những đoạn chƣơng trình chứa trong điều khiển, cho điều khiển biết cách thức để thực hiện một công việc nào đó. Mỗi điều khiển có những phƣơng thức khác nhau.

 Sự kiện: Sự kiện là những phản ứng của đối tƣợng. Mỗi điều khiển có những bộ sự kiện khác nhau, nhƣng một số sự kiện rất thông dụng với hầu hết điều khiển. Các sự kiện này xảy ra thƣờng là kết quả của một hành động nào đó nhƣ di chuột, nhấn nút bàn phím hoặc gõ vào hộp thoại văn bản.

3.1.4. 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.

Trang 43

Đ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.

Đố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”)

3.1.5. Hệ quản trị Cơ sở dữ liệu ACCESS

Access là một hệ thống quản trị CSDL, nó lƣu trữ và tìm kiếm dữ liệu, biểu diễn thông tin và tự động làm nhiều nhiệm vụ khác. Với việc sử dụng Access, chúng ta có thể phát triển ứng dụng một cách nhanh chóng trên môi trƣờng Windows của Microsoft.

Trang 44

Access cung cấp tất cả các dữ liệu cần thiết cho trƣờng, bao gồm kiểu văn bản (Text), kiểu số (Number), kiểu tiền tệ (Currency), kiểu ngày/tháng (date/time), kiểu có/không (yes/no),… Việc xử lý quan hệ trong Access đáp ứng đƣợc những đòi hỏi với kiến trúc mềm dẻo của nó. Nó có thể sử dụng nhƣ một quan hệ quản lý CSDL độc lập.

3.2. Xây dựng ứng dụng 3.2.1. Giới thiệu 3.2.1. Giới thiệu

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 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 là cần đƣa ra các mẫu để trợ giúp những nhân viên ít kinh nghiệm có

Một phần của tài liệu Thuật toán phân cụm dữ liệu nửa giám sát (Trang 32)