23
布布布布布布布 http://blog.pulipuli.i nfo/ 2017/1/14 布布布布布布布 R 布 arulesSequences 布

20170114 循序樣式探勘:以r實作

Embed Size (px)

Citation preview

Page 1: 20170114 循序樣式探勘:以r實作

布丁布丁吃布丁http://blog.pulipuli.info/2017/1/14

循序樣式探勘:以 R 的arulesSequences 實作

Page 2: 20170114 循序樣式探勘:以r實作

2

循序樣式探勘介紹

曾憲雄( 2005 )。資料探勘。臺北市:旗標。( ISBN : 978-957-442-236-4 )

Page 3: 20170114 循序樣式探勘:以r實作

3

循序樣式探勘 ●循序樣式探勘的目的是找出顧客在不同時間點所購買的物品先後之關係。●例如:

○根據消費者每次交易所購買的產品資料與交易時間,發掘出類似下列的循序樣式:「 80% 的顧客如果購買 PC 主機和螢幕,則下一次會購買印表機」○根據學習者在學習活動中不同時間順序,發掘出類似以下的循序樣式:「 50% 學習者在回答問題之後瀏覽討論區」

Page 4: 20170114 循序樣式探勘:以r實作

定義:序列、項目集●一個序列 (sequence) 是項目集 (itemsets) 的有序串列 (ordered list)

○序列 S 被表示成 <s1,s2,…,sn> ,其中 si (1< i ≦ n) 是項目集。

○例如, <{10, 20},{30},{90}> 是一個序列,其中 {10, 20} 、 {30} 以及 {90} 皆是項目集。 �○{10,20} 項目集中包含了 {10} 跟 {20} 這兩個項目集

4

Page 5: 20170114 循序樣式探勘:以r實作

定義:包含、子序列●包含:序列 <{a1},{a2},…,{an}> 被包含在序列

<{b1},{b2},…,{bm}> 中,假如存在整數 i1<i2< …<in 滿足

○序列 <{10},{90}> 被包含在 <{10, 20},{30},{90}> 中

○<{10},{90}> 不被包含在 <{10, 90}> 。這是因為在序列 <{10},{90}> 中,項目集 {10} 和 {90} 是先後在不同交易中被購買的。●若序列 S 包含序列 S’ ,則稱序列 S’ 為序列 S 的 「子序列」

(subsequence) 。 5

Page 6: 20170114 循序樣式探勘:以r實作

定義: k- 序列、最大序列●一個包含 k 個項目集的序列稱之為 k- 序列 (k-

sequence)●給定一組序列 S ,若序列 S 不被包含在其它序列中,則稱它為 「最大序列」 (maximal sequence) 。

○每一個最大序列則代表一個循序樣式 (sequential pattern) 。○例如兩個序列:

2 序列: <{10},{90}>3 序列: <{10, 20},{30},{90}>3 序列不被包含在其他序列中,它就是最大序列

6

Page 7: 20170114 循序樣式探勘:以r實作

定義:顧客序列●對於每一個顧客,將他所有的交易根據交易時間排序所得到的結果就是一個「顧客序列」。

7

會員帳號 顧客序列1 <{10,20},{30},{40,60}>

2 <{10,20},{30},{90}>

3 <{30},{90}>

4 <{10,20,30}>

5 <{30},{60,90}>

Page 8: 20170114 循序樣式探勘:以r實作

定義:支持度、最小支持度●一個序列 S 的「支持度 (support) 」被定義為「包含 S的顧客序列之總數佔全部顧客總數的比例」。

○有多少比例的顧客都會做這樣的序列●若序列滿足使用者設定的「最小支持度」 (minimum

Support) 之限制,則稱之為 「大型序列」 (large Sequence) 。

○一旦發掘所有的大型序列之後,就能夠輕易產生所有的最大序列。○循序樣式探勘的問題就是要找出所有的循序樣式,也就是所有的最大序列。

8

Page 9: 20170114 循序樣式探勘:以r實作

範例:依會員帳號和交易時間排序後的資料庫

9

Page 10: 20170114 循序樣式探勘:以r實作

範例:顧客序列資料庫

10

會員帳號 顧客序列1 <{10,20},{30},{40,60}>

2 <{10,20},{30},{90}>

