Thuật toán K-Means phân cấp

Một phần của tài liệu phương pháp học nửa giám sát và ứng dụng (Trang 55 - 77)

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.

3.2.Tính toán các cụm mới, tính điểm trung bình.

4. Until

4.1.Không có thay đổi về các tâm cụm (tức là trọng tâm không thay đổi vị trí nữa) HOẶC 4.2.Không có đối tƣợng thay đổi cụm của nó.

Lựa chọn các nhân Chuyển các đối tƣợng văn bản

Tính toán lại các nhân

* Tổng bình phƣơng phân dƣ (RSS - Residual Sum of Squares)

RSS là một cách tốt để tính trọng tâm đại diện cho các đối tƣợng của cụm. Đƣợc tính bằng tổng bình phƣơng khoảng cách của mỗi vector từ trọng tâm của nó đến tất cả các vector.

Trong đó:

- wk: Văn bản phân cụm k

- ⃗: Tâm của cụm văn bản wk - ⃗: Véctơ văn bản trong cụm k

3.4. Cài đặt chƣơng trình thử nghiệm 3.4.1. Nội dung chƣơng trình 3.4.1. Nội dung chƣơng trình

Mỗi tài liệu đƣợc biểu diễn nhƣ là một vector sử dụng mô hình không gian vector. Mô hình không gian vector còn gọi là mô hình vector là một mô hình đại số để đại diện cho tài liệu văn bản (hoặc bất kỳ đối tƣợng, nói chung) là vectơ của định danh.

- Lớp DocumentVector: chứa các tài liệu và đại diện tƣơng ứng của nó

trên không gian vector.

public class DocumentVector {

//Content represents the document (or any other object) to be clustered

public string Content { get; set; }

//represents the tf*idf of each document public float[] VectorSpace { get; set; } }

- Lớp DocumentCollection chứa tất cả các tài liệu của tắm

class DocumentCollection {

public List<String> DocumentList { get; set; } }

- TF-IDF là viết tắt của Tần số tài liệu -Tần số nghịch đảo, là số thống kê

phản ánh tầm quan trọng của một từ là một tài liệu trong danh sách, là phƣơng pháp trọng phổ biến nhất đƣợc sử dụng để mô tả các tài liệu trong không gian mô hình Vector.

Số lần một thuật ngữ xuất hiện trong một tài liệu đƣợc gọi là tần số của nó. Chúng ta có thể tính toán tần số cho một từ nhƣ tỷ lệ số lần từ xảy ra trong văn bản trên tổng số từ trong tài liệu.

Tần số tài liệu nghịch đảo đƣợc tính bằng cách chia tổng số tài liệu cho số tài liệu có chứa thuật ngữ, và sau đó dùng logarit của thƣơng đó.

//Calculates TF-IDF weight for each term t in document d private static float FindTFIDF(string document, string term) {

float tf = FindTermFrequency(document, term); float idf = FindInverseDocumentFrequency(term); return tf * idf;

}

private static float FindTermFrequency(string document, string term)

{

int count = r.Split(document).Where(s => s.ToUpper() == term.ToUpper()).Count();

//ratio of no of occurance of term t in document d to the total no of terms in the document

return (float)((float)count / (float)(r.Split(document).Count())); }

private static float FindInverseDocumentFrequency(string term) {

//find the no. of document that contains the term in whole document collection

int count = documentCollection.ToArray().Where(s => r.Split(

s.ToUpper()).ToArray().Contains(term.ToUpper())).Count(); /*

* log of the ratio of total no of document in the collection to the no. of document containing the term * we can also use

Math.Log(count/(1+documentCollection.Count)) to deal with divide by zero case;

*/

return (float)Math.Log((float)documentCollection.Count() / (float)count);

}

- Tìm điểm tƣơng đồng: Đầu vào của hàm là hai vecto */A, B đại diện

cho hai văn bản, kết quả trả về là số điểm tƣơng tự (giữa 1 và 0)

Một phần của tài liệu phương pháp học nửa giám sát và ứng dụng (Trang 55 - 77)

Tải bản đầy đủ (PDF)

(77 trang)