Thuật toán COP-Kmeans là thuật toán phân cụm nửa giám sát, với phƣơng pháp tiếp cận dựa trên tìm kiếm. 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 phải nằm cùng 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:
Đầu vào:
Tập các đối tƣợng dữ liệu X = {x1,x2,…,xn}, x1 ε Rd Số lƣợng cụm: K
Đầu ra: K phân hoạch tách rời: của X sao cho hàm mục tiêu đƣợc
tối ƣu.
Các bƣớc thực hiện:
B1: 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.
B2: Lặp lại 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ả các đối tƣợng nằm trong phân cụm của tâm đó.
t ← t+1
2.2.5.2. Phân cụm nửa giám sát trên tập dữ liệu được gán nhãn
* 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.
Đầu vào
Tập các đối tƣợng dữ liệu X = {x1,x2,…,xn}, x1 ε Rd Số lƣợng cụm: K
Tập giống S =
Đầu ra: K phân hoạch tách rời: của X sao cho hàm mục tiêu đƣợc
Các bƣớc thực hiện:
B1: Khởi tạo các cụm: B2: Lặp 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||x- ||2 2.2: Ƣớc lƣợng tâm: ← ∑ ∈ 2.3: t ← t+1
* 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 nhƣ sau:
Input
Tập các đối tƣợng dữ liệu X = {x1,x2,…,xn}, x1 ε Rd Số lƣợng cụm: K
Tập giống S =
Output
K phân hoạch tách rời: của X sao cho hàm mục tiêu đƣợc tối ƣu.
Các bƣớc thực hiện:
B2: Lặp cho tới khi hội tụ 2.1: Gán cụm
Với mỗi x ∈ S, nếu x ∈ 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-
||2 2.2: Ƣớc lƣợng tâm: ← ∑ ∈ 2.3: t ← t+1
2.2.5.3. Thuật toán K-Means phân cấp
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. Thuật toán này là sự kết hợp của thuật toán Seeded-Kmeans với phƣơng pháp phân cụm phân cấp.
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 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 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.
Thuật toán K-Means phân cấp gồm 3 bƣớc sau:
B1: Chạy thuật toán Seeded-Kmeans để tạo ra Kmin cụm ban đầu (Kmin là số cụm giống).
B2: 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.
B3: Lặp lại bƣớc 2 cho đến khi BIC tổng thể không đổi hoặc số cụm hiện tại lớn hơn hoặc bằng Kmax.
Seed-Kmeans khởi tạo 3 cụm ban đầu Dùng 2 K-means để chi các cụm cha thành 2 cụm con
Áp dụng BIC Kết quả có 4 cụm
Hình 2.8: Thuật toán K-Means phân cấp 2.3. Tổng kết chƣơng 2
Chƣơng này tập trung trình bày về bài toán phân cụm, các kỹ thuật phân cụm và các thuật toán liên quan. Kết quả nghiên cứu của chƣơng này là cơ sở để giải quyết bài toán phân cụm văn bản ở chƣơng sau.
CHƢƠNG 3: ỨNG DỤNG HỌC NỬA GIÁM SÁT VÀO BÀI TOÁN PHÂN CỤM VĂN BẢN
3.1. Phân tích bài toán
Bƣớc đầu tiên của mọi phƣơng pháp phân cụm là chuyển việc mô tả văn bản dùng chuỗi ký tự thành một dạng mô tả khác, phù hợp với các thuật toán học theo mẫu và phân cụm. Hầu hết các thuật toán đều sử dụng cách biểu diễn văn bản sử dụng vector đặc trƣng.
Ý tuởng chính là xem mỗi văn bản di tƣơng ứng là một vector đặc trƣng:
trong không gian các từ Wn (wi là một từ, một đặc trƣng, tƣơng ứng một chiều của không gian). Giá trị của TF(wi) chính là số lần xuất hiện của từ wi trong văn bản di. Từ đƣợc chọn là một đặc trƣng khi nó xuất hiện trong ít nhất 3 văn bản. Để không bị phụ thuộc vào chiều dài văn bản vector đặc trƣng sẽ đƣợc chuẩn hóa về chiều dài đơn vị:
Trong thực tế để cải thiện tốc độ và kết quả ngƣời ta thƣờng sử dụng
IDF(wi) hoặc TFIDF(wi) thay cho TF(wi)
Trong đó:
m chính là số văn bản huấn luyện DF(wi) là số văn bản có chứa từ wi
Các đặc trƣng của văn bản khi biểu diễn dƣới dạng vector : Số chiều không gian đặc trƣng thƣờng rất lớn (trên 10000)
Có các đặc trƣng độc lập nhau, sự kết hợp các đặc trƣng này thƣờng không có ý nghĩa trong phân loại
Đặc trƣng rời rạc : vector di có rất nhiều giá trị 0 do có nhiều đặc trƣng không xuất hiện trong văn bản di .
Hầu hết các văn bản có thể đƣợc phân chia một cách tuyến tính bằng các hàm tuyến tính.
Vấn đề mà ta cần quan tam trong quá trình chuyển dữ liệu từ dạng văn bản sang dạng vector là vấn đề lựa chọn đặc trƣng cho vector đặc trƣng, số chiều của vector. Nhƣ vậy ta cần phải trả lời câu hỏi chọn bao nhiêu từ, chọn các từ nào, dùng phƣơng pháp nào để chọn…
* Một số đặc trƣng của văn bản đƣợc biểu diễn dƣới dạng vector:
Đặc trƣng thứ nhất của văn bản là:Không gian đặc trƣng thƣơng rất lớn. Vì các văn bản thƣờng rất dài, lƣợng thông tin mà các văn bản đề cập đến thƣờng là rất nhiều vấn đề.
Nội dung đặc trƣng của văn bản thƣờng là độc lập nhau. Do vậykhi kết hợp các đặc trƣng nàytrong phân lớpthƣờng không có ý nghĩa.
Đặc trƣng thứ ba là:Tính rời rạc. Nếu chúng ta sử dụng giá trị nhị phân 0 hoặc 1 để biểu diễn việc có xuất hiện một một đặc trƣng nào đó hay không trong văn bản. Thì vector di có thể có nhiều thành phần chứa giá trị 0 vì có thể có nhiều đặc trƣng không xuất hiện trong văn bản. Điều đó dẫn đến kết quả phân lớp bị hạn chế.Vì có thể đặc trƣng đó không có trong văn bản đang xét, mà trong văn bản đang xét lại có từ khóa khác với từ đặc trƣng, nhƣng có ngữ nghĩa giống với từ đặc trƣng này.Có một cách giải quyết vấn đề này là không sử dụng số nhị phân 0, 1 mà ta thay bằng giá trị thực để giảm bớt sự rời rạc trong vector văn bản.
Đa số các văn bản đều có thể phân chia ra thành dữ liệu tuyến tính thông qua các hàm tuyến tính.
Độ dài của vector đƣợc xác định thông qua số các từ khóa xuất hiện ít nhất một lần trong một mẫu dữ liệu huấn luyện.
Khi đánh trọng số cho các từ khoá ta cần loại bỏ các từ thƣờng xuất hiện mà không mang lại ý nghĩa gì trong việc phân lớp văn.
Ví dụ: Trong tiếng Việt có một số từ sau: “hoặc”, “và”, “thì”, … Trong tiếng Anh thƣờng là các liên từ, trạng từhoặc các giới từ nhƣ: “an”, “and”,“the”, “a”, …
* Một số yếu tố tác động đến phân cụm văn bản:
Tập dữ liệu huấn luyện: Tập dữ liệu huấn luyện phải chuẩn và đủ lớn để đảm bảo thuật toán sau khi đƣợc huấn luyện sẽ có khả năng phân cụm tốt các dữ liệu mới đƣợc đƣa vào.
Phƣơng pháp tách từ: Đối với một số ngôn ngữ thì thao tác tách từ trongvăn bản rất đơn giảnlà ta dựa vào các khoảng trắng để tiến hành tách từ, nhƣngmột số ngôn ngữ khác thì cách tách nhƣ vậy lại không chính xác nhƣ tiêng thái, tiếng campuchia, ... Do đó phƣơng pháp tách từ là một yếu tốquan trọng, ta phải dựa vào đặc điểm của từng loại ngôn ngữ, để có thể đƣa ra chiến lƣợc tách tự cho phù hợp.
Thời gian xử lý: Là một yếu tố rất quan trọng tác động đến phân lớp văn bản vì số lƣợng văn bản là rất lớn. Do vậy nếu thời gian xử lý không hợp lý thì sẽ dẫn tới thuật toán phân lớp văn bản không khả thi.
3.2 Hƣớng giải quyết của bài toán * Tiền xử lý văn bản: * Tiền xử lý văn bản:
Ta thƣờng lấy ra những metadata đặc trƣng nhƣ là một căn cứ và lƣu trữ các đặc tính văn bản cơ bản bằng việc sử dụng các quy tắc/ phƣơng pháp để làm rõ dữ liệu [18]. Để có đƣợc kết quả khai phá tốt ta cần có dữ liệu rõ ràng, chính. Để có đƣợc kết quả khai phá tốt ta cần có dữ liệu rõ ràng, chính xác và xóa bỏ
dữ liệu hỗn độn và dƣ thừa. Trƣớc hết cần hiểu yêu cầu của ngƣời dùng và lấy ra mối quan hệ giữa nguồn tri thức đƣợc lấy ra từ nguồn tài nguyên.Thứ hai, làm sạch, biến đổi và sắp xếp lại những nguồn tri thức này. Cuối cùng,tập dữ liệu kết quả cuối cùng là bảng 2 chiều. Sau bƣớc tiền xử lý, tập dữ liệuđạt đƣợc thƣờng có các đặc điểm nhƣ sau:
- Dữ liệu thống nhất và hỗn hợp cƣỡng bức.
- Làm sạch dữ liệu không liên quan, nhiễu và dữ liệu rỗng. Dữ liệu không bị mất mát và không bị lặp.
- Giảm bớt số chiều và làm tăng hiệu quả việc phát hiện tri thức bằng việc chuyển đổi, quy nạp, cƣỡng bức dữ liệu,...
- Làm sạch các thuộc tính không liên quan để giảm bớt số chiều của dữ liệu.
* Biểu điễn văn bản
Sau bƣớc tiền xử lý, dữ liệu sẽ phải biến đổi và biểu diễn thích hợp cho quá trình xử lý. Ta có thể xửlý và lƣu trữ chúng trong mảng 2 chiều mà dữ liệu đó có thể phản ánh đặc trƣng của tài liệu. Ngƣời ta thƣờng dùng mô hình TF- IDF để vector hóa dữ liệu.
Nhƣng có một vấn đề quan trọng là việc biểu diễn này sẽ dẫn đến số chiều vector khá lớn. Lựa chọn các đặc trƣng mà nó chắc chắn trở thành khóa và nó ảnh hƣởng trực tiếp đến hiệu quả của việc KPVB.
Phân lớp từ và loại bỏ các từ: Trƣớc hết, chọn lọc các từ có thể mô tả đƣợc đặc trƣng của tài liệu. Thứ hai, quét tập tài liệu nhiều lần và làm sạch các từ tần số thấp. Cuối cùng ta cũng loại trừ các có tần số cao nhƣng vô nghĩa, nhƣ các từ trong tiếng Anh: ah, eh, oh, o, the, an, and, of, or,...
* Trích rút các từ đặc trƣng
Rút ra các đặc trƣng là một phƣơng pháp, nó có thể giải quyết số chiều vector đặc trƣng lớn đƣợc mang lại bởi kỹ thuật KPVB.
Việc rút ra các đặc trƣng dựa trên hàm trọng số:
- Mỗi từ đặc trƣng sẽ nhận đƣợc một giá trị trọng số tin cậy bằng việc tính toán hàm trọng số tin cậy. Tần số xuất hiện cao của các từ đặc trƣng là khả năng chắc chắn nó sẽ phản ánh đến chủ đề của văn bản, thì ta sẽ gán cho nó một giá trị tin cậy lớn hơn. Hơn nữa, nếu nó là tiêu đề, từ khóa hoặc cụm từ thì chắc chắn nó có giá trị tin cậy lớn hơn. Mỗi từ đặc trƣng sẽ đƣợc lƣu trữ lại để xử lý.Sau đó ta sẽ lựa chọn kích thƣớc của tập các đặc trƣng (kích thƣớc phải nhận đƣợc từ thực nghiệm).
- Việc rút ra các đặc trƣng dựa trên việc phân tích thành phần chính trong phân tích thống kê. Ý tƣởng chính của phƣơng pháp này là sử dụng thay thế từ đặc trƣng bao hàm của một số ít các từ đặc trƣng chính trong phần mô tả để thực hiện giảm bớt số chiều. Hơn nữa, ta cũng sử dụng phƣơng pháp quy nạp thuộc tính dữ liệu để giảm bớt số chiều vector thông qua việc tổng hợp nhiều dữ liệu thành một mức cao.
* Phân cụm văn bản
Sau khi tập hợp, lựa chọn và trích ra tập văn bản hình thành nên các đặc trƣng cơ bản, nó sẽ là cơ sở để KPDL. Từ đó ta có thể thực hiện trích, phân cụm, phân tích và dự đoán.
Chủ đề phân loại không cần xác định trƣớc. Nhƣng ta phải phân loại các tài liệu vào nhiều cụm. Trong cùng một cụm, thì tất cả độ tƣơng tự của các tài liệu yêu cầu cao hơn, ngƣợc lại ngoài cụm thì độ tƣơng tự thấp hơn. Nhƣ là một quy tắc, quan hệ các cụm tài liệu đƣợc truy vấn bởi ngƣời dùng là “gần nhau”. Nếu phân loại cụm rất lớn thì ta sẽ phân loại lại nó cho tới khi ngƣời dùng đƣợc đáp ứng với phạm vi tìm kiếm nhỏ hơn. Phƣơng pháp sắp xếp liên kết và phƣơng pháp phân cấp thƣờng đƣợc sử dụng trong phân cụm văn bản.
Thuật toán phân cụm phân cấp:
- Trong tập tài liệu xác định, W={w1, w2, ..,wm}, mỗi tài liệu wi là một cụm ci, tập cụm C là C={c1, c2, ...cm}.
- Chọn ngẫu nhiên 2 cụm ci và cj, tính độ tƣơng tự sim(ci,cj) của chúng. Nếu độtƣơng tự giữa ci và cj là lớn nhất, ta sẽ đƣa ci và cj vào một cụm mới. cuối cùng ta sẽhình thành đƣợc cụm mới C={c1, c2,..cm-1}
- Lặp lại công việc trên cho tới khi chỉ còn 1 phân tử.
Toàn bộ quá trình của phƣơng pháp sắp xếp liên kết sẽ tạo nên một cây mà nó phản ánh mối quan hệ lông nhau về độ tƣơng tự giữa các tài liệu. Phƣơng pháp có tính chính xác cao. Nhƣng tốc độ của nó rất chậm bởi việc phải so sánh độ tƣơng tự trong tất cả các cụm. Nếu tập tài liệu lớn thì phƣơng pháp này không khả thi.
Thuật toán phân cụm phân hoạch:
- Trƣớc hết ta sẽ chia tập tài liệu thành các cụm khởi đầu thông qua việc tối ƣu hóa hàm đánh giá theo một nguyên tắc nào đó, R={R1, R2,...,Rn}, với n phải đƣợc xác định trƣớc.
- Với mỗi tài liệu trong tập tài liệu W, W={w1, w2,..,wm}, tính toán độ tƣơng tự của nó tới Rj ban đầu, sim(wi, Rj), sau đó lựa chọn tài liệu tƣơng tự lớn nhất, đƣa nó vào cụm Rj.
- Lặp lại các công việc trên cho tới khi tất cả các tài liệu đã đƣa vào trong các cụm xác định.
Phƣơng pháp này có các đặc điểm là kết quả phân cụm ổn định và nhanh chóng. Nhƣng ta phải xác định trƣớc các phần tử khởi đầu và số lƣợng của nó, mà chúng sẽ ảnh hƣởng trực tiếp đến hiệu quả phân cụm.
3.3. Giải pháp, công nghệ sử dụng
* Công nghệ, công cụ: Ứng dụng đƣợc xây dựng trên bộ công cụ Microsoft
Visual Studio 2010, trên nền tảng .Net Framework 4.0.
* Thuật toán sử dụng: COP-Kmeans; Thuật toán Kỳ vọng cực đại
(Expectation Maximization); Kỹ thuật phân cụm theo thứ bậc (Hierarchical clustering).
* Ý tƣởng thuật toán:
1. Chọn số k cụm đƣợc xác định.
2. Khởi tạo k đối tƣợng ngẫu nhiên không vi phạm rằng buộc nhƣ là trung tâm cụm ban đầu.
3. Repeat
3.1.Chỉ định từng đối tƣợng đến cụm gần nhất không vi phạm rằng buộc.