您好,登錄后才能下訂單哦!
啤酒和尿布的故事,我估計(jì)大家都聽(tīng)過(guò),這是數(shù)據(jù)挖掘里面最經(jīng)典的案例之一。它分析的方法就關(guān)聯(lián)分析。
關(guān)聯(lián)分析,顧名思義,就是研究不同商品之前的關(guān)系。這里就發(fā)現(xiàn)了啤酒和尿布這兩個(gè)看起來(lái)毫不相關(guān)的東西直接存在的微妙關(guān)系。
最經(jīng)典的關(guān)聯(lián)分析算法之一就是Apriori算法,也是數(shù)據(jù)挖掘十大算法之一。在R中就有一個(gè)包可以做關(guān)聯(lián)分析——arules和arulesViz,前者用于關(guān)聯(lián)規(guī)則的數(shù)字化生成而后者是前者的擴(kuò)展包,它提供了幾種對(duì)關(guān)聯(lián)分析結(jié)果可視化技術(shù),從分析到可視化一站式完成。
在了解學(xué)習(xí)關(guān)聯(lián)分析之前,我們需要知道以下幾個(gè)名詞。
英文名itemset,它是一個(gè)集合,舉個(gè)例子,一個(gè)商場(chǎng)的所有商品的就是一個(gè)集合,也是一個(gè)項(xiàng)集。
英文名Association Rule。一般記為X->Y,X成為關(guān)聯(lián)規(guī)則的先決條件,Y稱為關(guān)聯(lián)規(guī)則的結(jié)果。關(guān)聯(lián)規(guī)則有三個(gè)核心概念:支持度,置信度,提升度。
英文名Support。它表示的是項(xiàng)集{X,Y}同時(shí)含有X, Y的概率。該指標(biāo)是建立強(qiáng)關(guān)聯(lián)規(guī)則的第一個(gè)門(mén)檻,衡量所考察關(guān)聯(lián)規(guī)則在量上的多少。我們可以通過(guò)最小閾值的設(shè)定,來(lái)剔除那些支持度較小的。
英文名 Confidence。它是第二個(gè)門(mén)檻
,在這里我們也可以設(shè)置最小閾值。置信度表示在關(guān)聯(lián)規(guī)則的先決條件X發(fā)生的條件下,Y發(fā)生的概率。如果跟前面的項(xiàng)集的概念聯(lián)系到一塊,置信度的意思就是如果在含有X的項(xiàng)集里面也含有Y的可能性。
confidence(X—>Y)=P(Y|X)=P(X, Y)/P(X)
英文名lift。提升度可以看做是對(duì)置信度的一個(gè)補(bǔ)充。置信度是在X發(fā)生的情況下,Y發(fā)生的概率。而提升度是在X發(fā)生的情況下,Y發(fā)生的概率與沒(méi)有這個(gè)條件下項(xiàng)集中出現(xiàn)Y的可能性之比。
當(dāng)lift為1時(shí),表示X和Y相互獨(dú)立,當(dāng)lift值越大,關(guān)聯(lián)性越強(qiáng)。
選出滿足支持度最小的閾值的所有項(xiàng)集。即頻繁項(xiàng)集。該閾值一般設(shè)為5%—10%。
從頻繁項(xiàng)集中找出最小置信度的所有規(guī)則。置信度的閾值一般設(shè)置的比較高,如70%—90%。當(dāng)然你要是想獲取較多的關(guān)聯(lián)規(guī)則,該閾值可以設(shè)置的較低。
arules包提供的apriori算法函數(shù)原型如下:
apriori(data, parameter = NULL, appearance = NULL, control = NULL)
現(xiàn)在來(lái)給大家介紹一下這些參數(shù)。
參數(shù) | 作用 |
---|---|
data | 數(shù)據(jù) |
parameter | 參數(shù)可以是一個(gè)列表,可以對(duì)支持度,置信度,每個(gè)項(xiàng)集所含項(xiàng)數(shù)的最大值最小值,以及輸出結(jié)果等重要參數(shù)進(jìn)行設(shè)置 |
appearance | 可以對(duì)先決條件X和關(guān)聯(lián)條件Y中具體包含的那些項(xiàng)目進(jìn)行限制。默認(rèn)是沒(méi)有限制的。 |
control | 控制算法的性能,也可以進(jìn)行排序和報(bào)告進(jìn)程。 |
現(xiàn)在就來(lái)分析一下啤酒和尿布的案例,arules包含有一個(gè)Groceries的數(shù)據(jù)集,該數(shù)據(jù)集是某雜貨店一個(gè)月的真實(shí)交易數(shù)據(jù),我今天就有這份數(shù)據(jù)來(lái)看看啤酒和尿布的故事是不是都是大人們編出來(lái)騙我們的。
library(arules)
data("Groceries")
由于數(shù)據(jù)集中酒的種類比較多,有canned beer,bottled beer,wine等,所以我直接把尿布napkins作為后繼。
rules<-apriori(Groceries,parameter = list(supp=0.001,conf=0.22), appearance = list(rhs="napkins",default="lhs"))
在不斷調(diào)整支持度和置信度,最終調(diào)到0.001和0.22,結(jié)果還是比較理想的,如果再大一點(diǎn),生成的頻繁項(xiàng)集就會(huì)比較少,而且更重要的沒(méi)有包含啤酒的的項(xiàng)集,如果再小一點(diǎn),生成的項(xiàng)集又太多,但包含啤酒的項(xiàng)集也不是很多。此時(shí)支持度為0.001,置信度為0.22,總共有53個(gè)頻繁項(xiàng)集,但只有一條包含啤酒的頻繁項(xiàng)集。當(dāng)把支持度或置信度再調(diào)大一點(diǎn),就沒(méi)有包含酒的頻繁項(xiàng)。
現(xiàn)在使用arulesViz
包對(duì)結(jié)果進(jìn)行可視化
library(arulesViz) plot(rules)
關(guān)聯(lián)規(guī)則點(diǎn)的顏色深淺有提升度lift值得高低來(lái)決定的。
從圖片中可以看到提升度高的,支持度比較低,置信度較高。
plot(x, method = NULL, measure = "support", shading = "lift", interactive = NULL, engine = "default", data = NULL, control = NULL, ...)
如果我們要查看每個(gè)點(diǎn)所代表的項(xiàng)集,可以使用參數(shù)interactive。這樣繪制的圖形是交互式的。點(diǎn)擊inspect就可以獲取選定點(diǎn)的詳細(xì)信息,點(diǎn)擊一個(gè)點(diǎn),再點(diǎn)filter按鈕,然后點(diǎn)擊右側(cè)顏色條,就可以將小于該關(guān)聯(lián)規(guī)則lift的其他關(guān)聯(lián)規(guī)則點(diǎn)都過(guò)濾掉。
當(dāng)一塊點(diǎn)比較密集時(shí),可以選兩個(gè)點(diǎn)構(gòu)成一個(gè)矩形區(qū)域,再點(diǎn)擊zoom in就可把該區(qū)域放大,點(diǎn)擊zoom out就會(huì)縮小。點(diǎn)擊end就是退出??梢钥聪旅娴难菔緢D。
plot(rules, interactive=TRUE)
這個(gè)包對(duì)結(jié)果的可視化效果還是很棒的,函數(shù)也提供了許多參數(shù)。下面是我簡(jiǎn)單繪制的,僅供“觀賞”。
plot(rules6, method = "grouped")
其中measure參數(shù)可以控制散點(diǎn)的大小和顏色。
plot(rules6, method = "grouped",measure = "lift")
plot(rules6, method = "graph")
還有其他參數(shù),在用的時(shí)候可以再好好研究。
分析完之后我有種被騙的感覺(jué),為什么會(huì)這樣,53個(gè)頻繁項(xiàng)集,但只有一條包含啤酒的頻繁項(xiàng)集。也許關(guān)聯(lián)最強(qiáng)的不用分析我們都知道,關(guān)聯(lián)最強(qiáng)的也許就是常識(shí),往往那些關(guān)聯(lián)不太強(qiáng)且容易被忽視到的才是最值得我們?nèi)グl(fā)現(xiàn)的。
退一步想想,也許因?yàn)樵摂?shù)據(jù)量太小,只有一個(gè)月的,另外,這是數(shù)據(jù)來(lái)自一個(gè)grocery,并不是像沃爾瑪那種supermarket,而且這個(gè)雜貨店也不一定是美國(guó)的。所以大家可以把這篇文章看做是一個(gè)關(guān)聯(lián)算法的練習(xí)。
注:
作者:王亨
公眾號(hào):跟著菜鳥(niǎo)一起學(xué)R語(yǔ)言
原文鏈接:http://blog.csdn.net/wzgl__wh/
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。