หน่วยที่ 6 Association Rule : FP tree

Download Report

Transcript หน่วยที่ 6 Association Rule : FP tree

หน่ วยที่ 6 Association Rule :
FP-Tree & FP Growth
อ.วิวฒั น์ ชินนาทศิริกลุ
ปัญหาของ Apriori Algorithm
1. ไม่เหมาะกับการทางานกับข้อมูลจานวนมากๆ หรื อฐานข้อมูลขนาด
ใหญ่ เนื่องจากต้องสร้าง candidate item set จานวนมาก เช่น
104 frequent 1-itemset will generate 107 candidate 2-itemsets
2. มีการอ่านข้อมูลจากฐานข้อมูลหลายครั้ง เนื่องจากทุกครั้งที่ตอ้ งการ
ตรวจสอบว่า candidate items set เป็ น frequent items set หรื อไม่
จะต้องอ่านข้อมูลจากฐานข้อมูลเพื่อหาความถี่
จากปัญหาที่เกิดจาก Ariori Algorithm ทาให้มีการคิดวิธีการปรับปรุ งประสิ ทธิภาพ
การทางานที่หา frequent itemsets โดยไม่ตอ้ งสร้าง candidate itemsets ขึ้น
วิธีการหนึ่งที่น่าสนใจที่สามารถสร้าง frequent itemsets โดยไม่ตอ้ งสร้าง
Candidate คือ Frequent Pattern growth หรื อเรี ยกย่อๆว่า FP-growth
วิธีการนี้ประกอบด้วย
ขั้นตอนแรก – แสดง Frequent itemsets ด้วย Frequent-pattern-Tree (FP-Tree)
ขั้นตอนถัดไป – สร้างเซตของ conditional base pattern แล้วนาค่าที่ได้ไปหา
frequent itemsets
FP-Tree Definition
FP-tree มาจากคาว่า frequent pattern tree โครงสร้าง FP-tree นิยามไว้ ดังนี้
1. Root Node แทนค่าด้วย “null", ลูกของ Root จะเป็ นเซตของ item ต้นไม้
ย่อย
2. แต่ละโหนดใน ต้นไม้ยอ่ ย มี 3 ฟิ ลด์
– item-name :แทนค่าของโหนดที่แสดงผล
– Count จานวน transaction เมื่อนับถึงโหนดที่กาหนด
– node-link ใช้เชื่อมโยง node ใน FP-tree ที่มีชื่อเดียวกัน หรื อค่า null
FP-Tree Definition (ต่ อ)
3. ตาราง header มี 2 ฟิ ลด์
– ชื่อ item และ
– head of node-link ที่ช้ ีไปยังโหนดแรกใน FP-tree
ตัวอย่ าง FP-Tree
null
Header Table
Item head
f
c
a
b
m
p
f:4
c:3
c:1
b:1
a:3
b:1
p:1
m:2
b:1
p:2
m:1
การสร้ าง FP-Tree
มี 2 ขั้นตอน
1. อ่านค่า Transaction ในฐานข้อมูล เพื่อหาค่าความถี่ หรื อค่า support
ของแต่ละ item และเรี ยงลาดับ item ตามค่าความถี่จากมากไปหาน้อย
ใส่ ใน List เช่น
Item frequency
f
4
c
4
a
3
b
3
m
3
p
3
การสร้ าง FP-Tree (ต่ อ)
2. ในแต่ละ transaction ให้เรี ยงลาดับ items ตามความถี่ของ item ใน
List จากนั้นให้อ่านฐานข้อมูล ครั้งที่ 2 เพื่อสร้าง FP-Tree โดยนาค่า
items ที่เรี ยงลาดับความถี่ในแต่ละ Transaction ใส่ ใน FP-Tree
ตัวอย่ าง การสร้ าง FP-Tree
กาหนด Transactions ในการซื้อสิ นค้า ดังตารางด้านล่าง ให้สร้าง FP-Tree
โดยกาหนด Minimum Support อย่างน้อย 3 transaction
TID
100
200
300
400
500
Items bought
{f, a, c, d, g, i, m, p}
{a, b, c, f, l, m, o}
{b, f, h, j, o}
{b, c, k, s, p}
{a, f, c, e, l, p, m, n}
ตัวอย่ าง การสร้ าง FP-Tree (ต่ อ)
1. อ่าน transactions จากฐานข้อมูล ครั้งที่ 1 เพื่อหาความถี่ ของแต่
ละ items เรี ยงลาดับจากความถี่มากไปหาความถี่นอ้ ย เพื่อสร้าง
list L
L
Item frequency
f
4
c
4
a
3
b
3
m
3
p
3
ตัวอย่ าง การสร้ าง FP-Tree (ต่ อ)
2. อ่าน transactions ในฐานข้อมูล ครั้งที่ 2 เพื่อเรี ยงลาดับ items
ในแต่ละ transactions ตามความถี่ ตาม list L
TID
100
200
300
400
500
Items bought
{f, a, c, d, g, i, m, p}
{a, b, c, f, l, m, o}
{b, f, h, j, o}
{b, c, k, s, p}
{a, f, c, e, l, p, m, n}
(ordered) frequent items
{f, c, a, m, p}
{f, c, a, b, m}
{f, b}
{c, b, p}
{f, c, a, m, p}
ตัวอย่ าง การสร้ าง FP-Tree (ต่ อ)
สร้าง FP-Tree จาก (ordered) frequent items
null
f:1
TID=100
{f, c, a, m, p}
c:1
a:1
NOTE: Each
transaction
corresponds to one
path in the FP-tree
m:1
p:1
ตัวอย่ าง การสร้ าง FP-Tree (ต่ อ)
null
f:1
TID=100
{f, c, a, m, p}
null
f:2
TID=200
{f, c, a, b, m}
c:1
c:2
a:1
a:2
m:1
m:1
b:1
p:1
p:1
m:1
Node-Link
ตัวอย่ าง การสร้ าง FP-Tree (ต่ อ)
null
null
f:3
f:3
TID=300
{f, b}
c:2
TID=400
{c, b, p}
b:1
c:2
c:1
b:1
a:2
a:2
null
b:1
p:1
f:4
TID=500
{f, c, a, m, p}
c:3
c:1
b:1
a:3
b:1
p:1
m:1
b:1
m:1
b:1
m:2
b:1
p:1
m:1
p:1
m:1
p:2
m:1
ตัวอย่ าง การสร้ าง FP-Tree (ต่ อ)
Final FP-tree
null
Header Table
Item head
f
c
a
b
m
p
f:4
c:3
c:1
b:1
a:3
b:1
p:1
m:2
b:1
p:2
m:1
การสร้ าง Frequent itemsets จาก FP-Tree
1.
2.
3.
สร้าง Prefix Path Subtree ของ items ที่ตอ้ งการ
สร้าง Conditional Base Pattern
สร้าง Frequent Pattern
1. สร้าง Prefix Path Subtree ของ items ที่ตอ้ งการ
Prefix path subtree of p
Prefix path subtree of m
null
f:4
Prefix path subtree of b
null
null
c:1
f:4
f:4
c:3
b:1
c:3
c:3
a:3
p:1
a:3
a:3
m:2
p:2
m:2
b:1
m:1
b:1
c:1
b:1
b:1
Prefix path subtree of a Prefix path subtree of c
null
f:4
c:3
a:3
Prefix path subtree of f
null
f:4
c:3
null
c:1
f:4
Prefix Path Subtree แต่ ละโหนดที่ได้
Items
p
m
b
a
c
f
prefix path subtree
{f:4,c:3,a:3,m:2,p:2} {c:1,b:1,p:1}
{f:4,c:3,a:3,m:2} {f:4,c:3,a:3,b:1,m:1}
{f:4,c:3,a:3,b:1} {f:4,b:1} {c:1,b:1}
{f:4,c:3,a:3}
{f:4,c:3} {c:1}
{f:4}
นา Prefix path subtree มาหา Condition Base Pattern
Items
p
m
b
a
c
f
prefix path subtree
{f:4,c:3,a:3,m:2,p:2} {c:1,b:1,p:1}
{f:4,c:3,a:3,m:2} {f:4,c:3,a:3,b:1,m:1}
{f:4,c:3,a:3,b:1} {f:4,b:1} {c:1,b:1}
{f:4,c:3,a:3}
{f:4,c:3} {c:1}
{f:4}
Condition base pattern
{f c a m :2} {c b :1}
{f c a :2} {f c a b :1}
{f c a :1} {f :1} {c b :1}
{f c :3}
{f :3}
null
Condition Tree
{c:3}
{ f c a : 3}
{ f c :3 }
{ f :3}
null

