溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

R語(yǔ)言關(guān)聯(lián)分析之啤酒和尿布

發(fā)布時(shí)間:2020-03-04 16:24:01 來(lái)源:網(wǎng)絡(luò) 閱讀:5630 作者:三阿哥 欄目:編程語(yǔ)言

關(guān)聯(lián)分析

概述

啤酒和尿布的故事,我估計(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è)名詞。

項(xiàng)集

英文名itemset,它是一個(gè)集合,舉個(gè)例子,一個(gè)商場(chǎng)的所有商品的就是一個(gè)集合,也是一個(gè)項(xiàng)集。

關(guān)聯(lián)規(guī)則

英文名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)。

關(guān)聯(lián)分析步驟

  • 選出滿足支持度最小的閾值的所有項(xiàng)集。即頻繁項(xiàng)集。該閾值一般設(shè)為5%—10%。

  • 從頻繁項(xiàng)集中找出最小置信度的所有規(guī)則。置信度的閾值一般設(shè)置的比較高,如70%—90%。當(dāng)然你要是想獲取較多的關(guān)聯(lián)規(guī)則,該閾值可以設(shè)置的較低。

apriori算法

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)

R語(yǔ)言關(guān)聯(lián)分析之啤酒和尿布


關(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)

R語(yǔ)言關(guān)聯(lián)分析之啤酒和尿布


這個(gè)包對(duì)結(jié)果的可視化效果還是很棒的,函數(shù)也提供了許多參數(shù)。下面是我簡(jiǎn)單繪制的,僅供“觀賞”。

plot(rules6, method = "grouped")

R語(yǔ)言關(guān)聯(lián)分析之啤酒和尿布

其中measure參數(shù)可以控制散點(diǎn)的大小和顏色。

plot(rules6, method = "grouped",measure = "lift")

R語(yǔ)言關(guān)聯(lián)分析之啤酒和尿布

plot(rules6, method = "graph")

R語(yǔ)言關(guān)聯(lián)分析之啤酒和尿布

還有其他參數(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/


向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI