2.5. Kết chơng
PhÇn 1
2.1. Giới thiệu bài toán phân nhóm
2.1.1. Phân nhóm dữ liệu
Kỹ thuật phân nhóm là một kỹ thuật học không giám sát thú vị trong các cơ chế học và lĩnh vực thống kê. Một cách tổng quát kỹ thuật phân nhóm sử dụng để phân chia tập hợp các phần tử dữ liệu ban đầu thành các nhóm gồm các phần tử tương tự nhau theo một, một số khía cạnh nào đó. Phân nhóm dựa trên nguyên tắc cực đại hoá tính tương đồng trong một nhóm và cực tiểu hoá tính tương đồng giữa các nhóm [1, 8, 11, 20, 23].
Sự khác nhau giữa phân lớp dữ liệu và phân nhóm dữ liệu:
• Phân lớp dữ liệu: tên lớp và số lượng lớp được biết trước.
• Phân nhóm dữ liệu: tên và số lượng nhóm là không biết trước.
2.1.2. Bài toán “Phân nhóm văn bản”
Phân nhóm văn bản cũng là một kĩ thuật phân nhóm dữ liệu, thực hiện quá trình tự động phân các văn bản, tài liệu thành các nhóm để các văn bản trong cùng một nhóm có độ tương tự cao và khác với các văn bản trong nhóm khác [8, 11, 20].
Khái niệm tự động ở đây có thể hiểu như là một quá trình hoàn toàn tự động, không có sự tham gia của con người vào bất cứ thời điểm nào của toàn bộ tiến trình phân nhóm. Bởi vậy, phân nhóm còn được gọi là học không giám sát (unsupervised learning method) hay học không thầy dạy vì chúng ta chỉ học bằng “quan sát” hơn là học từ “ví dụ”.
Phân nhóm văn bản được nghiên cứu rộng rãi bởi các ứng dụng của nó là rất lớn. Chẳng hạn như khai phá dữ liệu văn bản (text mining), khai phá dữ liệu web (web mining), tìm kiếm thông tin (information retrieval), phân tích hình học (topological analysis),...
2.2. Các yêu cầu ủ c a kĩ thuật phân nhóm
Hiện nay các thuật toán phân nhóm phải chú trọng đáp ứng những yêu cầu sau [11]:
• Tính phạm vi (Scalability): Nhiều thuật toán tỏ ra làm việc hiệu quả trên tập dữ liệu nhỏ, tuy nhiên một vài trong số chúng lại không thể thực hiện khi tập dữ liệu vượt quá 10000 đối tượng.
• Tính đa chiều cao (High dimensionality): Một cơ sở dữ liệu có thể chứa nhiều thuộc tính. Hầu hết các thuật toán đều hoạt động hiệu quả với dữ liệu ít thuộc tính nhưng có thể thất bại khi thực hiện trên các dữ liệu nhiều thuộc tính. Các thuộc tính này khi mã hoá được coi là các chiều. Chẳng hạn, một tập văn bản tiếng Anh có thể có 10000 từ sẽ tạo ra một cơ sở dữ liệu lên đến 10000 chiều.
• Đảm bảo hình dạng Đại số của các nhóm (Arbitrary shape of cluster): Các nhóm xác định cần đảm bảo vẫn giữ nguyên hình dạng Đại số tự nhiên.
Ví dụ: một số thuật toán thực hiện phân nhóm đều dựa trên khoảng cách Euclidean hay Manhattan để đo lường sự khác nhau về độ tương tự, hiển nhiên, những thuật toán đó sẽ tạo ra những nhóm có dạng hình cầu. Điều này làm giới hạn độ chính xác.
• Không nhạy cảm với dữ liệu đầu vào (Insensitivity to the order of input data): Một số thuật toán rất nhạy cảm với trật tự dữ liệu vào. Điều này làm cho chất lượng của phân nhóm biến đổi và trở nên không dự đoán được.
• Kiểm soát nhiễu (Noisy data handling): Dữ liệu có sai sót là một vấn đề thường thấy. Sai sót được gọi chung là nhiễu. Một thuật toán phân nhóm tốt cần cực tiểu hoá ảnh hưởng của nhiễu nếu không sẽ giảm độ chính xác.
2.3. Các thuật toán Phân nhóm cơ bản hiện nay
Các thuật toán Phân nhóm dữ liệu cơ bản hiện nay [8, 11, 23]:
• Các giải thuật dựa trên tập thuật ngữ xuất hiện thường xuyên (Document Clustering Using Frequent Itemsets)
• Các giải thuật phân vùng (Partitionning Algorithms)
• Các giải thuật dựa trên mật độ (Densit-based Algorithms)
• Các giải thuật dựa trên các lưới dữ liệu (Grid-based Algorithms),...
Phần dưới đây cung cấp một cái nhìn tổng quan về các giải thuật phân nhóm này và tập trung đi sâu vào một giải thuật phân nhóm sẽ được sử dụng trong luận văn.
2.3.1. Các phương pháp phân chia (Partitionning Algorithms)
Các phương pháp phânchia thực hiện chia một tập dữ liệu thành các nhóm riêng rẽ [8, 11, 23]. Ví dụ: để phân một tập các đối tượng dữ liệu thành k nhóm, thuật toán tiến hành chia chúng ngay từ đầu thành nhóm. Sau đó, liên tục cải tiến, k xác định lại các nhóm bằng cách di chuyển các đối tượng dữ liệu ở nhóm này sang nhóm khác cho đến khi thỏa mãn một số điều kiện.
Thuật toán k-means do J.MacQueen đưa ra vào năm 1967 và các biến thể của nó (k-means chia đôi - bisecting K-Means,... ) được biết đến như là các thuật toán phân chia nổi tiếng. Chúng thường khác nhau trong việc xác định trọng tâm k ban đầu, tính toán độ tương tự và phương pháp tính toán trọng tâm để giảm thời gian tính toán.
Hình 2.1. Ví dụ mô tả giải thuật k-means
Hình 2.1. Ví dụ mô tả giải thuật k-means
a - Bước 1: khởi tạo ; b Vòng lặp đầu tiên; c Vòng lặp thứ hai (trạng thái dừng);- - 2.3.2. Phương pháp phân nhóm dựa trên hàm mật độ (Density- Based)
Phương pháp phân nhóm dựa trên mật độ là các phương pháp dựa trên ý tưởng: các nhóm ban đầu là các vùng dầy đặc trong không gian dữ liệu sẽ được tách thành các vùng có mật độ đối tượng thấp hơn. Tiếp tục đối với các nhóm mới tách ra cho đến khi mật độ vùng lân cận vượt qua giá trị ngưỡng. Nói cách khác, với mỗi
điểm bất kì trong một nhóm, mật độ điểm địa phương xung quanh điểm đó phải không vượt quá ngưỡng. Một nhóm sẽ được xác định dựa trên 3 tiêu chí: mật độ (density), các kết nối với những điểm khác (connectivity) và đường biên (boundary) [8, 11, 23].
Có hai cách tiếp cận đối với các phương pháp phân nhóm dựa trên mật độ:
• Density-Based Connectivity: bao gồm các giải thuật được biết đến như DBSCAN, GDBSCAN, OPTICS, và DBCLASD. Hướng tiếp cận này dựa trên giá trị mật độ và các kết nối giữa các điểm dữ liệu.
• Density Functions: ví dụ giải thuật DENCLUE,... tiếp cận theo một số hàm mật độ.
2.3.3. Phương pháp phân nhóm dựa trên lưới (Grid-Based Method)
Các phương pháp phân nhóm dựa trên lưới thực hiện lượng tử hóa không gian thành số lượng hữu hạn các ô (cell) để tạo thành cấu trúc lưới. Sau đó tất cả các thao tác phân nhóm được thực hiện trên cấu trúc lưới. Độ phức tạp tính toán không phụ thuộc vào số các đối tượng dữ liệu mà chỉ phụ thuộc vào số các cell trong mỗi chiều trong không gian đã được lượng tử hoá [8, 11, 23].
Hình 2.2. Mô tả một giải thuật phân nhóm dựa trên lưới
Trong số các giải thuật phân nhóm dựa trên lưới thì STING (Statistical Information Grid) là một phương pháp phân nhóm dựa trên lưới nổi tiếng dùng cho dữ liệu không gian. Ta không đi sâu vào chi tiết của giải thuật này trong luận văn.
2.3.4. Phân nhóm dựa trên thuật ngữ xuất hiện thường xuyên (Frequent Itemset)
Các phương pháp sử dụng thuật ngữ thường xuyên để phân nhóm được đánh giá là nhiều hứa hẹn trong bài toán phân nhóm nói chung và phân nhóm văn bản nói riêng. Đây cũng là phương pháp phân nhóm tác giả đã lựa chọn khi tiếp cận bài toán nghiên cứu của luận văn. Nguyên nhân là nó khắc phục được những nhược điểm mà một số giải thuật phân nhóm khác gặp phải như:
• Không thực sự giải quyết được vấn đề số chiều quá lớn trong bài toán phân nhóm. Không đáp ứng được khi số chiều lên đến 10000 thuật ngữ/ số chiều.
• Bất lợi khi kích thước của cơ sở dữ liệu quá lớn...
Quá trình phân nhớm dựa trên thuật ngữ xuất hiện thường xuyên gồm hai bước:
• Xác định tập các thuật ngữ xuất hiện thường xuyên
• Sử dụng một giải thuật phân nhóm dựa trên tập thuật ngữ thường xuyên đã xác định
2.3.4.1. Các giải thuật xác định tập các thuật ngữ xuất hiện thường xuyên Có nhiều giải thuật xác định tập các thuật ngữ xuất hiện thường xuyên nổi tiếng như:
Thuật toán AIS
Thuật toán STM
Thuật toán Apriori
Thuật toán FP Growth,...
Chúng ta sẽ xem xét hai thuật toán hay được sử dụng là thuật toán Apriori và FP Growth.
2.3.4.1.1. Giải thuật Apriori
Thuật toán này sử dụng các k-itemset (tập thuật ngữ gồm thuật ngữ xuất k hiện thường xuyên) để thăm dò (k+1)-itemset và qua đó khai thác được toàn bộ các tập thuật ngữ thường xuyên (FIs) trong tập dữ liệu [8, 11].
Đầu tiên tính 1-itemsets 2-itemsets, và sau đó là 3-itemsets…
Khi tính toán (k+1)-itemsets, chỉ xét những (k+1)-itemsets mà tất cả các tập con có độ dài đã được xác định là thường xuyên ở bước trước.k
Mô tả giải thuật Apriori:
Biến Ck: Các tập thuật ngữ ứng cử có kích thước k.
Biến Lk: Các tập thuật ngữ thường xuyên kích thước k.
L1 = {Các thuật ngữ thường xuyên mức 1};
For (k=1; L k!=ỉ; k++) do Begin
//Bước kết hợp: Kết hợp Lk với bản thân nó để tạo ra Ck+1
//Bước cắt tỉa: Loại bỏ (k+1)-itemsets từ Ck+1chứa k-itemsets không thường xuyên Ck+1 = các ứng cử viên được tạo ra từ Lk
For mỗi văn bản t trong cơ sở dữ liệu do
Tăng số lượng của tất cả các ứng cử viên trong Ck+1 có chứa trong t Lk+1 = các ứng cử viên trong Ck+1có GS > min_support
end
Return k Lk
Ví dụ:
Hình 2.3. Ví dụ về thuật toán Apriori
Phương pháp tạo và kiểm tra của giải thuật Apriori làm việc tốt. Tuy nhiên, một số lượng lớn itemset được tạo ra. Nếu có tập m 1-FIs m ( tập 1-item frequent) thì
có đến m*(m-1)/2 tập 2-FIs được tạo ra. Ngoài ra, thuật toán đòi hỏi quét nhiều lần toàn bộ dữ liệu để kiểm tra thuật ngữ thường xuyên, nó đòi hỏi (n+1) lần quét với n là số lượng k-FIs lớn nhất. Đây cũng là nhược điểm của giải thuật này.
2.3.4.1.2. Giải thuật FP Growth
Thuật toán FP-growth thông qua ý tưởng chia để trị (divide & conquer approach) để cực tiểu số lượng itemset tạo ra. FP growth tránh lặp lại số lần quét cơ - sở dữ liệu, chỉ quét hai lần toàn bộ cơ sở dữ liệu và khai thác cấu trúc dữ liệu thành cây FP để tìm kiếm tất cả FI [8, 11].
Ví dụ: Xây dựng cây FP với Min_support = 0.5
Bảng 2.1. Dữ liệu đầu vào để xây dựng cây FP
DocID Items Frequent items
100 {f, a, c, d, g, i, m, p} {f, c, a, m, p}
200 {a, b, c, f, l, m, o} {f, c, a, b, m}
300 {b, f, h, j, o} {f, b}
400 {b, c, k, s, p} {c, b, p}
500 {a, f, c, e, l, p, m, n} {f, c, a, m, p}
Các bước tiến hành:
1. Quét cơ sở dữ liệu, tìm ra các tập thuật ngữ thường xuyên ở mức 1.
2. Sắp xếp các thuật ngữ thường xuyên theo thứ tự giảm dần.
3. Quét cơ sở dữ liệu lại và xây dựng cây FP.
Hình 2.4. Ví dụ về xây dựng cây FP
Mặc dù thuật toán FP hiệu quả nhưng có lúc nó lại không thể tạo ra được cấu trúc cây FP trong bộ nhớ chính khi dữ liệu quá lớn. Khi đó ta lại cần phải chia tập dữ liệu cần phân nhóm ra thành những tập dữ liệu nhỏ hơn để có thể xây dựng cây.
2.3.4.2. Các giải thuật phân nhóm dựa trên thuật ngữ xuất hiện thường xuyên
Có nhiều giải thuật phân nhóm dựa trên thuật ngữ xuất hiện thường xuyên nổi tiếng như: thuật toán FTC, HFTC, FIHC,... [8, 11] trong đó ta sẽ tìm hiểu kĩ hơn về giải thuật phân nhóm FIHC được tác giả lựa chọn sử dụng trong luận văn.
2.4.3.2.1. Thu toán FTC (Frequent Term based Clustering)ật -
Thuật toán FTC xác định cách phân nhóm không phân cấp. FTC làm việc từ dưới lên (bottom-up). Nó bắt đầu với một tập rỗng, sau đó tiếp tục lựa chọn thêm một bộ thuật ngữ trong tập những bộ thuật ngữ xuất hiện thường xuyên còn lại cho đến khi toàn bộ cơ sở dữ liệu được bao gồm trong toàn bộ tập tất cả các bộ thuật ngữ xuất hiện thường xuyên được lựa chọn.
Tại mỗi bước, FTC lựa chọn bộ thuật ngữ xuất hiện thường xuyên còn lại có phần lồng nhau với những nhóm khác là nhỏ nhất. Các văn bản chứa bộ thuật ngữ xuất hiện thường xuyên đã được lựa chọn sẽ bị loại bỏ khỏi cơ sở dữ liệu và trong lần lặp tiếp theo, phần lồng nhau của các nhóm đại diện còn lại được tính toán lại đối với cơ sở dữ liệu đã được giảm bớt [8, 11].
2.4.3.2.2.Thuật toán HFTC (Hierarchical Frequent Term based Clustering)- Thuật toán HFTC - Phân nhóm dựa trên thuật ngữ xuất hiện thường xuyên có phân cấp - xây dựng dựa trên thuật toán FTC không phân cấp.
Ý tưởng thực hiện của HFTC là dựa trên tính đơn điệu của thuộc tính, các bộ thuật ngữ xuất hiện thường xuyên tạo thành một cấu trúc mắt lưới: tất cả các tập con bậc 1 của các tập bậc 2 thường xuyên cũng là thường xuyên, tất cả tập con bậc 2 của tập bậc 3 thường xuyên cũng là thường xuyên,… Thuộc tính này có thể được khai thác để phát hiện một nhóm dựa trên thuật ngữ xuất hiện thường xuyên có phân cấp.
Nghĩa là để phân chia lần nữa một nhóm thuật ngữ xuất hiện thường xuyên cấp k+1 nó sẽ sử dụng bộ thuật ngữ xuất hiện thường xuyên cấp mô tả nhóm đó k [8, 11].
2.4.3.2 3. Thuật toán FIHC (Frequent Item-Based Hierarchical Clustering) Đây là thuật toán mới, hiệu quả của thuật toán được xếp vào trong hàng bậc nhất của các thuật toán phân nhóm dựa trên tập thuật ngữ xuất hiện thường xuyên.
Thuật toán HFTC kết nạp các FI theo thuật háu ăn nhằm cực tiểu độ chồng chéo của những văn bản mà chứa cả các thuật ngữ đã nạp lẫn thuật ngữ chưa nạp Điểm yếu của HFTC là phụ thuộc nhiều vào trật tự văn bản đầu vào trong khi thuật toán FIHC không theo thứ tự tuần tự lựa chọn nhóm. Hơn nữa, các văn bản luôn được chỉ định vào nhóm tốt nhất.
Trước tiên ta đi vào một số khái niệm:
• Tập thuật ngữ thường xuyên toàn cục GFS (global frequent itemset) là tập các thuật ngữ xuất hiện trong nhiều hơn một văn bản của tập văn bản.
• Một thuật ngữ thường xuyên toàn cục GFI (global frequent item) là một thuật ngữ thuộc một vài GFS. Một GFS chứa k thuật ngữ gọi là GFS mức k.
• Global support (ký hiệu là GS) của tập thuật ngữ là phần trăm văn bản chứa tập thuật ngữ đó.
Để tạo ra GFS từ tập văn bản, chúng ta áp dụng một giải thuật xác định tập thuật ngữ xuất hiện thường xuyên trên những vector văn bản và dùng một tham số đi kèm là GS nhỏ nhất (minimum global support). Sau đó, với mỗi văn bản, chúng ta lưu trữ các trọng số tần suất cho các GFI. Chúng ta gọi những tần suất này là vector thuộc tính (feature vector). Rõ ràng điều này làm giảm số chiều của vector hơn so với các phương pháp khác và tăng hiệu quả đáng kể do chúng ta dùng feature vector (vector thuộc tính đặc trưng) chứ không dùng document vector (vector văn bản).
Thuật toán FIHC bao gồm hai giai đoạn [8, 11]:
Xây dựng các Cluster khởi tạo
Dựng cây Cluster
A- Xây dựng các Cluster khởi tạo
Quá trình xây dựng cây có hai bước: xây dựng các nhóm khởi đầu và tạo các nhóm tách biệt (không chồng chéo).
Khởi tạo các nhóm:
Các nhóm khởi tạo được xây dựng cho mỗi GFS. Tất cả các văn bản chứa tập thuật ngữ này đều được gộp vào chung một nhóm. Rõ ràng những cluster khởi tạo bị chồng chéo lên nhau.
Mục đích để tạo ra các nhóm khởi tạo là đảm bảo cho mọi văn bản trong nhóm chứa tất cả các thuật ngữ trong GFS. Nói cách khác, các thuật ngữ trong GFS tạo nên nhóm là những thuật ngữ có tính chất bắt buộc có mặt trong văn bản. GFS được coi như là nhãn của nhóm (cluster label) để nhận dạng nhóm. Nhãn của nhóm có hai tác dụng: một là nó xác lập cây phân cấp trong giai đoạn tạo cây, hai là nó dễ dàng để người dùng duyệt cây
Tạo các Cluster tách rời:
Công thức (2.1) tính Score(Ci←docj) đo mức độ tốt của nhóm Ci khởi tạo cho văn bản docj. Để tạo các nhóm không chồng chéo, chúng ta chỉ định mỗi docj vào một nhóm khởi tạo Cj với scorei cao nhất. Sau việc chỉ định này, mỗi văn bản thuộc về chính xác một nhóm.
Score(Ci←docj)=|∑xn(x)*Cluster_Support(x) -| |∑x’n(x’)*Cluster_Support(x’)| (2.1) Trong đó:
x biểu diễn thuật ngữ thường xuyên toàn cục (GFI) trong docj và cũng là thuật ngữ thường xuyên của nhóm Ci,
x’ biểu diễn GFI trong docj và không phải thuật ngữ thường xuyên của Ci.
n(x) là trọng số tần suất của x trong vector thuộc tính của văn bản docj
n(x’) là trọng số tần suất của x’ trong vector thuộc tính của văn bản docj.
n(x) và n(x’) được xác định bằng tần suất TF x IDF của các thuật ngữ x và . x’
B- Xây dựng cây Cluster
Tập các nhóm được tạo ra ở bước trước có thể được xem như là tập các chủ đề và các chủ đề con trong tập văn bản. Ta sẽ xây dựng một cây cluster (hay chủ đề)
dựa trên độ tương tự giữa các nhóm. Nếu cây có quá nhiều nhóm, hai phương pháp cắt, tỉa cây được áp dụng để làm ngắn và nông cây một cách hiệu quả bằng cách kết hợp các nhóm tương tự nhau.
Quá trình xây dựng cây cluster : gồm hai bước
Dựng cây
Tỉa, trộn, tối ưu cây.
Dựng cây:
Chúng ta sẽ tạo ra một cây cluster phân cấp không chồng chéo. Mỗi nhóm chỉ có duy nhất một nhóm cha. Chủ đề của nút cha sẽ mang tính chung hơn chủ đề của nhóm con và chúng có độ tương tự nhất định.
Giải thuật tạo cây được minh họa dưới đây:
Giải thuật dựng cây
1. Xếp các nhóm theo số lượng thuật ngữ có trong nhãn của nhóm đó theo số lượng giảm.
2. For mọi nhóm Citrong danh sách do {
//Xoá nút lá rỗng
If (Ci không chứa văn bản nào) and (Cikhông có các nhóm con nào) then Bỏ qua nhóm Ci và chuyển tới nhóm Ci+1;
// Nhận dạng tất cả các nút cha có thể có
k:= số lượng các thuật ngữ trong nhãn của nhómCi;
PotentialParents = Tìm tất cả các nhóm chứa nhãn nhóm với k-1 thuật ngữ và nhãn nhóm là tập con của nhãn của nhóm Ci ;
// Chọn nút cha tốt nhất
doc(Ci):= Hoà trộn tất cả các văn bản trong cây con Ci vào một văn bản duy nhất;
Tính toán các score của doc(Ci) với các nút cha có thể có ; Chọn nút cha có score cao nhất để làm cha của nhóm Ci;
}