【視頻】關(guān)聯(lián)規(guī)則模型、Apriori算法及R語言挖掘商店交易數(shù)據(jù)與交互可視化|數(shù)據(jù)分享
原文鏈接:http://tecdat.cn/?p=22732
原文出處:拓端數(shù)據(jù)部落公眾號
關(guān)聯(lián)規(guī)則分析是一種揭示項目如何相互關(guān)聯(lián)的技術(shù)。關(guān)聯(lián)規(guī)則分析也稱為購物籃分析。在這篇文章中,我將解釋關(guān)聯(lián)規(guī)則模型以及如何在R中提取關(guān)聯(lián)規(guī)則。關(guān)聯(lián)規(guī)則模型適用于交易數(shù)據(jù)(查看文末了解數(shù)據(jù)獲取方式)。交易數(shù)據(jù)的一個例子可以是客戶的購物歷史。
視頻:R語言關(guān)聯(lián)規(guī)則模型(Apriori算法)挖掘雜貨店的交易數(shù)據(jù)與交互可視化
關(guān)聯(lián)規(guī)則模型、Apriori算法及R語言挖掘雜貨店交易數(shù)據(jù)與交互可視化
?
,時長07:03
問題
當我們?nèi)ルs貨店購物時,我們通常有一個標準的購物清單。每個購物者都有一份獨特的清單,具體取決于個人的需求和偏好。家庭主婦可能會為家庭晚餐購買健康食材,而單身漢可能會購買啤酒和薯條。了解這些購買模式可以通過多種方式幫助增加銷售額。如果有一對經(jīng)常一起購買的物品 X 和 Y:X 和 Y 都可以放在同一個貨架上,這樣會提示購買一件商品的買家購買另一件商品。
雖然我們可能知道某些物品經(jīng)常一起購買,但問題是,我們?nèi)绾伟l(fā)現(xiàn)這些關(guān)聯(lián)?

定義
方法一:支持度。這表示項目集的受歡迎程度,以項目集出現(xiàn)的交易比例來衡量。在下圖中,啤酒?的支持度為5份中的 3 份,即 60%。
如果您發(fā)現(xiàn)超過一定比例的商品銷售往往會對您的利潤產(chǎn)生重大影響,您可以考慮將該比例作為您的支持度門檻。然后,您可以將支持值高于此閾值的項集標識為重要項集。

方法2:置信度。這表示在購買商品 X 時購買商品 Y 的可能性有多大,表示為 {X 箭頭 Y}。這是通過與項目 X 的交易比例來衡量的,其中項目 Y 也出現(xiàn)。在交易中,啤酒對薯條的置信度為3份中的2份,即67%。
置信度度量的一個缺點是它可能會歪曲關(guān)聯(lián)的重要性。這是因為它只考慮了啤酒的受歡迎程度,而不考慮薯條。如果薯條通常也很受歡迎,那么包含啤酒的交易也將包含薯條的可能性更高,從而夸大了置信度。為了說明這兩個組成項目的基本受歡迎程度,我們使用了第三種度量,稱為提升度。

方法3:提升度。這表示在購買商品X時購買商品Y的可能性有多大,同時控制商品Y的受歡迎程度。在上述交易 中,啤酒 對 薯條 的提升為1.11,這意味著項目之間有關(guān)聯(lián)。提升值大于 1 表示如果購買了商品 X,則很可能購買商品 Y,而小于 1 的值表示如果購買了商品 X,則不太可能購買商品 Y。

但是,企業(yè)主通常不會詢問單個項集。相反,所有者會對擁有完整的流行項集列表更感興趣。要獲得此列表,需要計算每個可能的項目組合的支持值,然后將滿足最小支持閾值的項目集列入候選名單。
在只有 10 件商品的商店中,要檢查的可能組合總數(shù)將高達 1023 種。在擁有數(shù)百件商品的商店中,這個數(shù)字呈指數(shù)增長。
有沒有辦法減少要考慮的項目配置數(shù)量?

apriori算法
apriori原理可以減少我們需要檢查的項目集的數(shù)量。簡而言之,apriori原理指出,如果一個項目集是不頻繁的,那么它的所有子集也必須是不頻繁的。這意味著,如果發(fā)現(xiàn) {蘋果} 不常見,在合并流行項集列表時,我們不需要考慮 蘋果和啤酒組合,也不需要考慮任何其他包含蘋果的項集組合。
尋找高支持項集
使用 apriori 原理,可以修剪需要檢查的項集的數(shù)量,并且可以通過以下步驟獲得熱門項集的列表:
步驟 0。從只包含一個項目的項目集開始,例如 {啤酒} 和 {草莓}。
步驟 1。確定項集的支持。保留滿足最小支持閾值的項集,并刪除不滿足的項集。
步驟 2。使用您在步驟 1 中保留的項集,生成所有可能的項集配置。
步驟 3。重復(fù)步驟 1 和 2,直到不再有新項集。
下面的動畫說明了這個迭代過程:

