用R實現關聯分析


關聯分析

多年前,新的互聯網銷售開始在網上賣書,隨着時間的推移,積累了一些關於客戶購買書籍的信息。使用關聯分析,可以識別一些客戶有相似興趣的書,使用用戶購買信息,建立相應的推薦系統。

關聯分析是發現數據集中對象或者屬性間的相關性,這些相關性可以用關聯規則來表達。這個方法一直成功的應用於大的事物數據庫,比如購物車和線上客戶的購買。關聯分析是數據挖掘核心算法之一。

對於線上賣書的實例,原始數據作為建模的基礎識別數據。比如,一個用戶購買了兩本特定的的書,也很有可能購買相關的另外一本特定的書。原始數據可能表明所有用戶購買前兩本書的的概率是0.5%,但是70%的人會購買第三本。作為一個企業,我們將利用觀察到的這個信息,對購買前兩種書的客戶投入第三種書的廣告。

關聯分析輸入數據的一般類型由事物型數據構成,如在超市購物車中的商品信息、單機購買的書和光盤、病人收到的葯物治療和測試數據等。

這一篇簡單介紹了關聯分析的內容,以及在Rattle和R中的實現。

1.知識概要

關聯規則的表達即是表明事物間的相關性,假設每項事物由一系列的項目組成(可以表示為{A,B,C,D,E,F}),目的是確定一起出現在多個購物車中的項目集合(可能項目{A,C,F}一起出現在多個購物車當中)這里我們稱之為項集。比如我們確認規則A,F=>C,意思是當A和F在事物中出現的時候(購物車中出現A和F),那么C通常也會出現。

 

關聯分析輸出的模型可以由一系列的關聯規則表示,關聯規則的一般格式表示為:  A -->C

A和C都是集合當中的一項,通常我們將項目看作特定的書籍,比如特定的雜貨店項目。例子可能是:

牛奶 ---> 面包

啤酒&堅果 --->馬鈴薯薯片

史萊克1 --->史萊克2&史萊克3

項目的內容可以概括為特定的屬性/值的組合。關聯分析的內容可以應用於許多不同的數據集。使用weather數據集,關聯規則的表達如下:

WindDir3pm=NNW  --->  RainToday = No.

2.啟發式搜索

關聯分析算法的基礎是生成頻繁項集。等頻出現的項目的集合組成一個頻繁項集來生成關聯規則。

確定數據中的頻繁項集的計算代價是昂貴的,即使是適度的數據集。Apriori算法前提要求對象的頻繁項集的所有子集都是等頻的,就是說,假如{牛奶,面包,奶酪}是一個頻繁項集,那么它的子集{牛奶,面包},{牛奶,奶酪},{面包,奶酪},{牛奶},{面包}和{奶酪}要是頻繁的。使用頻繁的個體使得算法的搜索空間大大降低,第一步就消除了罕見的項目個體。之后我們合並剩余的單項到頻繁項集。

足夠頻繁項是算法的一個的參數用來控制發現的規則的數目,稱之為支持度,來具體規定項目在數據集中必須出現的頻次。比如,用戶可以選擇頻繁項在所有事物中出現的概率至少5%。

第二階段算法考慮每個頻繁項集生成關聯規則的所有可能的組合,因此,對於包含三個項目的頻繁項集{牛奶,面包,奶酪},可能的關聯規則如下:

面包 & 牛奶  -->  奶酪

牛奶  --> 面包&奶酪

奶酪&牛奶  --->面包    等等。

我們保留的實際的關聯規則滿足一項稱為置信度的標准,置信度的計算是即包含A又包含C在事物中所占的比例,置信度為關聯規則指定一個最小的概率。比如,用戶可以選擇生成的規則至少90%以上的時間是有效的(也就是說,當A出現在購物車中,C也至少出現在相同的購物車中的時間是90%以上)。

apriori算法是一個廣度優先搜索算法,當搜索完所有的k項可能的項目后再考慮搜索包含k+1項。對於每一個k,所有的候選項都需要經過測試來確定它們是否有足夠的支持度。

總的來說,我們主要分兩階段來做。第一階段,我們生成一個大小為k的頻繁項集,然后將它們合並生成大小為k+1的候選頻繁項集。第二階段,我們建立候選的關聯規則。

3.具體措施

關聯分析兩個主要的計算是支持度和置信度。最小支持度是項目(items)I在所有事物中所占的比例,也可以理解為項目同時出現在事物中的頻率。我們定義支持度如下:

Support(A-->C)= P(AUC)

最小置信度被表示為所有事物在數據集所占的比例,它是個條件概率:

Confidence(A-->C)=P(C|A)=P(AUC)/P(A)

也可以用支持度表示:

Confidence(A-->C)=support(A-->C)/support(A)

在rattle和R中使用的關聯規則分析是lift,計算如下:

Lift(A-->C)= confidence(A-->C)/support(C)

4.案例分析

使用rattle建立模型

如果沒有安裝rattle,通過以下命令安裝:

>insatll.packages("rattle")
>library(rattle)
>rattle()

 我們接下來使用rattle自帶的一個DVD Moves包:dvdtrans.csv.加載方法是首先Source選項選擇Spreadsheet,在Data工具欄點擊執行按鈕,點開Filename右邊的文件夾標識,將會出現一個選擇文件的窗口,然后點擊選取dvdtrans.csv文件,如下圖1所示:

選在打開,然后點擊執行按鈕。

我們看到這個數據集只有兩個屬性ID和Item。我們將Item的屬性改為Target(XXXX)。

Rattle建立關聯規則模型通過Associate工具欄。如果勾選了Baskets選項,rattle將會使用Ident和Target屬性來進行分析,執行一個超市購物車分析。如果不勾選,rattle將會使用輸入數據進行規則分析。我們這里選用的數據集要勾選Baskets。

點擊選擇Associate工具欄下,勾選Baskets,點擊執行按鈕,運行結果如下圖所示:

以下依次介紹文本視區內容:

Summary of the Apriori Associate Rules(關聯規則總結)

Number of Rules:規則的總數

再下面分別是support,confidence,lift三種方法關於29條規則的測量信息。

再下面是構建apriori模型過程,參數規范(Parameter Specification)列出了一些初始化參數。

控制算法運行的一組參數(Algorithmic control),再下面是算法運行的具體細節。

Freq Plot按鈕將會繪制Item對象的頻率分布:

show rules按鈕將會再文本視區打印所有的規則:

旁邊的plot可以生成規則視圖:

由圖中圖形大小代表支持度,圖形顏色深淺代表lift。幾種電影的關聯程度一目了然。

 

 原創文章,轉載請注明出處。(阿蠻的杜鵑:http://www.cnblogs.com/lizhilei-123/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM