Phát hiện các luật kết hợp – Giới thiệu Bài toán phát hiện luật kết hợp Association rule mining Với một tập các giao dịch transactions cho trước, cần tìm các ộ ập g ị ,luật dự đoán
Trang 2Nội dung môn học:
Giới thiệu về Khai phá dữ liệu
ề
Giới thiệu về công cụ WEKA
Tiền xử lý dữ liệu
Phát hiện các luật kết hợp
Các kỹ thuật phân lớp và dự đoán
Các kỹ thuật phân lớp và dự đoán
Các kỹ thuật phân nhóm
Trang 3Phát hiện các luật kết hợp – Giới thiệu
Bài toán phát hiện luật kết hợp (Association rule mining)
Với một tập các giao dịch (transactions) cho trước, cần tìm các ộ ập g ị ( ) ,luật dự đoán khả năng xuất hiện trong một giao dịch của các mục (items) này dựa trên việc xuất hiện của các mục khác
TID Items
1 Bread, Milk
Các ví dụ của luật kết hợp:
{Diaper} → {Beer}
2 Bread, Diaper, Beer, Eggs
3 Milk, Diaper, Beer, Coke
4 Bread, Milk, Diaper, Beer
{Diaper} → {Beer}
{Milk, Bread} → {Eggs, Coke} {Beer, Bread} → {Milk}
4 Bread, Milk, Diaper, Beer
5 Bread, Milk, Diaper, Coke
Trang 4 Số lần xuất hiện của một tập mục
Ví dụ: σ({Milk, Bread, Diaper}) = 2
2 Bread, Diaper, Beer, Eggs
3 Milk, Diaper, Beer, Coke
4 Bread, Milk, Diaper, Beer
5 Bread Milk Diaper Coke
Độ hỗ trợ (Support) s
Tỷ lệ các giao dịch chứa một tập mục
Ví dụ: s({Milk, Bread, Diaper}) = 2/5
5 Bread, Milk, Diaper, Coke
Trang 5 Ví dụ: {Milk Diaper} → {Beer}
2 Bread, Diaper, Beer, Eggs
3 Milk, Diaper, Beer, Coke
4 Bread, Milk, Diaper, Beer
Ví dụ: {Milk, Diaper} → {Beer}
Các độ đo đánh giá luật
Độ hỗ trợ (Support) s { Milk Diaper } → Beer
5 Bread, Milk, Diaper, Coke
Tỷ lệ các giao dịch chứa cả
X và Y đối với tất cả các giao dịch
Beer }
Diaper ,
Milk
4
0 5
2
| T
|
) Beer Diaper,
, Milk (
|
67
0 3
2 )
Diaper ,
Milk (
) Beer Diaper,
Trang 6Phát hiện các luật kết hợp
Với một tập các giao dịch T, mục đích của bài toán phát hiện luật kết hợp là tìm ra tất cả các luật có:
hiện luật kết hợp là tìm ra tất cả các luật có:
độ hỗ trợ ≥ giá trị ngưỡng minsup, và
độ tin cậy ≥ giá trị ngưỡng minconf
Cách tiếp cận vét cạn (Brute-force)
Liệt kê tất cả các luật kết hợp có thể
Tí h t á độ hỗ t à độ ti ậ h ỗi l ật
Tính toán độ hỗ trợ và độ tin cậy cho mỗi luật
Loại bỏ đi các luật có độ hỗ trợ nhỏ hơn minsup hoặc có độ tin cậy nhỏ hơn minconf
⇒ Phương pháp vét cạn này có chi phí tính toán quá
lớn, không áp dụng được trong thực tế!
Trang 72 B d Di B E {Milk, Beer} → {Diaper} (s=0.4, c=1.0)
{Diaper, Beer} → {Milk} (s=0.4, c=0.67) {Beer} → {Milk, Diaper} (s=0.4, c=0.67) {Diaper} → {Milk Beer} (s=0 4 c=0 5)
2 Bread, Diaper, Beer, Eggs
3 Milk, Diaper, Beer, Coke
4 Bread, Milk, Diaper, Beer
Tất cả các luật trên đều là sự phân tách (thành 2 tập con) của
{Diaper} → {Milk, Beer} (s 0.4, c 0.5) {Milk} → {Diaper, Beer} (s=0.4, c=0.5)
5 Bread, Milk, Diaper, Coke
cùng tập mục : {Milk, Diaper, Beer}
Các luật sinh ra từ cùng một tập múc sẽ có cùng độ hỗ trợ, nhưng có thể khác về độ tin cậy
nhưng có thể khác về độ tin cậy
Do đó, trong quá trình phát hiện luật kết hợp, chúng ta có thể tách riêng 2 yêu cầu về độ hỗ trợ và độ tin cậy
Trang 8tất cả các luật có độ tin cậy cao (≥ minconf)
Mỗi luật là một phân tách nhị phân (phân tách thành 2 phần) của một tập mục thường xuyên
Bước sinh ra các tập mục thường xuyên (bước thứ 1) vẫn có chi phí tính toán quá cao!
Trang 9Lattice biểu diễn các tập mục cần xét
Với d
null
mục, thì phải xét
đến 2d
đến 2
các tập mục có thể!
thể!
ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE
ABCD ABCE ABDE ACDE BCDE
ABCDE
Trang 10Sinh ra các tập mục thường xuyên
TID Items
1 B d Milk
1 Bread, Milk
2 Bread, Diaper, Beer, Eggs
3 Milk, Diaper, Beer, Coke
4 Bread, Milk, Diaper, Beer
Phương pháp vét cạn (Brute force)
4 Bread, Milk, Diaper, Beer
5 Bread, Milk, Diaper, Coke
Phương pháp vét cạn (Brute-force)
Mỗi tập mục trong lattice đều được xét
Tính độ hỗ trợ của mỗi tập mục, bằng cách duyệt qua tất cả các
Trang 11Các chiến lược sinh tập mục thường xuyên
Giảm bớt số lượng các tập mục cần xét (M)
Tìm kiếm (xét) đầy đủ: M=2 ( ) y d
Sử dụng các kỹ thuật cắt tỉa (pruning) để giảm giá trị M
Giảm bớt số lượng các giao dịch cần xét (N) ợ g g ị ( )
Giảm giá trị N, khi kích thước (số lượng các mục) của tập mục tăng lên
ố
Giảm bớt số lượng các so sánh
(matchings/comparisons) giữa các tập mục và các giao dịch (N.M)
Sử dụng các cấu trúc dữ liệu phù hợp (hiệu quả) để lưu các tập mục cần xét hoặc các giao dịch
Không cần phải so sánh mỗi tập mục với mỗi giao dịch
Không cần phải so sánh mỗi tập mục với mỗi giao dịch
Trang 12Giảm bớt số lượng các tập mục cần xét
Nguyên tắc của giải thuật Apriori – Loại bỏ (prunning)
dựa trên độ hỗ trợ
dựa trên độ hỗ trợ
Nếu một tập mục là thường xuyên, thì tất cả các tập con
(subsets) của nó đều là các tập mục thường xuyên
Nếu một tập mục là không thường xuyên (not frequent) thì tất cả
Nếu một tập mục là không thường xuyên (not frequent), thì tất cả các tập cha (supersets) của nó đều là các tập mục không thường xuyên
Nguyên tắc của giải thuật Apriori dựa trên đặc tính
không đơn điệu (anti-monotone) của độ hỗ trợ
Độ hỗ trợ của một tập mục nhỏ hơn độ hỗ trợ của các tập con
) ( )
( )
( : , Y X Y s X s Y
∀
của nó
Trang 13Apriori: Loại bỏ dựa trên độ hỗ trợ
Trang 14Apriori: Loại bỏ dựa trên độ hỗ trợ
hoặc Eggs)
Ite m s e t C o u n t
Các tập mục mức 3 (3-itemsets)
Trang 15Giải thuật Apriori
Sinh ra tất cả các tập mục thường xuyên mức 1 (frequent 1-itemsets): các tập mục thường xuyên chỉ chứa 1 mục
1 itemsets): các tập mục thường xuyên chỉ chứa 1 mục
Gán k = 1
Lặp lại, cho đến khi không có thêm bất kỳ tập mục p g ỳ p
thường xuyên nào mới
Từ các tập mục thường xuyên mức k (chứa k mục), sinh ra các tập mục mức mức (k+1) cần xét
tập mục mức mức (k 1) cần xét
Loại bỏ các tập mục mức (k+1) chứa các tập con là các tập mục không thường xuyên mức k
Tính độ hỗ trợ của mỗi tập mục mức (k+1) bằng cách duyệt qua
Tính độ hỗ trợ của mỗi tập mục mức (k+1), bằng cách duyệt qua tất cả các giao dịch
Loại bỏ các tập mục không thường xuyên mức (k+1)
Thu được các tập mục thường xuyên mức (k+1)
Thu được các tập mục thường xuyên mức (k+1)
Trang 16Giảm bớt số lượng các so sánh
Các so sánh (matchings/comparisons) giữa các tập mục cần xét và các giao dịch
Thay vì phải so sánh mỗi giao dịch với mỗi tập mục cần xét, thì chỉ cần
so sánh nó với các tập mục chứa trong các ô (hashed buckets)
TID Items
Trang 17Sinh ra cây băm (hash tree)
Giả sử chúng ta có 15 tập mục mức 3 cần xét:
{1 4 5}, {1 2 4}, {4 5 7}, {1 2 5}, {4 5 8}, {1 5 9}, {1 3 6}, {2 3 4}, {5 6 7}, {3
4 5} {3 5 6} {3 5 7} {6 8 9} {3 6 7} {3 6 8}
Sinh ra cây băm (Hash tree):
Hàm băm (Hash function) – Ví dụ: h(p) = p mod 3
Kích thước tối đa của nút lá (Max leaf size): Số lượng tối đã các tập
mục được lưu ở một nút lá (Nếu số lượng các tập mục vượt quá giá trị này, nút đó sẽ tiếp tục bị phân chia) – Ví dụ: Max leaf size = 3
Trang 18Phát hiện luật kết hợp bằng cây băm (1)
Trang 19Phát hiện luật kết hợp bằng cây băm (2)
Trang 20Phát hiện luật kết hợp bằng cây băm (3)
Trang 23Xác định các tập mục bằng cây băm (2)
(Hàm băm)
1 2 3 5 6 Giao dịch t
1,4,7 2,5,8
Trang 24Apriori: Các yếu tố ảnh hưởng độ phức tạp
Lựa chọn giá trị ngưỡng minsup
Giá trị minsup quá thấp sẽ sinh ra nhiều tập mục thường xuyên
ể
Điều này có thể làm tăng số lượng các tập mục phải xét và độ dài (kích thước) tối đa của các tập mục thường xuyên
Số lượng các mục trong cơ sở dữ liệu (các giao dịch)
Cân thêm bộ nhớ để lưu giá trị độ hỗ trợ đối với mỗi mục
Nếu số lượng các mục (tập mục mức 1) thường xuyên tăng lên, thì chi phí tính toán và chi phí I/O (duyệt các giao dịch) cũng tăng
Kích thước của cơ sở dữ liệu (các giao dịch)
Giải thuật Apriori duyệt cơ sở dữ liệu nhiều lần Do đó, chi phí tính toán của Apriori tăng lên khi số lượng các giao dịch tăng lên
Kích thước trung bình của các giao dịch
Khi kích thước (số lượng các mục) trung bình của các giao dịch tăng lên, thì độ dài tối đa của các tập mục thường xuyên cũng tăng và chi phí duyệt cây băm cũng tăng
tăng, và chi phí duyệt cây băm cũng tăng
Trang 25Biểu diễn các tập mục thường xuyên
Trong thực tế, số lượng các tập mục thường xuyên được sinh ra từ một csdl giao dịch có thể rất lớn
Có 2 cách biểu diễn như vậy
Các tập mục thường xuyên lớn nhất (Maximal frequent itemsets)
Các tập mục thường xuyên lớn nhất (Maximal frequent itemsets)
Các tập mục thường xuyên đóng (Closed frequent itemsets)
Trang 29Tập mục thường xuyên: lớn nhất vs đóng (2)
Đóng, nhưng không phải là lớn nhất
Đóng và lớn nhất
Trang 31Giải thuật FP-Growth
Một phương pháp khác cho việc xác định các tập mục thường xuyên
thường xuyên
Nhớ lại: Apriori sử dụng cơ chế sinh-kiểm tra (sinh ra các tập
mục cần xét, và kiểm tra xem mỗi tập mục có phải là thường
xuyên)
FP-Growth biểu diễn dữ liệu của các giao dịch bằng một cấu trúc dữ liệu gọi là FP-tree
cấu trúc dữ liệu gọi là FP tree
FP-Growth sử dụng cấu trúc FP-tree để xác định trực
tiếp các tập mục thường xuyên
tiếp các tập mục thường xuyên
Trang 32Biểu diễn bằng FP-tree
Với mỗi giao dịch, FP-tree xây dựng một đường đi (path) trong cây
Hai giao dịch có chứa cùng một số các mục, thì đường đi của chúng sẽ có phần (đoạn) chung
của chúng sẽ có phần (đoạn) chung
Càng nhiều các đường đi có các phần chung, thì việc biểu diễn bằng FP-tree sẽ càng gọn (compressed/compacted)
Nếu kích thước của FP-tree đủ nhỏ để có thể lưu trữ
trong bộ nhớ làm việc, thì giải thuật FP-Growth có thể
xác định các tập mục thường xuyên trực tiếp từ FP-tree
xác định các tập mục thường xuyên trực tiếp từ FP tree lưu trong bộ nhớ
Không cần phải lặp lại việc duyệt dữ liệu lưu trên ổ cứng
Trang 33 Các mục không thường xuyên (infrequent items) bị loại bỏ
Các mục thường xuyên (frequent items) được sắp xếp theo thứ tự giảm dần về độ hỗ trợ
Trong ví dụ (ở các slides tiếp theo), thứ tự giảm dần về độ hỗ trợ:
A, B, C, D, E
Cơ sở dữ liệu các giao dịch được duyệt lần thứ 2, để xây
dựng FP-tree
Trang 34(Sau khi xét giao dịch thứ 2)
(Sau khi xét giao dịch thứ 3)
D:1E:1
Trang 35(Sau khi xét giao dịch thứ 10)
Trang 36FP-Growth: Sinh các tập mục thường xuyên
FP-Growth sinh các tập mục thường xuyên trực tiếp từ FP-tree từ mức lá đến mức gốc (bottom-up)
FP tree, từ mức lá đến mức gốc (bottom up)
Trong ví dụ trên, FP-Growth trước hết tìm các tập mục thường xuyên kết thúc bởi E… sau đó mới tìm các tập mục thường xuyên kết thúc bởi D bởi C bởi B và bởi A
kết thúc bởi D… bởi C… bởi B… và bởi A
Vì mỗi giao dịch được biểu diễn bằng một đường đi
Trang 37Các đường đi kết thúc bởi một mục
(Các
đường
(Các đường
(Các đường đi (Các đường đi (Các đường đi
Trang 38 Nếu nó là tập mục thường xuyên, xét các bài toán con: tìm tất cả
các tập mục thường xuyên kết thúc bởi de… bởi ce…bởi be…và bởi ae
Mỗi bài toán con nêu trên lại được phân tách thành các bài toán
hỏ hcon nhỏ hơn…
Kết hợp các lời giải của các bài toán con, chúng ta sẽ thu được các tập mục thường xuyên kết thúc bởi e
Trang 39Vd: Các tập mục thường xuyên kết thúc bởi e
Xác định tất cả các đường đi
trong FP-tree kết thúc bởi e
trong FP tree kết thúc bởi e
Các đường đi tiền tố (prefix paths) đối
Giả sử minsup=2, thì tập mục {e}
là tập mục thường xuyên (vì nó
có độ hỗ trợ =3 > minsup)
Trang 40Vd: Các tập mục thường xuyên kết thúc bởi e
Vì {e} là tập mục thường xuyên, nên FP-Growth phải giải
quyết các bài toán con: tìm các tập mục thường xuyên
quyết các bài toán con: tìm các tập mục thường xuyên kết thúc bởi de…bởi ce…bởi be…và bởi ae
Trước tiên, cần chuyển các đường đi tiền tố của e thành
Trước tiên, cần chuyển các đường đi tiền tố của e thành biểu diễn FP-tree có điều kiện (conditional FP-tree)
Có cấu trúc tương tự như FP-tree
Được dùng để tìm các tập mục thường xuyên kết thúc bởi một mục
Trang 41Xây dựng FP-tree có điều kiện
Cập nhật các giá trị hỗ trợ đối với các
đường đi tiền tố
Vì một số giá trị hỗ trợ đã tính đến cả các
giao dịch không chứa mục e
Ví dụ: Đường đi null → b:2 → c:2 → e:1 ụ g
đã tính đến cả giao dịch {b,c} không chứa
mục e Do đó, giá trị hỗ trợ phải gán bằng
1, để thể hiện số lượng các giao dịch chứa
{b,c,e}
Loại bỏ nút e khỏi các đường đi tiền tố
Sau khi cập nhật các giá trị hỗ trợ đối với
FP-tree có điều kiện đối với e
Sau khi cập nhật các giá trị hỗ trợ đối với
các đường đi tiền tố, một số mục có thể
trở nên không thường xuyên – Bị loại bỏ
Vd: Nút b bây giờ có giá trị hỗ trợ =1
Vd: Nút b bây giờ có giá trị hỗ trợ =1
Trang 42Vd: Các tập mục thường xuyên kết thúc bởi e
Growth sử dụng cấu trúc biểu diễn
FP-tree có điều kiện đối với e, để giải quyết các
bài toán con: tìm các tập mục thường xuyên
kết thúc bởi de…bởi ce…bởi be…và bởi ae
Vd: Để tìm các tập mục thường xuyên kết
thúc bởi de, các đường đi tiền tố đối với d
được xây dựng từ biểu diễn FP-tree có điều
kiệ đối ới
kiện đối với e
Bằng cách cộng với giá trị hỗ trợ gắn với nút
d chúng ta xác định được độ hỗ trợ cho tập
Các đường đi tiền tố đối với de
Trang 44Sinh ra các luật kết hợp (2)
Làm thế nào để sinh ra các luật từ các tập mục thường xuyên, một cách có hiệu quả? y , ộ ệ q
Xét tổng quát, độ tin cậy không có đặc tính không
đơn điệu (anti-monotone)
c(ABC →D) có thể lớn hơn hoặc nhỏ hơn c(AB →D)
Nhưng, độ tin cậy của các luật được sinh ra từ cùng
c(ABC → D) ≥ c(AB → CD) ≥ c(A → BCD)
Độ tin cậy có đặc tính không đơn điệu đối với số lượng các mục
ở vế phải của luật
Trang 45Apriori: Sinh ra các luật (1)
Lattice của các luật
Luật có độ
ấ tin cậy thấp
Các luật
bị loại bỏ
Trang 46Apriori: Sinh ra các luật (2)
Các luật cần xét được sinh ra bằng cách kết hợp 2 luật
có cùng tiền tố (phần bắt đầu) của phần kết luận
có cùng tiền tố (phần bắt đầu) của phần kết luận
Loại bỏ luật D=>ABC nếu bất kỳ một
luật con của nó (AD=>BC, BCD=>A, …) không có độ tin cậy cao (< minconf)
D=>ABC
cậy cao (< minconf)
Trang 47Tài liệu tham khảo
• P.-N Tan, M Steinbach, and V Kumar Introduction to Data Mining (chapter 6) Addison-Wesley, 2005.