使用 Apriori 算法減少候選項集
正如動畫中所見,{蘋果} 被確定為支持度較低,因此將其刪除,并且不需要考慮所有其他包含 蘋果?的項集配置。這將要考慮的項目集的數(shù)量減少了一半以上。
請注意,您在步驟 1 中選擇的支持閾值可能基于正式分析或過去的經(jīng)驗。如果您發(fā)現(xiàn)超過一定比例的商品銷售往往會對您的利潤產(chǎn)生重大影響,您可以考慮使用該比例作為您的支持門檻。
R語言關(guān)聯(lián)規(guī)則模型(Apriori算法)挖掘雜貨店的交易數(shù)據(jù)與交互可視化
關(guān)聯(lián)規(guī)則挖掘是一種無監(jiān)督的學習方法,從交易數(shù)據(jù)中挖掘規(guī)則。它有助于找出數(shù)據(jù)集中的關(guān)系和一起出現(xiàn)的項目。在這篇文章中,我將解釋如何在R中提取關(guān)聯(lián)規(guī)則。
關(guān)聯(lián)規(guī)則模型適用于交易數(shù)據(jù)。交易數(shù)據(jù)的一個例子可以是客戶的購物歷史。
數(shù)據(jù)分析的第一件事是了解目標數(shù)據(jù)結(jié)構(gòu)和內(nèi)容。出于學習的目的,我認為使用一個簡單的數(shù)據(jù)集更好。一旦我們知道了這個模型,就可以很容易地把它應(yīng)用于更復(fù)雜的數(shù)據(jù)集。
在這里,我們使用雜貨店的交易數(shù)據(jù)。首先,我們創(chuàng)建一個數(shù)據(jù)框并將其轉(zhuǎn)換為交易類型。
讀取數(shù)據(jù)
n=500?#?交易數(shù)量
trans?<-?data.frame()?#?收集數(shù)據(jù)的數(shù)據(jù)框架
創(chuàng)建數(shù)據(jù)并將其收集到交易數(shù)據(jù)框中。
for(i?in?1:n)
{
??count?<-?sample(1:3,?1)?#?從1到3的物品計數(shù)
??如果(i?%%?2?==?1)
??{
????if(!add_product?%in%?selected)
????{
??????tran?<-?data.frame(items?=?add_product,?tid?=?i)
檢查交易數(shù)據(jù)框中的數(shù)據(jù)。

接下來,我們需要將生成的數(shù)據(jù)框轉(zhuǎn)換為交易數(shù)據(jù)類型。
?as(split(\[,?"items"\],?\[,?"tid"\]),?"transa")

為了檢查交易數(shù)據(jù)的內(nèi)容,我們使用 inspect() 命令。?

挖掘規(guī)則
sort(rules_1,?dby?=?"confidence")


.......
我們從上面的列表中獲取第一個rhs項(規(guī)則后項)來檢查該項的規(guī)則。但如果你知道目標項目,可以在參數(shù)中只寫rhs="melon"。
?inspect(rules_1@rhs\[1\])

>?rhs_item?<-?gsub("\\\}","",?rhs)

我們?yōu)槲覀兊膔hs_item建立規(guī)則

按 "置信度 "排序并檢查規(guī)則
sort(rules_2,?"confidence")

結(jié)果可視化
最后,我們從規(guī)則集_2中繪制出前5條規(guī)則。
>?plot(rules_2\[1:5\])

圖1
繪制全部規(guī)則

圖2
交互可視化
繪制出前5條規(guī)則
precision ? ??=??3
igraphLayout ? ??=??layout_nicely
list(nodes?=?nodes,?edges?=?edges,?nodesToDataframe?=?nodesToDataframe,?
????????????edgesToDataframe?=?edgesToDataframe,
x$legend?<-?legend
????htmlwidgets::createWidget(?x,?width?=?width,?
????????height?=?height)

圖3
繪制全部規(guī)則

圖4

圖5
數(shù)據(jù)獲取
在下面公眾號后臺回復(fù)“商店數(shù)據(jù)”,可獲取完整數(shù)據(jù)。
點擊文末“閱讀原文”
獲取全文完整資料。
本文選自《R語言關(guān)聯(lián)規(guī)則模型(Apriori算法)挖掘雜貨店的交易數(shù)據(jù)與交互可視化》。
點擊標題查閱往期內(nèi)容
R語言用關(guān)聯(lián)規(guī)則和聚類模型挖掘處方數(shù)據(jù)探索藥物配伍中的規(guī)律
用SPSS Modeler的Web復(fù)雜網(wǎng)絡(luò)對所有腧穴進行關(guān)聯(lián)規(guī)則分析
PYTHON在線零售數(shù)據(jù)關(guān)聯(lián)規(guī)則挖掘APRIORI算法數(shù)據(jù)可視化
R語言關(guān)聯(lián)規(guī)則模型(Apriori算法)挖掘雜貨店的交易數(shù)據(jù)與交互可視化
R語言關(guān)聯(lián)挖掘?qū)嵗ㄙ徫锘@分析)
python關(guān)聯(lián)規(guī)則學習:FP-Growth算法對藥品進行“菜籃子”分析
基于R的FP樹fp growth 關(guān)聯(lián)數(shù)據(jù)挖掘技術(shù)在煤礦隱患管理
python關(guān)聯(lián)規(guī)則學習:FP-Growth算法對藥品進行“菜籃子”分析
通過Python中的Apriori算法進行關(guān)聯(lián)規(guī)則挖掘
Python中的Apriori關(guān)聯(lián)算法-市場購物籃分析
R語言用關(guān)聯(lián)規(guī)則和聚類模型挖掘處方數(shù)據(jù)探索藥物配伍中的規(guī)律
在R語言中輕松創(chuàng)建關(guān)聯(lián)網(wǎng)絡(luò)
python主題建??梢暬疞DA和T-SNE交互式可視化
R語言時間序列數(shù)據(jù)指數(shù)平滑法分析交互式動態(tài)可視化
用R語言制作交互式圖表和地圖
如何用r語言制作交互可視化報告圖表