2.4.1. Một số tính chất của tập mục thường xuyên
- Tính chất 1: Độ hỗ trợ của tập con
Nếu X Y, (X, Y là các tập mục) thì s(X) ≥ s(Y).
Chứng minh: Tất cả các tác vụ đều nằm trong D Điều phải chứng minh
- Tính chất 2: Một tập chứa tập không thƣờng xuyên thì nó cũng là tập không thƣờng xuyên. Tức là: Nếu X Y và s(X) < minsup thì s(Y) < minsup.
Chứng minh: Ta có X Y theo tính chất 1 thì s(Y) ≤ s(X) và s(X) < minsup s(Y) < minsup Điều phải chứng minh
- Tính chất 3: Các tập con khác rỗng của một tập mục thƣờng xuyên cũng là tập mục thƣờng xuyên. Tức là nếu X Y và s(Y) ≥ minsup thì s(X) ≥
minsup.
Chứng minh: Theo tính chất 1 ta có s(X) ≥ s(Y) và ta có s(Y) ≥ minsup
s(X) ≥ minsup Điều phải chứng minh.
2.4.2. Một số tính chất của luật kết hợp.
- Tính chất 1: Không hợp các luật kết hợp
Nếu có hai luật X→Y và Y→Z trong D thì không nhất thiết XY→Z đúng.
Xét trƣờng hợp XY= và các giao dịch trong D hỗ trợ Z nếu chỉ nêu chúng chỉ hỗ trợ X hoặc Y, khi đó X Y→ Z có độ hỗ trợ 0%
Tƣơng tự X→Y, và X→Z thì không nhất thiết X→YZ là đúng.
- Tính chất 2: Không tách luật.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Ví dụ: Trƣờng hợp Z có mặt trong một tác vụ chỉ khi cả X và Y cùng có mặt. Tức là s(XY), s(Z) nếu độ hỗ trợ của X và Y thỏa mãn s(X)>s(XY) và s(Y)>s(XY) thì hai luật riêng biệt sẽ không đủ độ tin cậy.
- Tính chất 3: Các luật kết hợp không có tính chất bắc cầu. Nếu XY và YZ thì không thể suy ra XZ
Ví dụ: Giả sử t(X), t(Y), t(Z) là số tác vụ tƣơng ứng của X, Y, Z và độ tin cậy cực tiểu là minconf, c(XY) = c(YZ) = minconf thì c(XZ) =
minconf2 < minconf vì minconf < 1, do đó luật không đủ độ tin cậy.
- Tính chất 4:
+ Nếu luật X(L-X) không thỏa mãn độ tin cậy cực tiểu thì luật Y(L-Y) cũng không thỏa mãn, với X, Y, L là các tập mục và YX.
Ta có s(Y) ≥ s(X) nên c(L(L-Y)) = conf X s L s Y s L s min ) ( ) ( ) ( ) (
+ Nếu có luật (L-X)X thoả mãn độ tin cậy thì ta có luật (L-Y)Y cũng thoả mãn độ tin cậy, với X, Y, L là các tập mục và YX. Vì YX nên
(L-X)(L-Y), do đó s(L-Y) ≤ S(L-X) conf
X L s L s Y L s L s min ) ( ) ( ( ) (
2.5. Một số hƣớng tiếp cận trong khai phá luật kết hợp
Khai phá luật kết hợp đã đƣợc nghiên cứu và phát triển theo nhiều hƣớng khác nhau. Có những đề xuất cải tiến thuật toán, có những đề xuất tìm kiếm luật có ý nghĩa hơn…Sau đây là một số hƣớng tiếp cận chính:
- Luật kết hợp nhị phân (binary association rule): Là hƣớng nghiên cứu đầu tiên của luật kết hợp. Theo dạng luật kết hợp này thì các items chỉ đƣợc quan tâm là có hay không xuất hiện trong cơ sở dữ liệu giao tác (Transaction database) chứ không quan tâm về mức độ hay tần xuất hiện. Thuật toán tiêu biểu cho khai phá luật kết hợp nhị phân là thuật toán Apriori.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
- Luật kết hợp có thuộc tính và thuộc tính hạng mục (Quantitative and categorial association rule): Các cơ sở dữ liệu thực tế thƣờng có các thuộc tính đa dạng (nhƣ nhị phân, số mục…) mà không nhất quán ở một dạng nào cả. Vì vậy để khai phá luật kết hợp với các CSDL này, các nhà nghiên cứu đề xuất một số phƣơng pháp rời rác hoá nhằm chuyển dạng luật này về dạng nhị phân để có thể áp dụng các thuật toán đã có.
- Luật kết hợp tiếp cận theo hƣớng tập thô (Mining association rules base on rough set): Tìm kiếm luật kết hợp dựa trên lý thuyết tập thô.
- Luật kết hợp nhiều mức (Multi level association rules): Với cách tiếp cận luật kết hợp này sẽ tìm thêm những luật có dạng: Mua máy tính Mua hệ điều hành Windows AND Mua phần mềm văn phòng Microsoft Office…
- Luật kết hợp mờ (Fuzzy association rules): Với những khó khăn gặp phải khi rời rạc hoá các thuộc tính số, các nhà nghiên cứu đề xuất luật kết hợp mờ, khắc phục hạn chế đó và chuyển luật kết hợp về một dạng gần hơn.
- Luật kết hợp với thuộc tính đƣợc đánh trọng số (Association rule with weighted Item): Các thuộc tính trong CSDL thƣờng không có vai trò nhƣ nhau. Có một số thuộc tính quan trọng và đƣợc chú trọng hơn các thuộc tính khác. Vì vậy trong quá trình tìm kiếm luật các thuộc tính đƣợc đánh trọng số theo mức độ xác định nào đó. Nhờ vậy ta thu đƣợc những luật “hiếm”.
- Luật kết hợp song song (Parallel mining of association rule): nhu cầu song song hoá và xử lý phân tán là rất cần thiết vì kích thƣớc dữ liệu ngày càng lớn nên đòi hỏi tốc độ xử lý phải đƣợc đảm bảo.
Trên đây là một số hƣớng chính của khai phá luật kết hợp cho phép tìm kiếm luật kết hợp một cách linh hoạt trong những CSDL lớn.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
CHƢƠNG 3: MỘT SỐ PHƢƠNG PHÁP KHAI PHÁ DỮ LIỆU BẰNG LUẬT KẾT HỢP
3.1. Mở đầu
Khai phá luật kết hợp là phát hiện những mối quan hệ giữa các giá trị dữ liệu trong CSDL, các mối quan hệ đó chính là luật kết hợp.
Nhƣ đã trình bày khai phá luật kết hợp có hai pha: Pha 1 tìm tất cả các tập mục thƣờng xuyên thoả mãn ngƣỡng độ hỗ trợ tối thiểu minsup cho trƣớc; pha 2 tìm các luật kết hợp từ các tập mục thƣờng xuyên tìm đƣợc, sinh ra các luật kết hợp thoả mãn ngƣỡng độ tin cậy minconf cho trƣớc pha này đơn giản và tốn ít thời gian hơn nhiều so với pha 1. Khó khăn của bài toán khai phá luật kết hợp tập trung ở pha 1, đó là khai phá tất cả các tập mục thƣờng xuyên thoả mãn ngƣỡng độ hỗ trợ cho trƣớc.
Các thuật toán khai phá luật kết hợp đƣợc đƣa ra chủ yếu quan tâm đến pha 1 và thƣờng đi theo hai hƣớng tiếp cận chính sau:
- Các thuật toán dựa trên hƣớng tiếp cận “Sinh ứng cử và kiểm tra” - Các thuật toán dựa trên hƣớng tiếp cận “Không sinh ứng cử”
Mô hình khai phá luật kết hợp có nhiều ứng dụng trong thực tế nhƣng còn có những hạn chế là không đáp ứng đầy đủ yêu cầu của ngƣời sử dụng, chƣa phản ánh đƣợc vai trò khác nhau của các thuộc tính cũng nhƣ đặc tính dữ liệu vốn có của chúng trong CSDL. Để đáp ứng yêu cầu thực tiễn, khắc phục hạn chế, trong thời gian qua có nhiều nghiên cứu mở rộng bài toán khai phá tập mục thƣờng xuyên và luật kết hợp đã đề xuất bài toán khai phá tập mục cổ phần cao đánh giá đƣợc vai trò, sự đóng góp của tập mục trong tổng số các mục dữ liệu của CSDL.
Trong chƣơng này sẽ trình bày thuật toán Apriori đại diện cho phƣơng pháp sinh ra các tập mục ứng cử và kiểm tra độ hỗ trợ; Thuật toán FP-growth
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
đại diện cho phƣơng pháp không sinh ra tập mục ứng cử, CSDL đƣợc nén lên cấu trúc cây, sau đó khai phá bằng cách phát triển dần các mẫu trên cây; Thuật toán khai phá tập mục cổ phần cao FSM và AFSM để đánh giá mức độ đóng góp của tập mục trong CSDL và khám phá tất cả các tập mục có cổ phần không nhỏ hơn ngƣỡng quy định.
3.2. Thuật toán APRIORI khai phá tập mục thƣờng xuyên
Apriori là thuật toán khai phá tập mục thƣờng xuyên do R.Agrawal và R.Srikant đề xuất vào năm 1993 [10]. Thuật toán tìm các tập mục có độ hỗ trợ thỏa mãn lớn hơn một ngƣỡng giá trị nào đó. Ý tƣởng và thuật toán Apriori là nền tảng cho việc phát triển nhiều thuật toán khai phá tập mục thƣờng xuyên sau này.
Một số ký hiệu dùng để mô tả thuật toán
Ký hiệu Ý nghĩa
k-intemset Tập mục có k mục
Lk
Tập các tập k-itemset thƣờng xuyên (với độ hỗ trợ minsup
nào đó). Mỗi phần tử của tập có hai trƣờng: - Tập mục (itemsets)
- Độ hỗ trợ (count)
Ck
Tập các tập k-itemset ứng cử (gọi là tập các tập thƣờng xuyên tiềm năng) Mỗi phần tử của tập có hai trƣờng:
- Tập mục (itemsets) - Độ hỗ trợ (count)
Bảng 3.1: Ký hiệu mô tả trong thuật toán Apriori Giả sử cần tìm các tập mục thƣờng xuyên của CSDL giao tác D
Ý tƣởng của thuật toán: Sinh ra các tập mục ứng viên từ các tập mục thƣờng xuyên ở bƣớc trƣớc, sử dụng kỹ thuật “tỉa” để bỏ đi các những tập mục ứng viên không thỏa mãn ngƣỡng hỗ trợ cho trƣớc. Cơ sở của kỹ thuật
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
này là tính chất Apriori “Bất kỳ tập con nào của tập mục thường xuyên cũng phải là tập mục thường xuyên”. Vì vậy các tập mục ứng viên gồm k mục có thể đƣợc sinh ra bằng cách kết nối các tập mục thƣờng xuyên có (k-1) mục và loại bỏ tập mục ứng viên có chứa bất kỳ một tập con nào không phải là thƣờng xuyên.
Thuật toán duyệt cơ sở dữ liệu nhiều lần. Mỗi lần duyệt, thuật toán thực hiện hai bƣớc: Bƣớc kết nối và bƣớc tỉa. Trong lần lặp thứ k, thuật toán nối hai (k-1)-tập mục để sinh ra k-tập mục, sử dụng tính chất Apriori để tỉa các tập ứng viên. Bƣớc kết nối và bƣớc tỉa thực hiện nhƣ sau:
- Bƣớc kết nối (join): Tập các k-tập mục ứng viên Ck đƣợc sinh ra bởi việc kết nối Lk-1 với chính nó. Giả sử các mục của các tập mục đã đƣợc sắp xếp theo thứ tự từ điển. Hai tập mục l1 và l2 của Lk-1 đƣợc nối nếu chúng có k-2 mục dữ liệu bằng nhau, mục dữ liệu thứ k-1 của l1 nhỏ hơn của l2:
(l1[1]=l2[1](l1[2]=l2[2]) ...(l1[k-2]=l2[k-2]) (l1[k-1]<l2[k-1])
Điều kiện l1[k-1]<l2[k-2] để đảm bảo không sinh lặp lại các tập đã sinh. Kết quả kết nối l1 và l2 là: (l1[1],l1[2],...,l1[k-2],l1[k-1],l2[k-1])
- Bƣớc tỉa (prune): Tập Ck chứa tập Lk, tức là tất cả các k-tập mục thƣờng xuyên đều thuộc tập Ck. Tập Ck có thể là rất lớn dẫn đến khối lƣợng tính toán lớn. Thuật toán áp dụng tính chất Apriori để rút gọn tập Ck: “Bất kỳ một tập (k-1)-tập mục không thường xuyên thì nó không thể là tập con của tập k-tập mục thường xuyên”. Do đó nếu có một (k-1)-tập mục con nào đó của k- tập mục ứng viên mà không có mặt trong Lk-1 thì ứng viên đó không thể là thƣờng xuyên, có thể loại bỏ khỏi Ck. Việc kiểm tra các (k-1)-tập mục con có thể thực hiện nhanh bởi duy trì một cây băm của tất cả các tập mục thƣờng xuyên đã tìm thấy.
Ví dụ: Cho tập các mục thƣờng xuyên
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Thực hiện kết nối L3 với L3:
Kết nối tập mục thƣờng xuyên l1 = {A, B, C} với l2 = {A, B, D} đƣợc tập mục ứng cử c1 = {A, B, C, D}. Cả ba tập con ({A, B, C}, {A, B, D}, {B, C, D}) s c1 đều thuộc L3 do đó c1 đƣợc giữ lại và C4c1.
Tƣơng tự kết nối tập mục thƣờng xuyên l3 = {A, C, D} với l4 = {A, C, E}, sinh ra tập ứng cử c2 = {A, C, D, E} s c2 mà s L3 nên tập mục ứng cử c2 bị loại.
Vậy C4 = {A, B, C, D}
Thuật toán Apriori
Input: Cơ sở dữ liệu DB, ngƣỡng độ hỗ trợ minsup
Output: Tập các tập mục thƣờng xuyên L trong DB Method:
(1) Tìm các 1-tập mục thƣờng xuyên, nhận đƣợc L1; (2) For (k=2; Lk-1 ≠ ; k++) do begin
(3) Ck = apriori_gen(Lk-1, minsup); //Sinh tập ứng cử viên mới từ Lk-1
(4) For (each T DB) do begin
(5) C = subset(Ck,T);// Các tập mục ứng viên chứa trong T (6) For (each c C)
(7) c.count++; //Tăng số đếm c lên một đơn vị (8) end;
(9) Lk = {c Ck/c.count ≥ minsup}; (10) End;
(11) L= ULk
Sinh các tập mục ứng viên của thuật toán Apriori: Hàm Apriori _gen() Input: Tập các (k-1) – tập mục thƣờng xuyên Lk-1
Output: Tập các k-tập mục ứng viên Ck Method:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn //Bƣớc kết nối (1) For (each(k-1)-tập mục l1 Lk-1) do (2) For (each (k-1)-tập mục l2 Lk-1) do (3) if (l1[1] = l2[1]) and (l1[2] = l2[2] and…and (l1[k-2] = l2[k-2]) and (l1[k-1]l2[k-1] Then (4) Ck {l1[1], l1[2],…l1[k-2],l1[k-1]l2[k-1]}; //Kết nạp k-tập mục mới vào Ck //Bƣớc tỉa (5) For (each ci Ck) do
(6) If exist (s ci) and (s Lk-1) then (7) delete ci from Ck;
(8) Return Ck;
Ví dụ minh họa thuật toán Apriori
Minh hoạ thực hiện thuật toán Apriori trên cơ sở dữ liệu bảng với
minsup = 50%, tức xuất hiện ít nhất 3 lần.
TID Transaction T01 A, B, C, D, G, H T02 A, C, E, F T03 A, C, E T04 B, C, D, F T05 A, B, D T06 B, C, D
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Duyệt CSDL lần thứ nhất: Tính độ hỗ trợ cho các tập mục đƣợc kết quả nhƣ sau: C1 L1 Kết nối L1 với L1 đƣợc C2 C2 Tập mục {A,B} {A,C} {A,D} {B,C} {B,D} {C,D} - Duyệt lần thứ 2: Tính độ hỗ trợ cho các tập mục C2 L2 Tập mục Độ hỗ trợ {A} 4 {B} 4 {C} 5 {D} 4 {E} 2 {F} 2 {G} 1 {H} 1 Tập mục Độ hỗ trợ {A} 4 {B} 4 {C} 5 {D} 4 Loại bỏ các tập mục có độ hỗ trợ <3 Tập mục Độ hỗ trợ {A,B} 2 {A,C} 3 {A,D} 2 {B,C} 3 {B,D} 4 {C,D} 3 Loại bỏ các tập mục có độ hỗ trợ <3 Tập mục Độ hỗ trợ {A,C } 3 {B,C} 3 {B,D} 4 {C,D} 3
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Kết nối L2 với L2 đƣợc C3 C3 Duyệt CSDL lần thứ 3: Tính độ hỗ trợ cho các tập mục C3 L3 Nối L3 với L3 ta đƣợc C4 C4
Vậy tập mục thƣờng xuyên từ CSDL giao tác D với độ hỗ trợ tối thiểu
minsup = 50% là:
L=L1L2L3 = {A, B, C, D, AC, BC, BD, CD, BCD}
Loại tập mục thƣờng xuyên Các tập mục thƣờng xuyên
1-itemset {A} {B} {C} {D}
2-itemset {AC} {BC} {BD} {CD}
3-itemset {BCD}
Bảng 3.3: Danh sách các tập mục thƣờng xuyên của CSDL bảng 3.2
Nhận xét: Thuật toán Apriori
- Duyệt cơ sở dữ liệu nhiều lần, số lần duyệt bằng độ dài của các tập mục thƣờng xuyên dài nhất tìm đƣợc. Tập mục {BCD} Tập mục Độ hỗ trợ {B,C,D} 3 Loại bỏ các tập mục có độ hỗ trợ <3 Tập mục Độ hỗ trợ {B,C,D} 3 Tập mục Thuật toán dừng
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
- Dùng các tập mục thƣờng xuyên (k-1) để tạo các tập mục thƣờng xuyên kích thƣớc k ứng viên.
- Duyệt CSDL và đối sánh mẫu để đếm số lần xuất hiện của các tập ứng viên trong các giao tác.
3.3. Khai phá tập mục thƣờng xuyên theo hƣớng tiếp cận không sinh ứng cử. sinh ứng cử.
Thuật toán Apriori gặp phải hai chi phí lớn:
- Chi phí sinh ra số lƣợng khổng lồ các tập ứng viên, ví dụ nếu có 104 mục thƣờng xuyên thì thuật toán Apriori sẽ cần sinh hơn 107
các ứng viên 2 tập mục và thực hiện kiểm tra độ hỗ trợ của chúng. Để khám phá một mẫu phổ biến có kích thƣớc k, nhƣ là (i1, i2,...,ik) thì thuật toán phải kiểm tra
1 2 1 k k i k i
các mẫu phổ biến tiềm năng. Ví dụ: k = 100 thì phải sinh ra tổng số 2100
-1 = 1030 tập ứng cử.
- Lặp nhiều lần duyệt cơ sở dữ liệu, số lần duyệt cơ sở dữ liệu của thuật toán Apriori bằng độ dài của tập mục thƣờng xuyên dài nhất tìm đƣợc. Thuật toán Apriori chỉ thích hợp cho các cơ sở dữ liệu thƣa (sparse), với các cơ sở dữ liệu dày (dense) thì thuật toán thực hiện kém hiệu quả.
Để khắc phục nhƣợc điểm trên của thuật toán Apriori, năm 2000 J.Han,