นา Condition FP-Tree ไปสร้ าง Frequent itemsets
พิจารณา จาก Condition FP-Tree ที่มีฐานเป็ นโหนด p คือ { c : 3 } นาไปสร้าง itemsets
ขนาด 1-itemset 2-itemsets 3-itemset ไปเรื่ อยๆ ดังนี้
1-items
p
null
f:4
2-items
cp
c:3
Frequent itemsets ที่ได้คือ {p} {cp}
a:3
c:1
b:1
b:1
p:1
m:2
b:1
p:2
m:1
นา Condition FP-Tree ไปสร้ าง Frequent itemsets (ต่ อ)
พิจารณา จาก Condition FP-Tree ที่มีฐานเป็ นโหนด m คือ {f c a : 3 } นาไปสร้าง itemsets
ขนาด 1-itemset 2-itemsets 3-itemset ไปเรื่ อยๆ ดังนี้
1-items
m
2-items
am
cm
fm
3-items
cam
fam
fcm
4-items
fcam
Frequent itemsets ที่ได้คือ {m} {am} {cam} {fcam} {fam}
{cm} {fcm} {fm}
null
f:4
c:3
c:1
b:1
a:3
b:1
p:1
m:2
b:1
p:2
m:1
นา Condition FP-Tree ไปสร้ าง Frequent itemsets (ต่ อ)
พิจารณา จาก Condition FP-Tree ที่มีฐานเป็ นโหนด b คือ {}
null
Frequent itemsets ที่ได้คือ {b}
พิจารณา จาก Condition FP-Tree ที่มีฐานเป็ นโหนด a คือ { f c :3}
1-items
a
2-items
ca
fa
3-items
fca
Frequent itemsets ที่ได้คือ {a} {ca} {fca} {fa}
f:4
c:3
c:1
b:1
a:3
b:1
p:1
m:2
b:1
p:2
m:1
นา Condition FP-Tree ไปสร้ าง Frequent itemsets (ต่ อ)
พิจารณา จาก Condition FP-Tree ที่มีฐานเป็ นโหนด c คือ { f:3}
null
Frequent itemsets ที่ได้คือ {c} {fc}
f:4
พิจารณา จาก Condition FP-Tree ที่มีฐานเป็ นโหนด f คือ {}
c:3
Frequent itemsets ที่ได้คือ {f}
a:3
c:1
b:1
b:1
p:1
m:2
b:1
p:2
m:1
สรุป Frequent itemsets ทีไ่ ด้
{p} {cp} {m} {am} {cam} {fcam} {fam} {cm} {fcm} {fm} {b} {a} {ca} {fca}
{fa} {c} {fc} {f}
ตัวอย่ างที่ 2
จงสร้าง FP-Tree และหา Frequent itemsets ทั้งหมด กาหนด min_support ไม่นอ้ ย
กว่า 2 transaction
วิธีทา
1. หาจานวนความถี่ ของแต่ละ item ได้ดงั นี้
Apple Mac
Bubble Jet
CD Writer
DVD Rom
E-Business S/w
Film
Graphic Card
1
3
3
3
1
2
1
Bubble Jet
CD Writer
DVD Rom
Film
3
3
3
2
2. เรี ยงลาดับ items ในแต่ละ transaction ใหม่ และตัด items ที่ ค่า support น้อยกว่า 2 ทิ้ง
TID
1
2
3
4
item bought
Bubble Jet , CD Writer
CD Writer , DVD Rom
Bubble Jet, DVD Rom, Film
Bubble Jet, CD Writer, DVD Rom, Film
3. สร้ าง FP-Tree จาก transactions ในข้ อ 2
null
Bubble Jet
CD Writer
DVD Rom
Film
3
3
3
2
C:1
B:3
C:2
D:1
F:1
D:1
D:1
F:1
4. หา prefix path subtree และ condition base FP-Tree
Item
F
D
C
B
prefix path subtree
{b:3 c:2 d:1 f:1} {b:3 d:1 f:1}
{b:3 c:2 d:1} {b:3 d:1} {c:1 d:1}
{b:3 c:2} {c:1}
{b:3}
condition FP-tree
{b:2 d:2}
{b:2 c:2}
{b:2}
{}
5. หา Frequent itemsets ของแต่ละโหนด
พิจารณา จาก Condition FP-Tree ที่มีฐานเป็ นโหนด F คือ { B:2 D:2 } นาไปสร้าง
itemsets ดังนี้
null
1-items
F
2-items
DF
BF
3-items
BDF
C:2
Frequent itemsets ที่ได้คือ {F} {DF}
{BDF} {BF}
C:1
B:3
D:1
F:1
D:1
D:1
F:1
พิจารณา จาก Condition FP-Tree ที่มีฐานเป็ นโหนด D คือ { B:2 C:2 } นาไปสร้าง
itemsets ดังนี้
null
1-items
D
2-items
CD
BD
3-items
BCD
C:2
Frequent itemsets ที่ได้คือ {D} {CD} {BD}
C:1
B:3
D:1
F:1
D:1
D:1
F:1
พิจารณา จาก Condition FP-Tree ที่มีฐานเป็ นโหนด C คือ { B:2 } นาไปสร้าง
itemsets ดังนี้
null
1-items
C
2-items
BC
C:2
Frequent itemsets ที่ได้คือ {C} {BC}
C:1
B:3
D:1
F:1
D:1
D:1
F:1
พิจารณา จาก Condition FP-Tree ที่มีฐานเป็ นโหนด B คือ {}
Frequent itemsets ที่ได้คือ {B}
สรุป Frequent itemsets ทั้งหมดที่ได้คือ {F} {DF} {BDF} {BF} {D} {CD} {BD}
{C} {BC} {B}
{Film} {DVD Rom} {CD Writer} {Bubble Jet}
{DVD Rom , Film} {Bubble Jet , Film} {CD Writer , DVD Rom}
{Bubble Jet , DVD Rom} {Bubble Jet , CD Writer}
{Bubble Jet , DVD Writer , Film}
แบบฝึ กหัด
จงสร้าง FP-Tree และหา Frequent itemsets ทั้งหมดที่ได้ กาหนด Minimum Support=33.34%