Khai Phá Dữ Liệu
Nguyễn Nhật Quang
Viện Công nghệ Thông tin và Truyền thông
Trường Đại học Bách Khoa Hà Nội
Năm học 2010-2011
Nội dung môn học:
Giới thiệu về Khai phá dữ liệu
ề
Giới thiệu v
ề
công cụ WEK
A
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ớpvà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
2
Khai Phá Dữ Liệu
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
g
iao d
ị
ch
(
transactions
)
cho trước
,
cần tìm các
ộ ậpgị (),
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
3
Khai Phá Dữ Liệu
Các định nghĩa cơ bản (1)
Tập mục (Itemset)
Một tập hợp gồm một hoặc nhiều mục
Ví dụ: {Milk, Bread, Diaper}
Tập mục mức k (k-itemset)
Một tập mục gồm k mục
ổ ố ỗ (S )
TID Items
1 Bread, Milk
2
Bread Diaper Beer Eggs
T
ổ
ng s
ố
h
ỗ
trợ
(S
upport count
)
σ
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
Tập mục thường xuyên
(Frequent/large itemset)
Một tập mục mà độ hỗ trợ lớn hơn
hoặc bằng một giá trị ngưỡng minsup
4
Khai Phá Dữ Liệu
Các định nghĩa cơ bản (2)
Luật kết hợp (Association
rule)
ể
TID Items
1 Bread, Milk
Một bi
ể
u thức kéo theo có
dạng: X → Y, trong đó X và Y
là các tập mục
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
ợ
(
Su
pp
ort
)
s
Beer
}
Diaper
Milk
{
→
5 Bread, Milk, Diaper, Coke
ộ ợ (pp)
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
|
)Bee
r
Diaper,,Milk(
===
σ
s
Đ
ộ tin cậy (Confidence) c
Tỷ lệ các giao dịch chứa cả
X và Y đối với các giao dịch
chứaX
5
|
T
|
67.0
3
2
)Diaper,Milk(
)BeerDiaper,Milk,(
===
σ
σ
c
chứa
X
5
Khai Phá Dữ Liệu
Phá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ệnluậtkếthợp là tìm ra tấtcả các luậtcó:
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 ỗil ật
Tí
n
h
t
o
á
n
độ
hỗ
t
rợ v
à
độ
ti
n c
ậ
y c
h
o m
ỗi
l
u
ậ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ế!
6
Khai Phá Dữ Liệu
Phát hiện luật kết hợp
Các luật kết hợp:
{Milk, Diaper} → {Beer} (s=0.4, c=0.67)
TID Items
1 Bread, Milk
2
BdDi 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
=
04 c
=
05)
2
B
rea
d
,
Di
aper,
B
eer,
E
ggs
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
,
c0
.
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
7
Khai Phá Dữ Liệu
Phát hiện luật kết hợp
Quá trình phát hiện luật kết hợp sẽ gồm 2 bước (2 giai
đoạn) quan trọng:
đoạn)
quan
trọng:
Sinh ra các tập mục thường xuyên (frequent/large itemsets)
Sinh ra tất cả các tập mục có độ hỗ trợ ≥ minsup
Sinh ra các luật kết hợp
Từ mỗi tập mục thường xuyên (thu được ở bước trên), sinh ra
tấtcả các luậtcóđộ tin cậycao(
≥
minconf
)
tấ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!
8
Khai Phá Dữ Liệu
Lattice 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
2
d
A
B C D E
đến
2
các tập
mục có
thể!
AB AC AD AE BC BD BE CD CE DE
thể!
ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE
ABCD ABCE ABDE ACDE BCDE
9
Khai Phá Dữ Liệu
ABCDE
Sinh ra các tập mục thường xuyên
TID Items
1
BdMilk
1
B
rea
d
,
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
idị h
g
i
ao
dị
c
h
Với mỗi giao dịch, so sánh nó với mỗi tập mục được xét
Độ phức tạp ~ O(N.M.w)
Với M = 2
d
, thì độ phức tạp này là quá lớn!
10
Khai Phá Dữ Liệu
Cá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
d
()y
Sử dụng các kỹ thuật cắt tỉa (pruning) để giảm giá trị M
Giảm bớt số lư
ợ
n
g
các
g
iao d
ị
ch cần xét
(
N
)
ợ ggị
()
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
g
iao dịch
(
N.M
)
g ()
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ầnphải so sánh mỗitậpmụcvớimỗigiaodịch
Không
cần
phải
so
sánh
mỗi
tập
mục
với
mỗi
giao
dịch
11
Khai Phá Dữ Liệu
Giả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ựatrê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ếumộttậpmục là không thường xuyên (not frequent) thì tấtcả
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
)()()(:, YsXsYXYX ≥⇒⊆∀
của nó
12
Khai Phá Dữ Liệu
Apriori: Loại bỏ dựa trên độ hỗ trợ
Tập mục
không
không
thường
xuyên
Các tập cha của tập
m c đó (AB) bị loạibỏ
13
Khai Phá Dữ Liệu
m
ụ
c
đó
(AB)
bị
loại
bỏ
Apriori: Loại bỏ dựa trên độ hỗ trợ
Item Count
Bread 4
Ck
2
Các tập mục mức 1 (1-itemsets)
C
o
k
e
2
Milk 4
Beer 3
Diaper 4
Eggs
1
Itemset Count
{Bread,Milk} 3
{Bread,Beer} 2
Các tập mục mức 2 (2-
itemsets)
(Không cầnxétcáctập
Eggs
1
{Bread,Diaper} 3
{Milk,Beer} 2
{Milk,Diaper} 3
{Beer,Diaper} 3
(Không
cần
xét
các
tập
mục có chứa mục
Coke
hoặc
Eggs
)
Item set
Count
Các tập mục mức 3
(3-itemsets)
minsu
p
= 3
•Nếu xét tất cả các tập mục có thể:
6
6
6
Item set
Count
{Bread,Milk,Diaper} 3
6
C
1
+
6
C
2
+
6
C
3
= 41
•Với cơ chế loại bỏ dựa trên độ hỗ trợ:
6 + 6 + 1 = 13
14
Khai Phá Dữ Liệu
Giả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ậpmụcthường xuyên chỉ chứa1mụ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ôn
g
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ậpmụcmứcmức(k
+
1) cầnxé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ủamỗitậpmụcmứ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 đượccáctậpmụcthường xuyên mức(k+1)
Thu
được
các
tập
mục
thường
xuyên
mức
(k+1)
15
Khai Phá Dữ Liệu
Giả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
ầ ấ ể ỗ ỗ
C
ầ
n phải duyệt qua t
ấ
t cả các giao dịch, đ
ể
tính độ h
ỗ
trợ của m
ỗ
i tập
mục cần xét
Để giảm bớt số lượng các so sánh, cần sử dụng cấu trúc băm (hash
structure) để lưu các tập mục cần xét
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
1 Bread
,
Milk
,
2 Bread, Diaper, Beer, Eggs
3 Milk, Diaper, Beer, Coke
4 Bread, Milk, Diaper, Beer
5 Bread, Milk, Diaper, Coke
16
Khai Phá Dữ Liệu
Sinh ra cây băm (hash tree)
Giả sử chúng ta có 15 tậpmụcmức3 cầnxé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
45} {356} {357} {689} {367} {368}
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ướctối đacủa nút lá (Max leaf size): Số lượng tối đãcáctập
mục đượclưu ở một nút lá (Nếusố lượng các tậpmụcvượt quá giá trị
này, nút đósẽ tiếptụcbị phân chia) – Ví dụ: Max leaf size = 3
2 3 4
5 6 7
145
345
356
367
147
3,6,9
(Hàm băm)
1
4
5
1 3 6
1 2 4
457
125
159
3
4
5
3
5
6
3 5 7
6 8 9
3
6
7
3 6 8
1
,
4
,
7
2,5,8
17
Khai Phá Dữ Liệu
4
5
7
1
2
5
4 5 8
1
5
9
Phát hiện luật kết hợp bằng cây băm (1)
(Hàm băm)
Cây băm lưu các tập mục cần xét
1,4,7
258
3,6,9
2 3 4
5 6 7
2
,
5
,
8
145 1 3 6
3 4 5 3 6 7
368
3 5 6
357
Băm
(hash)
đốivới
1 5 9
3
6
8
3
5
7
6 8 9
1 2 4
4 5 7
1 2 5
4 5 8
đối
với
1, 4,
hoặc 7
18
Khai Phá Dữ Liệu
Phát hiện luật kết hợp bằng cây băm (2)
(Hàm băm)
Cây băm lưu các tập mục cần xét
1,4,7
258
3,6,9
2 3 4
5 6 7
2
,
5
,
8
1 4 5 1 3 6
3 4 5 3 6 7
368
3 5 6
3
5
7
Băm
(h h)
1 5 9
3
6
8
3
5
7
6 8 9
1 2 4
4 5 7
1 25
4 58
(h
as
h)
đối với
2, 5,
hoặc8
19
Khai Phá Dữ Liệu
hoặc
8
Phát hiện luật kết hợp bằng cây băm (3)
(Hàm băm)
Cây băm lưu các tập mục cần xét
1,4,7
258
3,6,9
2 3 4
5 6 7
2
,
5
,
8
1 4 5 1 3 6
3 4 5 367
3
6
8
3 5 6
3
57
Băm
(hash)
1 5 9
3
6
8
3
5
7
6 8 9
1 2 4
4 5 7
1 2 5
4 5 8
(hash)
đối với
3, 6,
ho
ặ
c 9
20
Khai Phá Dữ Liệu
ặ
Các tập mục mức k trong một giao dịch
Đối với giao
dịch
t
, hãy xác
dịch
t
,
hãy
xác
định các tập
mục mức 3?
G
i
ả
sử
tr
o
n
g
G ả sử og
mỗi tập mục,
các mục
được liệt kê
theo thứ tự
theo
thứ
tự
từ điển
21
Khai Phá Dữ Liệu
Xác định các tập mục bằng cây băm (1)
1 2 3 5 6
(Hàm băm)
Giao dịch t
1 + 2 3 5 6
3 5 62 +
56
3+
1,4,7
2,5,8
3,6,9
2 3 4
5
6
3
+
1 4 5 1 3 6
3 4 5 3 6 73 5 6
5 6 7
1 5 9
3 6 83 5 7
6 8 9
1 2 4
457
1 2 5
458
22
Khai Phá Dữ Liệu
4
5
7
4
5
8
Xá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
3,6,9
3 5 61 2 +
3 5 62 +
56
3+
1 + 2 3 5 6
2 3 4
567
5 61 3 +
61 5 +
5
6
3
+
1 4 5 1 3 6
3 4 5 3 6 7
3 5 6
5
6
7
1 5 9
3 6 8
3 5 7
6 8 9
1 2 4
4 5 7
1 2 5
458
Chỉ c
ầ
n so sánh
g
iao dịch
t
với 11
23
Khai Phá Dữ Liệu
4
5
8
g
(trong tổng số 15) tập mục cần xét!
Apriori: 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ệtcâybămcũng tăng
tăng
,
và
chi
phí
duyệt
cây
băm
cũng
tăng
24
Khai Phá Dữ Liệu
Biể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ấtlớn
sinh
ra
từ
một
csdl
giao
dịch
có
thể
rất
lớn
Cần một cách biểu diễn ngắn gọn (compact
representation)
representation)
Bằng một tập (nhỏ) các tập mục thường xuyên đại diện – mà có
thể dùng để suy ra (sinh ra) tất cả các tập mục thường xuyên
khác
khác
Có 2 cách biểu diễn như vậy
Các tậpmụcthường xuyên lớnnhấ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)
25
Khai Phá Dữ Liệu