Chương 2
LUẬT KẾT HỢP
(Association Rules)
Nội dung
1
Khái niệm cơ bản
2
Thuật toán Apriori
3
Tìm tập phổ biến tối đại với FP-Tree
4
Phân loại luật kết hợp
5
Tối ưu tập luật
Các khái niệm cơ bản
Bài toán phân tích giỏ hàng
Phân tích thói quen mua
hàng của khách hàng
bằng cách tìm ra những
“mối kết hợp” giữa
những mặt hàng mà
khách đã mua
Mục tiêu giúp gia tăng
doanh số, tạo thuận lợi
cho khách khi mua hàng
trong siêu thị
Bài toán được Agrawal
thuộc nhóm nghiên cứu
của IBM đưa ra vào năm
1994
7/12/2014
www.lhu.edu.vn
Các khái niệm cơ bản
Luật kết hợp
Khai phá luật kết hợp:
Tìm tần số mẫu, mối kết hợp, sự tương quan, hay các cấu trúc
nhân quả giữa các tập đối tượng trong các cơ sở dữ liệu giao
tác, cơ sở dữ liệu quan hệ, và những kho thông tin khác.
Tính hiểu được: dễ hiểu
Tính sử dụng được: Cung cấp thông tin thiết thực
Tính hiệu quả: Đã có những thuật toán khai thác hiệu
quả
Các ứng dụng:
Phân tích bán hàng trong siêu thị, cross-marketing, thiết kế
catalog, loss-leader analysis, gom cụm, phân lớp, ...
7/12/2014
www.lhu.edu.vn
Các khái niệm cơ bản
Luật kết hợp
Định dạng thể hiện đặc trưng cho các luật kết
hợp:
khăn bia [0.5%, 60%]
mua:khăn mua:bia [0.5%, 60%]
“Nếu mua khăn thì mua bia trong 60% trường hợp. Khăn và
bia được mua chung trong 0.5% dòng dữ liệu."
Các biểu diễn khác:
mua(x, “khăn") mua(x, “bia") [0.5%, 60%]
khoa(x, "CS") ^ học(x, "DB") điểm(x, "A") [1%, 75%]
Các khái niệm cơ bản
Luật kết hợp
khăn
1
bia [0.5%, 60%]
2
3
4
“NẾU mua khăn
THÌ mua bia
trong 60% trường hợp
trên 0.5% số dòng dữ liệu"
1 Tiền đề, vế trái luật
2 Mệnh đề kết quả, vế phải luật
3 Support, tần số, độ hỗ trợ (“trong bao nhiêu phần trăm dữ liệu thì
những điều ở vế trái và vế phải cùng xảy ra")
4 Confidence, độ mạnh, độ tin cậy (“nếu vế trái xảy ra thì có bao nhiêu
khả năng vế phải xảy ra")
Các khái niệm cơ bản
Luật kết hợp
• Độ ủng hộ:
biểu thị tần số luật có trong các giao tác.
support(A B [ s, c ]) = p(AB) = support ({A,B})
• Độ tin cậy:
biểu thị số phần trăm giao tác có chứa luôn B
trong số những giao tác có chứa A.
confidence(A B [ s, c ]) = p(B|A) = p(AB) / p(A) =
support({A,B}) / support({A})
Các khái niệm cơ bản
Luật kết hợp
Độ hỗ trợ tối thiểu : (minsupp)
Cao
ít tập phần tử (itemset) phổ biến
ít luật hợp lệ rất thường xuất hiện
Thấp nhiều luật hợp lệ hiếm xuất hiện
Độ tin cậy tối thiểu : (minconf)
Cao
ít luật nhưng tất cả “gần như đúng"
Thấp nhiều luật, phần lớn rất “không chắc
chắn"
Giá trị tiêu biểu: = 2 -10 %, = 70 - 90 %
Các khái niệm cơ bản
Luật kết hợp
Giao tác:
Dạng quan hệ
<Tid,item>
<1, item1>
<1, item2>
<2, item3>
Item và itemsets:
Dạng kết
<Tid,itemset>
<1, {item1,item2}>
<2, {item3}>
phần tử đơn lẻ và tập phần tử
Support của tập I:
số lượng giao tác có chứa I
Min Support : ngưỡng cho support
Tập phần tử phổ biến: có độ ủng hộ (support)
Các khái niệm cơ bản
Ví dụ
Cho: (1) CSDL các giao tác, (2) mỗi giao tác là một
danh sách mặt hàng được mua (trong một lượt mua
của khách hàng) Frequent item sets
ID của giao tác Hàng mua
100
A,B,C
200
A,C
400
A,D
500
B,E,F
Tập phổ biến
{A}
{B} và {C}
{D}, {E} và {F}
{A,C}
Các cặp khác
support
3 or 75%
2 or 50%
1 or 25%
2 or 50%
max 25%
Tìm: tất cả luật có support >= minsupport
If min. support 50% and min. confidence 50%, then
A C [50%, 66.6%], C A [50%, 100%]
Khai phá luật kết hợp
Quá trình hai buớc để khai phá luật kết hợp:
BƯỚC 1: Tìm các tập phổ biến: các tập
các phần tử có độ support tối thiểu.
Mẹo Apriori: Tập con của tập phổ biến cũng là một tập phổ
biến:
• ví dụ, nếu {AB} là một tập phổ biến thì cả {A} và {B} đều
là những tập phổ biến
Lặp việc tìm tập phổ biến với kích thước từ 1 đến k (tập có
kích thước k)
BƯỚC 2: Dùng các tập phổ biến để tạo
các luật kết hợp.Rakesh Agrawal, 1993
Thuật toán Apriori
Bước kết hợp:
Ck được tạo bằng cách kết Lk -1 với chính nó
Bước rút gọn:
Những tập kích thước (k-1) không phổ biến
không thể là tập con của tập phổ biến kích thước k
Mã giả:
Ck : Tập ứng viên có kích thước k; Lk : Tập phổ biến có kích
thước k
L1 = {các phần tử phổ biến};
for (k = 1; Lk !=; k++) do begin
Ck +1 = {các ứng viên được tạo từ Lk };
for each giao tác t trong database do
tăng số đếm của tất cả các ứng viên trong Ck+1
mà được chứa trong t
Lk +1 = {các ứng viên trong Ck +1 có độ ủng hộ tối tiểu}
end
return k Lk ;
Thuật toán Apriori
Nguyên tắc Apriori:
Những tập con của tập phổ biến cũng phải phổ biến
L3={abc, abd, acd, ace, bcd}
Tự kết: L3*L3
abcd từ abc và abd
acde từ acd và ace
Rút gọn:
acde bị loại vì ade không có trong L3
C4={abcd}
Thuật toán Apriori
Ví dụ
Database D
C1
Tập
ID giao tác Phần tử
100
200
300
400
1
2
1
2
34
35
235
5
{1}
Duyệt D {2}
{3}
{4}
{5}
L1
Độ ủng hộ
2
3
3
1
3
Tập
{1}
{2}
{3}
{5}
Độ ủng hộ
2
3
3
3
Thuật toán Apriori
Ví dụ
C2
Tập
{1 2}
{1 3}
{1 5}
{2 3}
{2 5}
{3 5}
C2
Duyệt D
Tập Độ ủng hộ
{1 2}
1
{1 3}
2
{1 5}
1
{2 3}
2
{2 5}
3
{3 5}
2
L2
Tập Độ ủng hộ
{1 3}
2
{2 3}
2
{2 5}
3
{3 5}
2
Thuật toán Apriori
Ví dụ
C3
Tập
{2 3 5}
L3
Duyệt D
Tập Độ ủng hộ
{2 3 5}
2
Thuật toán Apriori
Ví dụ
12345
Không gian tìm
kiếm của CSDL D
1234
123
12
124
13
1235
1245
125
134
135
14
15
23
1
2
145
24
3
1345
234
25
4
2345
235
34
35
5
245
45
345
Thuật toán Apriori
Ví dụ
Áp dụng mẹo
Apriori
trên Cấp 1
12345
1234
123
124
12
13
125
14
1
1235
1245
1345
134
135
145
234
15
23
24
25
2
3
4
2345
235
34
245
35
5
345
45
Thuật toán Apriori
Ví dụ
Áp dụng mẹo
Apriori
trên Cấp 2
12345
1234
123
124
12
125
13
14
1
1235
1245
1345
134
135
145
234
15
23
24
25
2
3
4
2345
235
34
245
35
5
345
45
Tập phổ biến tối đại ( maximal frequent sets).
Tập phổ biến (frequent sets)
Tập phổ biến tối đại ( maximal frequent sets).
Định nghĩa: M là tập phổ biến tối đại nếu M là
tập phổ biến và không tồn tại tập phổ biến S
khác M mà M S
Thuật toán Apriori
Phần cốt lõi của thuật toán Apriori: FP tree
Dùng các tập phổ biến kích thước (k – 1) để tạo các tập phổ
biế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
Tình trạng nghẽn cổ chai của thuật toán Apriori:
việc tạo ứng viên
Các tập ứng viên đồ sộ:
• 104 tập phổ biến kích thước 1 sẽ tạo ra 107 tập ứng viên
kích thước 2
• Để phát hiện một mẫu phổ biến kích thước 100, ví dụ
{a1, a2, …, a100}, cần tạo 2100 1030 ứng viên.
Duyệt CSDL nhiều lần:
• Cần duyệt (n +1 ) lần, n là chiều dài của mẫu dài nhất
Thuật toán Apriori
Hạn chế của thuật toán Apriori
Thực tế:
Đối với tiếp cận Apriori căn bản thì số lượng thuộc tính trên
dòng thường khó hơn nhiều so với số lượng dòng giao tác.
Ví dụ:
• 50 thuộc tính mỗi cái có 1-3 giá trị, 100.000 dòng (không quá tệ)
• 50 thuộc tính mỗi cái có 10-100 giá trị, 100.000 dòng (hơi tệ)
• 10.000 thuộc tính mỗi cái có 5-10 giá trị, 100 dòng (quá tệ...)
Lưu ý:
• Một thuộc tính có thể có một vài giá trị khác nhau
• Các thuật toán luật kết hợp có đặc trưng là xem một cặp thuộc
tính-giá trị là một thuộc tính (2 thuộc tính mỗi cái có 5 giá trị =>
"10 thuộc tính")
Cách khắc phục vấn đề ?
Thuật toán FP-Tree
Ý tưởng: Dùng đệ quy để gia tăng độ dài của
mẫu phổ biến dựa trên cây FFP và các mẫu
được phân hoạch
Phương pháp thực hiện:
Với mỗi item phổ biến trong Header Table, xây
dựng cơ sở điều kiện và cây điều kiện của nó
Lặp lại tiến trình trên với mỗi cây điều kiện mới
được tạo ra
Cho tới khi cây điều kiện được tạo ra là cây rỗng
hoặc chỉ bao gồm một đường đi đơn thì ngừng. Mỗi
tổ hợp con các item trên đường đi đơn được tạo ra
sẽ là một tập phổ biến
Thuật toán FP-Tree
Các bước xây dựng cây FP-Tree
Bước 1: Duyệt CSDL, xác định tập F các item phổ
biến một phần tử, sau đó loại bỏ các Item không thoả
ngưỡng minsup. Sắp xếp các item trong tập F theo thứ
tự giảm dần của độ phổ biến, ta được tập kết quả là L.
Bước 2: Tạo nút gốc cho cây T, và tên của nút gốc sẽ
là Null. Sau đó duyệt CSDL lần thứ hai. Ứng với mỗi
giao tác trong CSDL ta thực hiện 2 công việc sau:
Chọn các item phổ biến trong các giao tác và sắp xếp chúng
theo thứ tự giảm dần độ phổ biến trong tập L
Gọi hàm Insert_tree([p|P],T) để đưa các item vào trong cây T
Thuật toán FP-Tree
Xây dựng cây FP-Tree
Thuật toán FP-Tree
null
Thêm TID=1 vào cây:
TID
1
2
3
4
5
6
7
8
9
10
Items
{A,B}
{B,C,D}
{A,C,D,E}
{A,D,E}
{A,B,C}
{A,B,C,D}
{B,C}
{A,B,C}
{A,B,D}
{B,C,E}
B:1
A:1
Thêm TID=2 vào cây:
null
B:2
A:1
C:1
D:1