我們常常會在管理中遇到這樣的問題,超市如何能透過使用者購買資料來提高利潤。如何將資料轉化為利潤,用好這些資料。

我們這裡提出一種關聯分析方法,可以從使用者的購買資料中得到,其一般購買了商品A的同時,也會對商品B有需求,而一旦將A和B捆綁或靠近在一起銷售,並以一定的折扣來刺激消費,這樣能夠得到更可觀的銷量。那麼如何能夠找到頻繁出現被人購買的商品,並且從中抽取出若干件商品的關聯關係,這就是我們今天要討論的問題。

假設已經有了一份資料集,其中的每條記錄都是一人次使用者購買的商品清單。

使用Apriori演算法進行關聯:這是一種無監督學習策略:

一個項集的支援度:資料集中包含該項集的記錄佔總記錄的比例;

一條規則的置信度(可信度):這條規則出現的次數/記錄總數。即 尿布->葡萄酒的可信度為: 尿布,葡萄酒聯合出現次數/尿布出現的總次數

Apriori原理為:如果某一項集是頻繁的,則它的所有子集也是頻繁的,反之,如果某一項集是非頻繁的,則其所有超集也是非頻繁的。 超集就是包含這一項集的其他集合,與子集概念相反,b是B的子集,則B是b的超集。

故已知一個是非頻繁的,即不滿足設定的支援度,其超集也不需要再次進行計算,以縮小計算量。

用Apriori演算法來發現頻繁集:首先對單個物品(元素)進行查詢,看哪些滿足最小支援度,即本身就出現很頻繁,再將這些組合成兩個元素的項集,計算支援度,並去掉小於最小支援度的組合,從而進一步進行組合,即再加一項組合(k+1項組成的候選項集)。

從頻繁項集中挖掘關聯規則:

規則: {1,23,33}->{2}

那麼{1,23,33}為左部,{2}為右部。

我們為每個頻繁項集生成關聯規則,如果某條規則不滿足最小可信度要求,那麼所有子集也不滿足。

生成關聯規則需要:頻繁項集列表、包含頻繁項集支援資料的字典、最小可信度。

用更高效的方法來進行挖掘頻繁項集:使用FP-growth演算法來高效發現頻繁項集

在搜尋引擎中輸入一個單詞或單詞的一部分,引擎會自動補全查詢詞項。使用者甚至都不清楚搜尋引擎推薦的東西是否存在反而去搜索推薦詞項。

網際網路在處理龐大的使用者資料時就是使用FP-growth演算法,來發現頻繁項集,找出經常一起出現的詞對。

這一演算法比Apriori要快,基於Apriori構建,其任務是將資料集儲存在一個FP樹結構之後發現頻繁項集或是頻繁項對,即常出現在一起的元素項的集合。速度比Apriori快2個數量級。只需對資料集進行兩次掃描:第一次對所有元素項的出現次數進行計數,如果某元素是不頻繁的,那麼包含該元素的超集就是不頻繁的,無需再考慮。第二遍只考慮頻繁元素。

尋找商品間的聯絡:頻繁項集挖掘與關聯分析

FP樹示意圖

B:8表示 BXXXX這樣的形式出現了8次,A:2 表示AXXXX的形式出現了2次。D:1是葉節點,表示BACD這個分支出現了一次。

構建FP樹:

1、 遍歷整個資料集,移除不滿足最小支援度的元素項;

如果沒有元素項滿足要求,則退出

2、 根據全域性頻率對每個事務中的元素進行排序

3、 使用排序後的頻率項集對樹進行填充。

4、 最後對剩下的元素迭代呼叫updateTree。

從FP樹種挖掘頻繁項集的基本步驟:

1、 從FP樹種獲得條件模式基;

2、 利用條件模式基,構建一個條件FP樹;

3、 迭代重複步驟(1)、(2),直到樹包含一個元素項為止。

什麼是條件模式基?

條件模式基是以所查詢元素項為結尾的路徑集合,每條路徑其實都是一條字首路徑,從根節點到葉節點就稱為路徑。 D的字首路徑是{BA}、{BC}、{AC}。

發現字首路徑:頭指標包含相同型別元素連結串列的起始指標,一旦到達了每一個元素項,就可以上溯這棵樹直到根節點為止。

這就是使用新的資料結構去更快處理龐大資料的方法,可以以較快速度發現頻繁項集,但這種方法不能發現其中的關係。