3 <{30},{90}>

4 <{10,20,30}>

5 <{30},{60,90}>

Page 11: 20170114 循序樣式探勘:以r實作

範例試算●設定最小支持度為 0.2 :因為會員帳號總數為 5 ,所以最小支持個數需大於 5*0.2=1 。●序列 <{30}> 和 <{30},

{90}> 的支持個數分別為 5和 3 ,支持度為 1 跟 0.6 ,所以它們都是大型序列。●結果:最大序列為 <{30},

{90}>○序列 <{30}> 不是最大序列,因為它被包含在大型序列 <{30},{90}> 之中。11

會員帳號 顧客序列1 <{10,20},{30},{40,60}>

2 <{10,20},{30},{90}>

3 <{30},{90}>

4 <{10,20,30}>

5 <{30},{60,90}>

Page 12: 20170114 循序樣式探勘:以r實作

12

以 R 實作 arulesSequences

Data Mining Algorithms In R/Sequence Mining/SPADE

https://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Sequence_Mining/SPADE

Page 14: 20170114 循序樣式探勘:以r實作

操作步驟1.配置腳本與資料2.準備資料集3.從 R 腳本開啟 RStudio4.設定最小支持度5.全選腳本與執行6.輸出結果7.解釋結果

14

Page 15: 20170114 循序樣式探勘:以r實作

1. 配置腳本與資料

15

Page 16: 20170114 循序樣式探勘:以r實作

2. 準備資料集input.csv

16

1 2 3

1.使用者代號2.時間3.事件

( 用空白區隔 )

Page 17: 20170114 循序樣式探勘:以r實作

3. 從 R 腳本開啟 RStudio

17

Page 18: 20170114 循序樣式探勘:以r實作

預設最小支持度 0.4= 找出 40% 以上的人共有的循序樣式

4. 設定最小支持度

18

Page 19: 20170114 循序樣式探勘:以r實作

5. 全選腳本與執行

19

全選(Ctrl+a)

執行(Ctrl+Enter)

Page 20: 20170114 循序樣式探勘:以r實作

6. 輸出結果

20

Page 21: 20170114 循序樣式探勘:以r實作

7. 解釋結果

21

score sequence_length

support sequence score sequence_length

support sequence

1.5 3 0.5 <{P},{F},{A}> 1 2 0.5 <{P},{B}>

1.5 3 0.5 <{P},{B},{A}> 1 2 0.5 <{B},{A}>

1.5 3 0.5 <{P},{B,F},{A}> 1 2 0.5 <{F},{A}>

1 1 1 <{A}> 1 2 0.5 <{P},{A}>

1 1 1 <{B}> 1 2 0.5 <{B,F},{A}>

1 1 1 <{F}> 0.75 1 0.75 <{A,F}>

1 1 1 <{B,F}> 0.75 1 0.75 <{A,B,F}>

1 2 0.5 <{P},{F}> 0.75 1 0.75 <{A,B}>

1 2 0.5 <{P},{B,F}> 0.5 1 0.5 <{P}>

score 最大 & 支持度高=sequence_length*support

Page 22: 20170114 循序樣式探勘:以r實作

7. 解釋結果

22

score sequence_length

support sequence score sequence_length

support sequence

1.5 3 0.5 <{P},{F},{A}> 1 2 0.5 <{P},{B}>

1.5 3 0.5 <{P},{B},{A}> 1 2 0.5 <{B},{A}>

1.5 3 0.5 <{P},{B,F},{A}> 1 2 0.5 <{F},{A}>

1 1 1 <{A}> 1 2 0.5 <{P},{A}>

1 1 1 <{B}> 1 2 0.5 <{B,F},{A}>

1 1 1 <{F}> 0.75 1 0.75 <{A,F}>

1 1 1 <{B,F}> 0.75 1 0.75 <{A,B,F}>

1 2 0.5 <{P},{F}> 0.75 1 0.75 <{A,B}>

1 2 0.5 <{P},{B,F}> 0.5 1 0.5 <{P}>

1 10 2 C P1 15 3 A B C1 20 3 A B F1 25 4 A C P F

2 15 3 A B F2 20 1 E

3 10 3 A B F

4 10 3 P G H4 20 2 B F4 25 3 A G H