Mục tiêu của nó là tìm tất cả các tập mẫu, liên kết, tương quan hoặc cấu trúc nhân quả có độ phổ biến cao trong tập hợp tất cả các hạng mục hoặc đối tượng trong cơ sở dữ liệu giao dịch,
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHAI PHÁ DỮ LIỆU
ĐỀ TÀI: Giải thuật FP-Growth (Khai phá luật kết hợp)
Sinh viên thực hiện : Nguyễn Minh Quân- 171200130
Lê Trọng Khoa- 171200458 Trần Hùng Tới-171201330 Trần Tuấn Vũ- 171202729
Hoàng Vĩnh Tiến- 171210074
Lớp - Khóa : CNTT4 – K58
Trang 2Mục lục
1.Bài toán phân tích giỏ hàng: 2
2.Định nghĩa về luật kết hợp: 3
2.1 Khái niệm 3
2.2 Định nghĩa 3
2.3 Ví dụ 3
3.Tìm hiểu về thuật toán fp-growth 6
4.ỨNG DỤNG CỦA FP-TREE TRONG KHAI PHÁ LUẬT KẾT HỢP 7
5.Triển khai phần mềm trên weka 10
Trang 31.Bài toán phân tích giỏ hàng:
Bài toán khai thác tập phổ biến (frequent itemset) là lớp bài toán rất quan trọng trong lĩnh vực
khai phá dữ liệu Mục tiêu của nó là tìm tất cả các tập mẫu, liên kết, tương quan hoặc cấu trúc nhân quả có độ phổ biến cao trong tập hợp tất cả các hạng mục hoặc đối tượng trong cơ sở dữ liệu giao dịch, cơ sở dữ liệu quan hệ và các kho thông tin dữ liệu khác
Có bao giờ bạn tự hỏi tại sao các mặt hàng sản phẩm này trong siêu thị lại được xếp cạnh nhau? Tại sao mặt hàng A lại được xếp ở dưới, mặt hàng B lại được xếp ở trên cao? Tại sao các món đồ
ta cần thường được xếp cạnh nhau trong siêu thị? Đây chính là một phần ứng dụng việc khai phá
dữ liệu mà cụ thể hơn là khai phá các tập phổ biến!
Bài toán khai thác các tập phổ biến được ứng dụng trong rất nhiều vấn đè, nổi tiếng
nhất là Basket data analysis (dự đoán, gợi ý các món hàng thường được cho cùng vào
giỏ hàng với món đồ A đã được chọn mua trước đó)
Nhưng trước khi đi vào khai thác tập phổ biến , ta cần tìm hiểu trước về luật kết hợp
Luật kết hợp đóng vai trò giúp ta tìm kiếm được các tập dữ liệu mà có mối liên hệ với
nhau , sau đó có thể dựa vào để tìm được các tập phổ biến
2.Định nghĩa về luật kết hợp:
2.1 Khái niệm: Luật kết hợp là mối quan hệ kết hợp giữa các tập thuộc tính trong cơ
sở dữ liệu
2.2 Định nghĩa:
Cho I={I1, I2, , Im} là tập hợp của m tính chất riêng biệt Giả sử D là CSDL, với các
bản ghi chứa một tập con T các tính chất (có thể coi như ), các bản ghi đều có chỉ
số riêng Một luật kết hợp là một mệnh đề kéo theo có dạng XY, trong đó X, Y I,
thỏa mãn điều kiện XY= Các tập hợp X và Y được gọi là các tập hợp tính chất
(itemset) Tập X gọi là nguyên nhân, tập Y gọi là hệ quả
2.3 Ví dụ :
Bài toán mua hàng trong siêu thị
Giả định chúng ta có rất nhiều mặt hàng, ví dụ như “bánh mì”, “sữa”,…(coi là tính
chất hoặc trường) Khách hàng khi đi siêu thị sẽ bỏ vào giỏ mua hàng của họ một số
mặt hàng nào đó, và chúng ta muốn tìm hiểu các khách hàng thường mua các mặt hàng
nào đồng thời, chúng ta không cần biết khách hàng cụ thể là ai Nhà quản lý dùng
những thông tin này để điều chỉnh việc nhập hàng về siêu thị, hay đơn giản là để bố trí
Trang 4sắp xếp các mặt hàng gần nhau, hoặc bán các mặt hàng đó theo một gói hàng, giúp cho khắc đỡ mất công tìm kiếm
1 Bread, milk
2 Bread, Diaper, Beer, Eggs
3 Milk, Diaper, Beer, Coke
4 Bread, Milk, Diaper, Beer
5 Bread, Milk, Diaper, Coke
Luật kết hợp :
{Diaper} {Beer}
{Milk,Bread} {Eggs ,Coke}
{Beer , Bread} {Milk}
Để đi sâu hơn vào luật kết hợp , chúng ta cần tìm hiểu về các định nghĩa cơ bản liên quan tới luật kết hợp
2.3.1 Tập mục ( item set) :
Là 1 tậ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) : Là một tập gồm K mục
Có 2 độ đo quan trọng đối với luật kết hợp : Độ hỗ trợ ( support) và độ tin cậy
(confidence)
2.3.2 Độ hỗ trợ (support) :
Tổng số hỗ trợ (Support count) σ: Số lần xuất hiện của 1 tập mục
Ví dụ : σ({Milk,Bread,Diaper}) = 2
Độ hỗ trợ (support) s:Độ hỗ trợ của một luật kết hợp XY là tỷ lệ giữa số lượng các bản ghi chứa tập hợp X Y, so với tổng số các bản ghi trong D - Ký hiệu s(XY)
Trang 5 Ví dụ:s(XY) = s({Milk,Diaper}Beer)=
= 2/5 = 0.4
Độ tin cậy ( Confidence) c : Độ tin cậy của một luật kết hợp XY là tỷ lệ giữa số lượng các bản ghi trong D chứa X Y với số bản ghi trong D có chứa tập hợp X Ký hiệu độ tin cậy của một luật là c(r)
2.3.3 Độ tương quan ( Lift) : Độ tương quan hỗ trợ kiểm soát các hệ quả trong khi
tính toán xác suất xuất hiện có điều kiện của XY
Công thức : Lift(r) =
Trong trường hợp mà X thực sự kết hợp cùng với Y , thì giá trị của lift
>=1 và ngược lại
Ví dụ : s ({Milk,Diaper}Beer)= = 2/5 = 0.4
s({Beer}) = = 3/5 = 0.6 s({Milk,Diaper }) = = 3/5 = 0.6
= 1.11 >1
2.3.4 Tần suất sinh ra các luật dự đoán không chính xác ( Conviction) :
Conviction của luật kết hợp XY cho biết tần suất mong muốn X xảy ra mà không cần Y
Công thức : Conv(r) = )
Giá trị của conviction càng cao thì tỉ lệ luật này sinh ra dự đoán không chính xác càng cao
Ví dụ : c ({Milk,Diaper}Beer) = = = 2/3 = 0.67
s({Beer}) = = 3/5 = 0.6 Conv({Milk,Diaper}Beer) =
= = 1.21
sự khác biệt giữa xác suất các trường hợp đồng xuất hiện của X và so với X và Y độc
Trang 6lập với nhau Nói cách khác , Leverage dùng để đo lường các trường hợp bổ sung bao
gồm X và Y cao hơn so với dự kiến nếu X và Y độc lập với nhau
Công thức : Lev(r) = s(XY) – s(X)*s(Y)
Giá trị của leverage càng thấp thì tỷ lệ XY càng cao , và ngược lại
2/5 = 0.4
s({Beer}) = = 3/5 = 0.6 s({Milk,Diaper }) = = 3/5 = 0.6 Lev({Milk,Diaper}Beer) = s({Milk,Diaper}Beer) – s({Milk,Diaper}) * s({Beer}) = 0.4 - 0.6 * 0.6 = 0.04
2.3.6 Tập thường xuyên : Tập hợp X được gọi là tập hợp thường xuyên (Frenquent
itemset) nếu có s(X) minsup, với minsup là ngưỡng độ hỗ trợ cho trước Kí hiệu các
tập này là FI
Ví dụ : Xét tập {Bread} , {Bread , Diaper} và minsup = 0.2
> 0.2
=>{Bread,Diaper} là tập thường xuyên , mà {Bread} lại là tập con của {Bread,Diaper} => {Bread} cũng là tập thường xuyên
3.Tìm hiểu về thuật toán fp-growth
Vì thuật toán fp-growth dựa trên fp-tree nên ta tìm hiểu qua thuật toán fp-tree:
- Frequent Pattern Tree (FP-tree) là một cấu trúc cây được tạo bằng các tập phổ biến ban đầu của cơ sở dữ liệu Mục đích của cây FP là khai thác mẫu thường xuyên nhất Mỗi node của cây FP đại diện cho một mục của tập phổ biến
- Root đại diện cho giá trị rỗng trong khi cá node dưới đại diện cho các tập phổ biến
- Sự liên kết các node với các node thấp hơn là tập phổ biến với tập phổ biến khác trong khi tạo Fp-tree
Nén một cơ sở dữ liệu lớn thành một cấu trúc Frequent-Pattern tree (FP-tree)
-cô đọng cao, nhưng hoàn chỉnh để khai thác mẫu phổ biến
- tránh quét cơ sở dữ liệu tốn kém
• Phát triển một phương pháp khai thác mẫu phổ biến dựa trên cây FP-tree hiệu quả
Trang 7- Phương pháp luận chia để trị: phân rã các nhiệm vụ khai thác thành các nhiệm vụ nhỏ hơn
- Tránh tạo ứng viên: chỉ kiểm tra cơ sở dữ liệu con
• Ý tưởng:
- Thuật toán FP-growth do nén toàn bộ CSDL lên một cấu trúc dữ liệu nhỏ hơn là cây FP-tree nên tránh được việc duyệt nhiều lần CSDL (thuật toán chỉ duyệt cơ sở dữ liệu 2 lần) Tiếp theo thuật toán khai phá cây bằng cách phát triển dần các mẫu mà không sinh các tập mục ứng viên, do đó tránh được khối lượng tính toán lớn Phương pháp FP- growth đã chứng tỏ được tính hiệu quả của nó và có thể thực hiện khai phá cho cả các mẫu ngắn và dài, nhanh hơn thuật toán Apriori, luôn chỉ cần duyệt CSDL 2 lần
Thuật toán FP- growth thực hiện như sau: Đầu tiên, thuật toán duyệt CSDL lần thứ nhất để tính độ hỗ trợ của từng mục (đếm số lần xuất hiện của từng mục)
Tiếp đến, những mục không đủ độ hỗ trợ bị loại Các mục còn lại được sắp theo thứ tự giảm dần của độ hỗ trợ (cũng tức là giảm dần theo số lần xuất hiện trong CSDL), ta nhận được danh sách L các mục đã sắp
Duyệt CSDL lần thứ hai, với mỗi giao tác t, loại các mục không đủ độ hỗ trợ, các mục còn lại theo thứ tự giống như xuất hiện trong L (tức là thứ tự giảm dần theo độ hỗ trợ) được cất vào cây FP-tree
Phần tiếp theo thuật toán khai phá tìm các mẫu thường xuyên trên cây FP-tree đã xây dựng
mà không cần duyệt lại CSDL nữa
Lợi ích của việc sử dụng cấu trúc fp-growth
Ưu điểm
- Thuật toán FP - Growth chỉ cần quét cơ sở dữ liệu hai lần trong khi sử dụng thuật toán Apriori sẽ phải quét cơ sở dữ liệu cho mỗi lần lặp
- Thuật toán này không thực hiện việc ghép nối các thành phần với nhau nên làm cho nó thực hiện nhanh hơn
- Cơ sở dữ liệu được lưu trữ với một phiên bản nhỏ hơn trong bộ nhớ
- Nó rất hiệu quả và có thể mở rộng để khai thác các frequent pattern dài và ngắn
Nhược điểm
- FP Tree thì rất cồng kềnh và khó để xây dựng hơn là Apriori
- Tốn nhiều chi phí hơn
- Và khi dữ liệu cơ sở dữ liệu lớn thì thuật toán này sẽ không còn phù hợp với bộ nhớ được dùng chung
Trang 84.ỨNG DỤNG CỦA FP-TREE TRONG KHAI PHÁ LUẬT KẾT HỢP
1 Bread, milk
2 Bread, Diaper, Beer, Eggs
3 Milk, Diaper, Beer, Coke
4 Bread, Milk, Diaper, Beer
5 Bread, Milk, Diaper, Coke
Quay trở lại với bài toán giỏ hàng trong siêu thị Lúc này ta sẽ quy định các sản phẩm dưới dạng chữ cái cho dễ dàng phân tích:
Bread : A
Milk : B
Diaper: C
Beer : D
Eggs : E
Coke:F
Lúc này bảng của chúng ta sẽ thay đổi như sau
Đầu tiên chúng ta cần xây dựng FP-Tree:
Trang 9Ban đầu, FP-Tree chỉ chứa duy nhất nút gốc (được biểu diễn bởi ký hiệu null).
Cơ sỡ dữ liệu các giao dịch được duyệt lần 1, để xác định độ hỗ trợ của mỗi mục
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ợ
Cơ dở dữ liệu các giao dịch được duyệt lần thứ 2, để xây dựng FP-Tree
Áp dụng với bài toán trên với minsup=0.4
Bước 1: tìm các item mức 1 có sup>= 2 , và sắp xếp theo thứ tự giảm dần
Bước 2 : Sắp xếp các mục phổ biến mức 1 vừa tìm được theo thứ tự giảm dần trong mỗi giao dịch:
Duyệt các items phổ biến của mỗi giao dịch để xây dựng FP-Tree
Trang 10Tiếp theo, duyệt các item phổ biến mức 1 theo thứ tự tăng dần độ hỗ trợ (F,D,C,B,A) Với mỗi item, xây dựng các mẫu cơ sở mẫu điều kiện (conditional pattern-base ) và sau đó là các FP-Tree
điều kiện (conditional FP-TREE) của nó.
Tính chất: bất kì mẫu phổ biến nào có chứa mục Ii đều được chứa trên các nhánh (đường dẫn) của cây FP-Tree chứa Ii, số lần xuất hiện của mẫu chứa các nút trong đường dẫn tiền tố bằng số lần xuất hiện của nút Ii
Bắt đầu với item F, cơ sở mẫu điều cơ sở mẫu điều kiện của nó là tất cả các đường dẫn tiền tố của cây FP-Tree khi duyệt từ gốc root = null đến nút F , chính là ABC:1 và BCD:1 ( số theo sau
là số lần xuất hiện của nút F tương ứng với mỗi tổ tiên đó)
Tiếp theo ta xây dựng FP-Tree điều kiện từ mẫu này bằng cách trộn tất cả các đường dẫn và giữ lại các nút có tổng các số đếm >= sup = 2 ( độ hỗ trợ >= minsup=0.4) :
ABC:1 và BCD:1 trộn lại thành A:1 , B:2 , C:2 , D:1 , có B:2 và C:2 thỏa mãn điều kiện Do đó, các mẫu phố biến chứa F là : F , BF , CF, BCF
Làm tương tự cho các item còn lại , ta có thể tìm được các mẫu phổ biến của item đó Cuối cùng
có bảng sau đây:
Item Cơ sở mẫu điều kiện FP-Tree điều kiện Các mẫu phổ biến
F {ABC:1, BCD:1} {B:2, C:2}-F F, BF, CF, BCF
D {ABC:1, BC:1} {B:2, C:2}-D D, BD, CD, BCD
C {AB:2, A:1, B:1} {A:3, B:3}-C C, AC, BC, ABC
Trang 11A ∅ ∅ A
5.Triển khai phần mềm trên weka
Giới thiệu về Weka
i Weka – Wakato Enviroment for Knowledge Analysis – là một tập hợp các giải thuật học máy và các công cụ xử lý dữ liệu, được phát triển bằng Java, phân phối dưới giấy phép GNU General Public
Mô tả dữ liệu SuperMarket
ii Nguồn: https://storm.cis.fordham.edu/~gweiss/data-mining/weka-data/supermarket.arff
iii Đây là tập dữ liệu phân tích các sản phẩm được mua trong siêu thị
iv Chúng ta sẽ khai phá luật kết hợp trên tập dữ liệu trên bằng thuật toán FP-Growth nhằm xác định các sản phẩm thường xuyên được mua cùng nhau
Sử dụng weka khai phá luật kết hợp bằng thuật toán FP-Growth
Bước 1 : Mở file supermarket.aff bằng ứng dụng :
Trang 12Bước 2: Quan sát tập dữ liệu, ta được:
Ta tiếp tục chọn tab “Associate” như hình dưới:
Bước 3: Lựa chọn thuật toán FP-Growth và tiến hành thiết lập các thông số trước khi chạy thuật toán
Trang 13Chúng ta sẽ quan tâm đến 3 thông số chính
- LowerBoundMinSupport: Cận dưới độ hỗ trợ tối thiệu (miniSup), mặc định là 0,1
- MetricType: khai phá luật kết hợp theo độ tin cậy (Confidence)
- minMetric: khai phá luật kết hợp có độ tin cậy từ 0,9 đổ lên
Bước 4: Chạy thuật toán trong Weka
Nhấn nút Start để bắt đầu chạy thuật toán FP-Growth Sau khi hoàn tất, ta được kết quả như bên dưới:
Trang 14Như vậy áp dụng thuật toán FP-Growth, chúng ta xác định được 16 tập các hạng mục phổ biến có Độ tin cậy (confidence) từ 0,9 đổ lên và có độ hỗ trợ lớn hơn 0.1
Trang 15Link tài liệu tham khảo:
https://www.dbs.ifi.lmu.de/Lehre/KDD/SS16/skript/3_FrequentItemsetMining.pdf? fbclid=IwAR1CPJOC_FsFZQ7wfWusq_SQkcTpYd_gqD9rbGlGxV0PDxQ3kXzs KO1cDxU
https://www.softwaretestinghelp.com/fp-growth-algorithm-data-mining/
https://repository.vnu.edu.vn/bitstream/VNU_123/6401/1/00050001570.pdf?
fbclid=IwAR0_o3x0OdYbudaXqyV2VpTDVpeZytkxcQFr38i-kZOhXhQrBf_nvHuERQ0
http://ccs.hnue.edu.vn/hungtd/DM2012/NhatQuang/L4-Phat_hien_luat_ket_hop.pdf