Apriori算法

在電商行業里,有一個著名的公式:銷售額=UV*轉化率*客單價。而提高客單價的一個有效手段就是關聯銷售或者叫交叉銷售(cross-selling)。常見的產品形態就是組合產品、套餐搭配、配件中心等。而不同的商品如何搭配組合才能激發用戶最大的購買欲望就是一個關鍵的問題。今天,就介紹下關聯規則的Apriori算法。

一、簡介

Apriori算法是最常用的關聯規則挖掘算法。由RakeshAgrawal和Ramakrishnan Srikant兩位博士在1994年提出。關聯規則算法的目的就是在一個數據集中找出項與項之間的關系。在零售領域中,超市通過分析顧客的一張張訂單來指導商品的交叉銷售,所以也被稱為購物藍分析 (Basket analysis)。關于關聯銷售最有名的例子就是啤酒與尿布(真實性無證實)。講的是沃爾瑪員工通過訂單發現貨架相隔很遠的啤酒和尿布經常出現在一個訂單里,他們走訪了顧客,發現妻子總是在上班前叮囑丈夫記得下班后買尿布回來,結果丈夫在買尿布的同時會順帶買一些啤酒。于是,沃爾瑪的員工便把啤酒和尿布放在相鄰的位置,結果商品銷量大增。

Apriori算法的原理就是說如果某個項是頻繁的,那么它的所有子集也是頻繁的。也就是說,如果一個項是非頻繁的,那么它的所有超集也是非頻繁的。


Apriori算法的基本原理是用支持度表示關聯規則的強度,把具有關聯規則的商品看做一個集合。從最小的集合開始,篩選出支持度大于某個值的集合,然后合并集合,再循環,直到找不集合為止。

二、名詞定義

關聯規則(association rules):形如"如果…那么…(If…Then…)",前者為條件,后者為結果。一般表示為A→B。衡量一個規則是否好,可以用支持度和置信度衡量。

支持度(support):某事件發生的概率。A的支持度就是A被購買的概率:Support(A)=P(A)=num(A)/num(I)。A→B的支持度就是A和B同時購買的概率:Support(A→B)= P(A∩B) =num(A∩B)/num(I);

置信度(confidence):在A條件下,A和B共同購買的概率。Confidence(A→B)=P(B|A)=P(A∩B)/P(A)。

提升度(lift):相對于不用規則,使用規則可以提高多少。Lift(A→B)=Confidence(A→B)/Support(B)=P(B|A)/P(B)。

K項集(K-itemset):同時購買的商品數量為K的,K項集合。

頻繁K項集(frequent itemset):滿足最小支持度閾值的K項集合。

候選K項集(candidate itemset):通過連接形成的K項集合。

三、原理

步驟:

1.先計算1項集的支持度,篩選出頻繁1項集。

2.然后排列組合出2項集,計算出2項集的支持度,篩選出頻繁2項集。

3.然后通過連接和剪枝計算出3項集,計算出3項集的支持度,篩選出頻繁3項集。

4.然后依次類推處理K項集,直到沒有頻繁集出現(具體例子參考首圖)。

關鍵:如何從K-1項集計算出K項集(K>=3,K=2時用組合公式C(2,n)即可)

連接:對K-1項集中的每個項集中的項排序,只有在前K-1項相同時才將這兩項合并,形成候選K項集(因為必須形成K項集,所以只有在前K-1項相同,第K項不相同的情況下才合并。)

剪枝:對于候選K項集,要驗證所有項集的所有K-1子集是否頻繁(是否在K-1項集中),去掉不滿足的項集,就形成了K項集。

四、局限

傳統的Apriori算法的計算量很大,當商品數據量大時更顯著,基本是不可計算的,不過后來有人用FP-Tree算法簡化了計算量。

電商常用的關聯規則應用是單品推薦單品,所以一般只需要知道頻繁2項集即可。K>=3的項集并沒有被挖掘價值。

商品并不是全部平等銷售的,僅使用支持度衡量,容易導致出現假性關聯。組合、搭售、買贈、企業采購等訂單都會影響。

五、改進

支持度表示在歷史中A和B同時購買的概率,置信度表示A推薦B的可信程度。由此可以認為支持度*置信度表示A推薦B而A和B同時購買的概率。這樣相比于單純使用支持度更全面,同時避免了支持度中等或置信度中等的關聯規則被淘汰。

因為提升度表示提升單品購買概率的程度,所以可以使用提升度作為最終推薦依據,避免組合、搭售、買贈關系的假性關聯。

六、缺點

當數據量很大的時候,運行效率比較低

文章來源:http://www.woshipm.com/pmd/265193.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容