關聯分析
多年前,新的互聯網銷售開始在網上賣書,隨着時間的推移,積累了一些關於客戶購買書籍的信息。使用關聯分析,可以識別一些客戶有相似興趣的書,使用用戶購買信息,建立相應的推薦系統。
關聯分析是發現數據集中對象或者屬性間的相關性,這些相關性可以用關聯規則來表達。這個方法一直成功的應用於大的事物數據庫,比如購物車和線上客戶的購買。關聯分析是數據挖掘核心算法之一。
對於線上賣書的實例,原始數據作為建模的基礎識別數據。比如,一個用戶購買了兩本特定的的書,也很有可能購買相關的另外一本特定的書。原始數據可能表明所有用戶購買前兩本書的的概率是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/)