Upload
yung-ting-chen
View
71
Download
0
Embed Size (px)
Citation preview
布丁布丁吃布丁http://blog.pulipuli.info/2017/1/14
循序樣式探勘:以 R 的arulesSequences 實作
2
循序樣式探勘介紹
曾憲雄( 2005 )。資料探勘。臺北市:旗標。( ISBN : 978-957-442-236-4 )
3
循序樣式探勘 ●循序樣式探勘的目的是找出顧客在不同時間點所購買的物品先後之關係。●例如:
○根據消費者每次交易所購買的產品資料與交易時間,發掘出類似下列的循序樣式:「 80% 的顧客如果購買 PC 主機和螢幕,則下一次會購買印表機」○根據學習者在學習活動中不同時間順序,發掘出類似以下的循序樣式:「 50% 學習者在回答問題之後瀏覽討論區」
定義:序列、項目集●一個序列 (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
定義:包含、子序列●包含:序列 <{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
定義: k- 序列、最大序列●一個包含 k 個項目集的序列稱之為 k- 序列 (k-
sequence)●給定一組序列 S ,若序列 S 不被包含在其它序列中,則稱它為 「最大序列」 (maximal sequence) 。
○每一個最大序列則代表一個循序樣式 (sequential pattern) 。○例如兩個序列:
2 序列: <{10},{90}>3 序列: <{10, 20},{30},{90}>3 序列不被包含在其他序列中,它就是最大序列
6
定義:顧客序列●對於每一個顧客,將他所有的交易根據交易時間排序所得到的結果就是一個「顧客序列」。
7
會員帳號 顧客序列1 <{10,20},{30},{40,60}>
2 <{10,20},{30},{90}>
3 <{30},{90}>
4 <{10,20,30}>
5 <{30},{60,90}>
定義:支持度、最小支持度●一個序列 S 的「支持度 (support) 」被定義為「包含 S的顧客序列之總數佔全部顧客總數的比例」。
○有多少比例的顧客都會做這樣的序列●若序列滿足使用者設定的「最小支持度」 (minimum
Support) 之限制,則稱之為 「大型序列」 (large Sequence) 。
○一旦發掘所有的大型序列之後,就能夠輕易產生所有的最大序列。○循序樣式探勘的問題就是要找出所有的循序樣式,也就是所有的最大序列。
8
範例:依會員帳號和交易時間排序後的資料庫
9
範例:顧客序列資料庫
10
會員帳號 顧客序列1 <{10,20},{30},{40,60}>
2 <{10,20},{30},{90}>
3 <{30},{90}>
4 <{10,20,30}>
5 <{30},{60,90}>
範例試算●設定最小支持度為 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}>
12
以 R 實作 arulesSequences
Data Mining Algorithms In R/Sequence Mining/SPADE
https://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Sequence_Mining/SPADE
13
資料集與運作環境●運作環境
RStudio●資料集
input.csv●執行腳本
arulesSequences.r
操作步驟1.配置腳本與資料2.準備資料集3.從 R 腳本開啟 RStudio4.設定最小支持度5.全選腳本與執行6.輸出結果7.解釋結果
14
1. 配置腳本與資料
15
2. 準備資料集input.csv
16
1 2 3
1.使用者代號2.時間3.事件
( 用空白區隔 )
3. 從 R 腳本開啟 RStudio
17
預設最小支持度 0.4= 找出 40% 以上的人共有的循序樣式
4. 設定最小支持度
18
5. 全選腳本與執行
19
全選(Ctrl+a)
執行(Ctrl+Enter)
6. 輸出結果
20
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
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
BLOG: 布丁布丁吃什麼?http://blog.pulipuli.info/
23