Hiện nay có rất nhiều thuật toán khai thác dữ liệu, trong nỗ lực xác định một số thuật toán có ảnh hƣởng lớn đƣợc sử dụng nhiều trong cộng đồng khai thác dữ liệu, hội nghị quốc tế [43] về khai thác dữ liệu (IEEE International Conference on Data Mining) vào tháng 12 năm 2006 đã chọn ra top 10 thuật toán nổi tiếng (well known) trong danh sách 18 thuật toán ứng viên về khai thác dữ liệu trong đó có một số thuật toán đƣợc sử dụng nhiều nhƣ:
1.2.2.1. Thuật toán k-means
K-means là một thuật toán lặp đơn giản để chia một cơ sở dữ liệu đƣợc cho thành k nhóm (k do ngƣời dùng chỉ định). Thuật toán đƣợc phát triển bởi nhiều nhà nghiên cứu thông qua những qui tắc khác nhau, đáng chú ý là Loyd (1957, 1982), Forgey (1965), Friedman và Rubin (1967), McQueen (1967). Gray và Neuhoff [25] cung cấp một nền tảng lịch sử đẹp của k-means theo ngữ cảnh của thuật giải leo đồi (hill-climping).
Thuật toán thao tác trên một tập các vectơ D-chiều, D = {xi| i = 1 .. N} trong đó xiD
là điểm dữ liệu thứ i. Thuật toán bắt đầu bằng cách chọn k điểm làm trọng tâm. Kỹ thuật để chọn các điểm hạt giống này là “ngẫu nhiên”. Sau đó thuật toán gọi hai bƣớc sau cho đến khi hội tụ:
Bƣớc 1. Gán dữ liệu: Mỗi điểm dữ liệu đƣợc gán vào nhóm nào gần nhất. Đây là việc phân chia dữ liệu.
đƣợc tính bởi xác suất (probability measure / weights) thì đại diện đƣợc tính bằng giá trị kì vọng (expectation) của dữ liệu.
Thuật toán hội tụ khi việc gán dữ liệu không còn thay đổi nữa. Chú ý rằng mỗi lần lặp cần nk phép so sánh, chính là độ phức tạp của một lần lặp. Số lần lặp để thuật toán hội tụ tùy thuộc vào n, nhƣng nhƣ lần cắt đầu tiên, thuật toán có thể đƣợc xem xét nhƣ là tuyến tính theo kích cỡ dữ liệu.
Trong việc giải quyết vấn đề làm thế nào để xác định "biên"(closet) trong bƣớc gán. Một độ đo mặc định đƣợc sử dụng là khoảng cách Ơclic, có thể thấy hàm chi phí không âm (argmin )
1 2 n i j i j c
x sẽ giảm khi thay đổi tại bƣớc gán hay tính lại trọng tâm. Vì vậy, có thể thấy sự hội tụ sẽ đạt đƣợc ở một số bƣớc hữu hạn. Việc giảm theo kiểu tham lam của k-means dƣới dạng hàm chi phí không lồi có nghĩa là k-means sẽ tối ƣu cục bộ khi đạt đến sự hội tụ và thực sự thuật toán rất nhạy trong việc khởi tạo các trọng tâm. Bài toán tối tiểu cục bộ (local minimal) có thể đƣợc ngăn chặn bằng cách chạy nhiều lần thuật toán với nhiều giá trị khởi tạo khác nhau hay bằng cách giới hạn tìm kiếm cục bộ để hội tụ.
Nhận xét về thuật toán k-mean
Nhƣ đã trình bày ở phần trên, khái quát của việc đo khoảng cách đến tất cả các điểm của các thành phần trong nhóm K có nhiều ý kiến bất đồng liên quan đến dữ liệu với một hỗn hợp của các thành phần K theo cấp số nhân của các phân bố phù hợp. Một khái quát rộng là để xem "means" nhƣ các mô hình xác suất thay vì điểm trong không gian. Ở đây, trong bƣớc chuyển nhƣợng, mỗi điểm dữ liệu đƣợc phân nhóm với mô hình có thể đã tạo ra nó.
Dựa trên mô hình nhƣ k-means là một hƣớng tiếp cận cho các dữ liệu phức tạp, ví dụ nhƣ các trình tự mô tả bởi các mô hình Markov ẩn. Nó cũng có thể coi là "nòng cốt" cho k-means. Mặc dù ranh giới giữa các cụm vẫn còn tuyến tính trong không gian nhiều chiều, tiềm ẩn, nó có thể trở thành phi tuyến tính khi dự kiến trở lại không gian ban đầu, do đó cho phép k-means hạt nhân dùng để đối phó với nhiều cụm phức tạp. Quá trình liên tục cải tiến và phát triển từ thuật toán cơ bản đã đảm bảo k-means tiếp tục đƣợc sử dụng tốt và dần tăng hiệu quả cao.
1.2.2.2. Thuật toán SVM
Mục đích của SVM(Support vector machines) là tìm hàm phân lớp tốt nhất phân biệt hai lớp trong dữ liệu huấn luyện. Độ đo cho khái niệm “hàm phân lớp tốt nhất” có thể đƣợc nhìn nhận theo phƣơng diện hình học. Đối với dữ liệu tuyến tính, hàm phân lớp tuyến tính tƣơng ứng với với một siêu phẳng f(x) xuyên suốt khoảng giữa của hai lớp (dữ liệu của 2 lớp). Khi hàm này đƣợc xác định, một mẫu dữ liệu mới xn có thể đƣợc phân lớp đơn giản bằng cách kiểm tra dấu của hàm f(xn); xn thuộc về lớp dƣơng nếu f(xn) > 0.
Do có nhiều siêu phẳng, làm thế nào để SVM có thể chọn đƣợc siêu phẳng tốt nhất (cho lề cực đại) chia hai miền dữ liệu của hai lớp? Bằng trực giác, lề đƣợc xác định bằng lƣợng không gian hay sự chia cắt giữa hai lớp đƣợc xác định bởi siêu phẳng. Về hình học, lề tƣơng ứng với khoảng cách ngắn nhất giữa các điểm dữ liệu “gần nhau nhất” với một điểm trên siêu phẳng.
Lý do tại sao SVM cố tìm lề siêu phẳng lớn nhất là vì nó đề nghị một kết quả tổng quát tốt nhất có thể có. Điều này không chỉ cho độ chính xác tốt nhất (về độ chính xác) trên dữ liệu huấn luyện mà còn phân lớp chính xác dữ liệu trong tƣơng lai. Để bảo đảm rằng lề siêu phẳng lớn nhất đƣợc tìm thấy, phân lớp SVM cực đại hàm tƣơng ứng với v và b: t i i i t i i i p w y v x b L 1 1 ) * ( 2 1
Trong đó t là số mẫu huấn luyện và i (i=1..t) là một số không âm dẫn xuất của Lp(Lp đƣợc gọi là Lagrangian). Trong công thức này, vectơ w và hằng số b xác định siêu phẳng.
Bài toán tìm siêu phẳng tối ƣu với lề “mềm” lớn nhất chính là tìm
2 , , 2 1 min W b w +C n i i 1 với các ràng buộc 0 1 ) ( i i i i wx b y
, bài toán đối ngẫu
Lagrange TlN TK 2 1
max với các ràng buộc
y n i i i 0 1 .
Cả hai bài toán gốc và đối ngẫu đều là bài toán quy hoạch bậc 2 (Quadratic Programming). Cả 2 bài toán đều có thể giải bằng phƣơng pháp điểm trong (interior methods). Trong đó, bài toán đối ngẫu có các ràng buộc đơn giản dạng hộp nên dễ cài đặt hơn. Tuy nhiên, khi số lƣợng mẫu học n lớn, ma trận K cũng lớn theo bậc 2 của n. Vì vậy, ngay cả các phƣơng pháp điểm trong cũng có thời gian chạy rất lâu (cỡ n3). May mắn là trong trƣờng hợp của SVM, ta có những phƣơng pháp chuyên biệt, lợi dụng đƣợc cấu trúc của riêng bài toán tối ƣu này để tăng tốc độ tối ƣu hóa.
Nhận xét thuật toán SVM
Thuật toán SVM có nền tảng lí thuyết chắc chắn, có thể mở rộng công thức SVM để kiểm soát các mẫu mà chúng ta cho phép lỗi tồn tại, thậm chí siêu phẳng tốt nhất cũng còn lỗi tồn tại trên dữ liệu huấn luyện. Một trong những trở ngại của SVM là tính không hiệu quả trong tính toán. Tuy nhiên, vấn đề này có thể giải quyết tốt bằng cách chia bài toán tối ƣu lớn ra thành nhiều bài toán nhỏ, mỗi bài toán liên quan đến cặp biến đƣợc chọn cẩn thận sao cho việc tối ƣu có thể thực hiện hiệu quả.
1.2.2.3. Thuật toán Apriori
Thuật toán Apriori, một trong những thuật toán phổ biến trong hƣớng tiếp cận khai thác dữ liệu là tìm các tập phổ biến trong cơ sở dữ liệu và dẫn xuất ra luật kết hợp. Tìm tập phổ biến là một việc không tầm thƣờng bởi vì nó bùng nổ theo hàm mũ. Khi các tập phổ biến đã tìm đƣợc, nó trực tiếp tìm ra các luật kết hợp thỏa minConf.
Apriori là thuật toán nền tảng để tìm các tập phổ biến sử dụng phƣơng pháp sinh ứng viên. Nó có đặc điểm là tìm kiếm theo chiều rộng sử dụng tính chất Apriori. Theo qui ƣớc, Apriori giả định rằng các items đƣợc sắp xếp theo thứ tự từ điển. Cho một tập các itemset phổ biến có kích thƣớc k là Fk và tập ứng viên của chúng là Ck. Apriori quét cơ sở dữ liệu lần thứ nhất để tìm kiếm các item đơn thỏa minSup. Nó sau đó lặp lại 3 bƣớc sau để tìm các tập phổ biến.
Bƣớc 1. Sinh tập ứng viên Ck+1 từ các tập phổ biến có k phần tử.
Bƣớc 2. Quét cơ sở dữ liệu để đếm độ phổ biến của các ứng viên.
Bƣớc 3.Thêm các tập này vào danh sách các tập phổ biến có k+1 phần tử nếu nó thỏa minSup.
Nhận xét thuật toán Apriori
Có thể thấy thuật toán phải quét cơ sở dữ liệu max + 1 lần với max là chiều dài của tập phổ biến dài nhất.
Thuật toán Apriori thực thi tốt bằng việc giảm không gian dựa vào tính chất Apriori. Tuy nhiên, với trƣờng hợp số tập phổ biến đƣợc sinh ra lớn, max lớn hay minSup nhỏ dẫn đến tập ứng viên sinh ra rất lớn và mất nhiều lần quét cơ sở dữ liệu thì thuật toán tốn nhiều chi phí. Trong thực tế, cần phải sinh (trong trƣờng hợp xấu nhất) 2100 ứng viên để tìm tập phổ biến có kích thƣớc 100.
Nhiều thuật toán tìm kiếm mẫu nhƣ cây quyết định, luật phân lớp và kỹ thuật gom nhóm thƣờng đƣợc sử dụng trong data mining đƣợc phát triển trong cộng đồng nghiên cứu máy học. Khai thác mẫu phổ biến và luật kết hợp là một trong những ngoại lệ của truyền thống này. Sự giới thiệu này tăng cƣờng khả năng nghiên cứu trong khai thác dữ liệu và tác động của nó là rất lớn. Thuật toán rất đơn giản và rất dễ cài đặt. Thực nghiệm của các thuật toán tựa Apriori là việc đầu tiên các nhà khai thác dữ liệu cố gắng thử nghiệm.
Do Apriori đƣợc giới thiệu đầu tiên và kinh nghiệm đƣợc tích lũy dần, hiện tại đã có nhiều thuật toán hiệu quả đƣợc giới thiệu. nhiều trong số đó chia sẻ chung các ý tƣởng của Apriori ở cách nó sinh các ứng viên bao gồm: kỹ thuật dựa trên bảng băm, phân đoạn, lấy mẫu, sử dụng định dạng dữ liệu dọc,…Hash-based có thể làm giảm kích thƣớc các ứng viên. Mỗi itemset đƣợc băm (hash) vào các thùng (bucket) tƣơng ứng với hàm băm xấp xỉ. Do mỗi bucket có thể chứa các itemset khác nhau nên nếu số phần tử của nó không thỏa minSup thì tất cả các ứng viên trong bucket sẽ bị xóa. Phân đoạn đƣợc dùng để toàn bộ bài toán khai thác thành n bài toán con nhỏ hơn, CSDL đƣợc chia thành n phần không trùng nhau sao cho mỗi phần có thể đƣợc đọc lên bộ nhớ chính và mỗi phần sẽ đƣợc khai thác độc lập nhau. Do bất kì tập phổ biến tiềm năng nào trên toàn bộ CSDL cũng phải phổ biến ở ít nhất một phân đoạn, tất cả các itemset đƣợc tìm thấy bởi cách này đƣợc gọi là ứng viên, chúng có thể đƣợc kiểm tra bằng cách duyệt CSDL 1 lần. Lấy mẫu là cách đơn giản
dụng định dạng dữ liệu dọc (itemset kết hợp với Tids). Với định dạng này, khai thác có thể đƣợc thực hiện bằng cách tìm phần giao giữa các Tids. Độ phổ biến đơn giản chỉ là lực lƣợng của Tids. Không cần duyệt CSDL lại vì chỉ cần dựa vào lực lƣợng của Tids để có độ hỗ trợ (support).
1.2.2.4. Phƣơng pháp IT-Tree
Cấu trúc IT-Tree [32] (Itemset Tidset-tree) và các lớp tƣơng đƣơng:
Cho I là tập các danh mục và X I. Ta định nghĩa một hàm p(X,k) = X[1:k] gồm k phần tử đầu của X và một quan hệ tƣơng đƣơng dựa vào tiền tố (prefix- based) Ktrên itemset nhƣ sau: X,Y I,X k Y p(X,k) p(Y,k)
Nghĩa là, hai itemset có cùng một lớp tƣơng đƣơng khi và chỉ khi chúng chia sẻ chung k phần tử đầu phổ biến. Mỗi nút trong IT-Tree đại diện cho một cặp Itemset-Tidset Xt(X), thực tế là một lớp tiền tố. Tất các các nút con của nút X
thuộc về lớp tƣơng đƣơng của nó bởi vì chúng chia sẻ cùng tiền tố X.
Kí hiệu một lớp tƣơng đƣơng là P l1,l2,...,ln, trong đó P là nút cha và mỗi
li là một mục dữ liệu đơn, đại diện cho nút Plit(Pli). Chẳng hạn, nút gốc của cây tƣơng ứng với lớp [] = {A,C,D,T,W}, nút trái cùng của gốc là lớp [A] chứa tất cả các itemset chứa A là tiền tố, nghĩa là tập {C,D,T,W}. Nhƣ vậy, mỗi lớp thành viên đại diện cho một con của nút cha. Một lớp đại diện cho các mục dữ liệu mà các mục dữ liệu đó là tiền tố để có thể mở rộng thành các lớp phổ biến mới. Rõ ràng, không có cây con nào của một tiền tố không phổ biến đƣợc xem xét. Sức mạnh của phƣơng pháp lớp tƣơng đƣơng là nó chia không gian tìm kiếm ban đầu thành các vấn đề nhỏ độc lập. Đối với mỗi nút gốc con của nút X, có thể xem nó nhƣ một vấn đề mới hoàn toàn, mỗi nút có thể sinh ra các mẫu dƣới nó.
Thuật toán phát sinh tập phổ biến
Đầu vào: Lớp tƣơng đƣơng [P] ban đầu chứa tất cả các tập phổ biến 1-itemset và ngƣỡng phổ biến minSup.
Hình 1.1 Thuật toán IT-Tree phát sinh tập phổ biến thỏa ngƣỡng minSup
Ví dụ 1.8 (minh họa IT-Tree)
Bảng 1.8 CSDL giao dịch
Xét CSDL ở bảng 1.8 với minSup = 50% (chứa từ 3 TID trở lên). Ta có cây minh họa cho quá trình tìm tập phổ biến nhƣ hình 1.2.
Mã giao dịch Nội dung giao dịch
1 A, C, T, W 2 C, D, W 3 A, C, T, W 4 A, C, D, W 5 A, C, D, T, W 6 C, D, T ECLAT() [] = {i I: (i)minSup} ENUMERATE_FREQUENT([]) ENUMERATE_FREQUENT([P]) for all li [P] do [Pi] =
for all lj [P] with j > i do I = lilj
T = t( li ) t( lj ) if |T| minSup then
[Pi] = [Pi] {IT}
Hình 1.2 Kết quả khai thác với ngƣỡng minsup =50% Nhận xét thuật toán
Cây tìm kiếm IT-Tree luôn lệch trái do:
i) Ứng với mỗi lớp tƣơng đƣơng li, ta cần xét với mọi lj ( j > i), cho nên i càng nhỏ thì số lƣợng j cần xét càng lớn.
ii) Khi | t(li) | > | t(lj) | thì phần giao nhau giữa t(li) với các lớp tƣơng đƣơng khác thƣờng sẽ lớn hơn phần giao của t(lj)với các lớp tƣơng đƣơng còn lại.Với các nhận xét trên, ta thấy: với i) không thể cải thiện đƣợc, còn để tránh ii) ta chỉ cần sắp xếp các li trong lớp tƣơng đƣơng [P] theo chiều tăng dần của độ hỗ trợ. Và với sự cải tiến này, cây IT-Tree sẽ ít lệch trái hơn.