Khai phá luật kết hợp trong khai phá dữ liệu
Trang 1Báo cáo tốt nghiệp đại học
Khai thác luật kết hợp trong khai phá dữ liệu
GVHD ThS Lưu Nguyễn Kỳ Thư
Lớp Đ07THPM
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN II
Trang 2Nội dung
Tổng quan khai phá dữ liệu
Luật kết hợp
Giới thiệu Giá trị support và confident
Thuật toán Apriori
Thuật toán AprioriTID
Thuật toán FP Growth
Cải tiến tốc độ bằng kỹ thuật mảng
Ứng dụng trong bài toán CK
Kết luận
Trang 3Tổng quan khai phá dữ liệu
Là quá trình trích xuất thông tin, khám phá tri thức
có mối tương quan nhất định từ một kho dữ liệu
khổng lồ nhằm mục đích dự đoán các xu thế, hành vi trong tương lai, hoặc tìm kiếm tập các thông tin hữu ích mà bình thường không thể nhận diện được
Giải quyết các vần đề thực tế:
Siêu thị wallmart có hơn 2triệu giao dịch/ngày Google, Youtube, .
Trang 4Tổng quan khai phá dữ liệu
Các giai đoạn của của quá trình khai phá:
Trang 5Luật kết hợp (Agrawal)
I = {i1,i2, … ,in} là tập n thuộc tính nhị phân
D = {t1,t2, … ,tn} là tập các giao tác gọi là cơ sở dữ liệu, mỗi ti có một ID duy nhất và chứa tập các mục trong I
Một luật định nghĩa sự kéo theo có dạng X ⇒ Y
trong đó X,Y ⊆ I và X ∩ Y = ∅
X gọi là phần mệnh đề điều kiện
Y gọi là mệnh đề kết quả của luật tương ứng
Trang 7Dữ liệu mẫu
Từ bảng lịch sử giá
Trích những mã CP theo nhu cầu nhà đầu tư
Biến động giảm trong ngày Biến động tăng trong ngày
Trang 8Dữ liệu mẫu
Dữ liệu thô
Danh sách mã CP có biến động tăng trong ngày
Trang 9nhất 4 lần.
Trang 10Bài toán tìm các mã CP tăng đồng thời với tần suất ≥ minSup
Trang 11Bài toán tìm các tập phổ biến
• sup: Tần suất xuất hiện cùng
nhau của các item.
• sup ≥ minSup
Trang 12Thuật toán Apriori (Agrawal-1994)
Tìm kiếm theo chiều rộng
Sinh ra ứng viên k item từ tập k-1 item Loại dần các tập không đủ điều kiện
a c d
Trang 13Thuật toán Apriori (Agrawal-1994)
Large1 = { large 1-itemsets }
subset(Ck,t)
Lọc ra những phần tử thuộc
Ck xuất hiện ở giao tác t
Trang 14Danh sách ứng viên 2 item
Trang 15Thuật toán Apriori
{DRC,TCR,VSH}
{NAG,TCR,VSH}
64
Item3 Sup
{DRC,TCR,VSH} 6{NAG,TCR,VSH} 4
Trang 16Item3 Sup
{DRC,TCR,VSH} 6{NAG,TCR,VSH} 4
Xuất kết quả tìm được
Trang 17Thuật toán AprioriTID
Nhận xét về thuật toán Apriori:
Tại mỗi bước, quét toàn bộ CSDL, so sánh tập ứng viên gây
lãng phí thời gian
Ý tưởng AprioriTID:
Chỉ quét CSDL cho lần đầu tiên
Dùng đối tượng Transk để lưu các tập đủ điều kiện CSDL tại
mỗi bước k
Mỗi phần tử Transk có dạng:
<t.TID,{c ∈ Candidatek |giao tác t chứa c}>
Trang 18Thuật toán AprioriTID
Large1 = { large 1-itemsets }
Trans1 = database Db
for (k=2; Largek-1 <> Ø; k++) {
Candidatek = apriori-gen(Largek-1)
Transk = Ø
for tất cả giao dịch t ∈ Transk-1 do {
C’t = {c ∈ Candidatek | c\c.ak ∈ t Ʌ c\c.ak-1 ∈ t}
for tất cả ứng viên c ∈ C’t do c.count++
if (Ct ≠∅) then Transk += <t.TID, C’t>
Chứa các tập phổ biến độ lớn k cho từng giao tác
Mỗi phần tử thuộc Transk có dạng:
<t.TID,{c ∈ Candidatek |giao tác t chứa c}>
TID : nhận dạng cho từng giao tác
[7]<7,{{DRC},{NAG},{TCR},{VLA},{VSH}}>[8]<8,{{DRC},{TCR},{ACB} }>
[9] <9,{{DRC},{TCR},{VSH},{ACB} }>
[10]<10,{{DRC},{TCR},{VSH},{ACB} }>
Trang 20TID Danh sách tập 3 item
Trang 21TID Danh sách tập 3 item
3{DRC,TCR,VSH}
4{NAG,TCR,VSH}
5{DRC,TCR,VSH},{NAG,TCR,VSH}6{DRC,TCR,VSH},{NAG,TCR,VSH}7{DRC,TCR,VSH},{NAG,TCR,VSH}9{DRC,TCR,VSH}
10{DRC,TCR,VSH}
Xuất kết quả tìm được
Trang 22Thuật toán FP-Growth
Giới thiệu
Khuyết điểm của các thuật toán trước đây:
Tốn kém do việc sinh ra và kiểm tra các ứng viên
FP-Growth: (Frequent Pattern Growth)
Không cần sinh và kiểm tra ứng viên
Xây dựng cấu trúc Cây FP để lưu trữ toàn bộ CSDL
Khai phá cây FP để tìm các mẫu phổ biến
Trang 23Thuật toán FP-Growth
Cây FP
Mục đích
Tránh quét lại CSDL nhiều lần
Giảm thiểu lưu trữ đối với các giao tác chứa cùng các tập phổ biến
Xây dựng cây FP chỉ cần 2 lần quét CSDL:
1 Tính support từng item tìm ra các item phổ biến
2 Đọc lại CSDL theo thứ tự support giảm dần, loại những item
có support< minSup
Trang 24Thuật toán FP-Growth
Cây FP
Xây dựng cây FP
Nút gốc có giá trị NULL (cấp độ 0)
Thông tin mỗi nút:
<name, support, parent_node>
Trên cùng 1 nhánh, nút cấp độ k có giá trị support lớn hơn hoặc bằng nút có cấp độ k+1
(1 ≤ k ≤ N)
N: số lượng item phổ biến
Trang 25Thuật toán FP-Growth
Trang 26Thuật toán FP-Growth
Cây FP
Giải thuật xây dựng cây FP:
Header ={<name,sup,link*>|sup>= minSup }
getFP(t,Flist)
• Đọc các item phổ biến trong giao tác t theo thứ tự Flist
Trang 27Thuật toán FP-Growth
Trang 28Thuật toán FP-Growth
Trang 29Thuật toán FP-Growth
Trang 30Thuật toán FP-Growth
Trang 31Thuật toán FP-Growth
Trang 32Thuật toán FP-Growth
Trang 33VSH:3
NAG:2 VSH:4 DRC:4
Thuật toán FP-Growth
Trang 35TCR:7
VSH:4 DRC:6
Trang 36TCR:8
VSH:5 DRC:7
Trang 38Thuật toán FP-Growth
Trang 39Thuật toán FP-Growth
Khai phá cây FP
Ý tưởng cho việc khai phá
Chia cây FP làm 2 phần
P: Chứa chuỗi nút liên tục từ gốc chỉ có 1 con (1 nhánh
đơn từ gốc đến k) gọi là nhánh tiền tố đơn
Q: phần chứa các nút thuộc phần nhiều nhánh
Trang 40Thuật toán FP-Growth
Khai phá cây FP
Input
Cây FP Giá trị minSup
Output
Tập các mẫu phổ biến
Trang 41Thuật toán FP-Growth
Giải thuật khai phá cây FP
PROCEDURE FP-growth(Tree, α){
if(Tree chứa đường dẫn prefix đơn) {
P = phần chứa nhánh prefix đơn của Tree
Q = phần chứa nhiều nhánh của cây Tree, Q.root= NULL;
foreach tổ hợp các node thuộc P(kí hiệu β) do
Sinh ra các mẫu β∪α với support=support nhỏ nhất trong β
Gán freq_pattern_set(P) là tập các mẫu được sinh ra
}else gán Q là Tree;
foreach (item ai thuộc Q) do{
Sinh ra mẫu β=ai∪α với support=ai.support
Xây dựng cơ sở mẫu ước định của β và cây ước định Treeβ
Gọi FP-growth (Treeβ,β)
Gán freq_pattern_set(Q) là tập các mẫu được sinh ra
} RETURN freq_pattern_set(P) ∪ freq_pattern_set(Q) ∪ (freq_pattern_set(P)×
freq_pattern_set(Q))
}
Trang 42Thuật toán FP-Growth
Ví dụ:
Trang 43Thuật toán FP-Growth
Ví dụ cách xây dựng cây FP β ={NAG}
Trang 44Cải tiến tốc độ FP-growth bằng kỹ thuật mảng
Nhận xét FP-Growth
80% thời gian duyệt các node trên cây FP
Công việc chính cho mỗi bước khai phá
Xây dựng cây FP β ={ai} chưa hoàn chỉnh từ cây FP cha Đếm count của các node trên cây mới FP
Xóa các node không đủ điều kiện Cấu trúc lại các node trên cây theo thứ tự mớiGiải pháp nào tối ưu hơn?
Trang 45Cải tiến tốc độ FP-growth bằng kỹ thuật mảng
Ý tưởng: Khi xây dựng cây FP
Dựa trên thứ tự support giảm dần của bảng header Đối với mỗi item x, ta có các item yi ∉ cây FP β ={x} ⇒
yi.support<x.support (yi cùng nhánh x) Trong khi xây dựng cây FP, ta có thể tính support của một item yj bất kỳ chung nhánh với item x (với
yj.support ≥ x.support) cho cây FP β ={x}
Trang 46Cải tiến tốc độ FP-growth bằng kỹ thuật mảng
6
Trang 47Ứng dụng trong bài toán CK
Từ bảng lịch sử giá
Trích những mã CP theo nhu cầu nhà đầu tư
Biến động giảm trong ngày
Biến động tăng trong ngày
Xây dựng bảng dữ liệu nhị phân
Trang 48Ứng dụng trong bài toán CK
Trang 49Ứng dụng trong bài toán CK
Hiệu suất thực thi:
0 500 1000 1500 2000 2500
3000
FPGrowth Apriori AprioriTID
Trang 50Hướng lưu trữ hợp lý khi dữ liệu không thể chứa trong bộ nhớ trong
Chưa ứng dụng khả năng sử dụng lại kết quả khai phá
Trang 51Kết thúc
Cảm ơn thầy cô và các bạn đã quan theo dõi!