什麼是關聯分析?

九茶發表於2015-06-26

引言:

在認識什麼是關聯分析之前,先了解一下關聯分析能用來幹什麼吧:

示例1:如下是一個超市幾名顧客的交易資訊。

TID Items
001 Cola, Egg, Ham
002 Cola, Diaper, Beer
003 Cola, Diaper, Beer, Ham
004 Diaper, Beer

TID代表交易流水號,Items代表一次交易的商品。

我們對這個資料集進行關聯分析,可以找出關聯規則{Diaper}→{Beer}。
它代表的意義是:購買了Diaper的顧客會購買Beer。這個關係不是必然的,但是可能性很大,這就已經足夠用來輔助商家調整Diaper和Beer的擺放位置了,例如擺放在相近的位置,進行捆綁促銷來提高銷售量。

所以,關聯分析的任務就是從資料集中挖掘出頻繁項集,然後從頻繁項集中提取出事物之間的強關聯規則,輔助決策。


各種定義:

1、

\color{lime}{事務}
:每一條交易稱為一個事務,例如示例1中的資料集就包含四個事務。
2、
\color{lime}{項}
:交易的每一個物品稱為一個項,例如Cola、Egg等。
3、
\color{lime}{項集}
:包含零個或多個項的集合叫做項集,例如{Cola, Egg, Ham}。
4、k
\color{lime}{k-項集}
:包含k個項的項集叫做k-項集,例如{Cola}叫做1-項集,{Cola, Egg}叫做2-項集。
5、
\color{lime}{支援度計數}
:一個項集出現在幾個事務當中,它的支援度計數就是幾。例如{Diaper, Beer}出現在事務002、003和004中,所以它的支援度計數是3。
6、
\color{lime}{支援度}
:支援度計數除於總的事務數。例如上例中總的事務數為4,{Diaper, Beer}的支援度計數為3,所以它的支援度是3÷4=75%,說明有75%的人同時買了Diaper和Beer。
7、
\color{lime}{頻繁項集}
:支援度大於或等於某個閾值的項集就叫做頻繁項集。例如閾值設為50%時,因為{Diaper, Beer}的支援度是75%,所以它是頻繁項集。
8、
\color{lime}{前件和後件}
:對於規則{Diaper}→{Beer},{Diaper}叫做前件,{Beer}叫做後件。
9、
\color{lime}{置信度}
:對於規則{Diaper}→{Beer},{Diaper, Beer}的支援度計數除於{Diaper}的支援度計數,為這個規則的置信度。例如規則{Diaper}→{Beer}的置信度為3÷3=100%。說明買了Diaper的人100%也買了Beer。
10、
\color{lime}{強關聯規則}
:大於或等於最小支援度閾值和最小置信度閾值的規則叫做強關聯規則。關聯分析的最終目標就是要找出強關聯規則。

我們容易發現,如果一個項集是頻繁項集,則它的子項集也都是頻繁項集。如果一個項集是非頻繁項集,則它的超集也一定是非頻繁項集。(可用反證法證明,此處略)
例如{Diaper, Beer}是頻繁項集,則{Diaper}、{Beer}也都是頻繁項集。
例如{Egg}是非頻繁項集,則{Cola, Egg}也是非頻繁項集。


關聯分析:

關聯分析分為兩個步驟:
<1> 利用支援度找出資料集中的頻繁項集。
<2> 利用置信度從頻繁項集中提取出強關聯規則。

頻繁項集的挖掘:

Apriori演算法:

Apriori演算法的思路是先找出候選項集,然後根據最小支援度閾值篩選出頻繁項集。
例如先找出所有1-項集,然後篩選出裡面的頻繁1-項集; 根據頻繁1-項集生成候選2-項集,然後篩選出裡面的頻繁2-項集; 再根據頻繁2-項集生成候選3-項集,從裡面篩選出頻繁3-項集;·······

Apriori演算法的缺點是需要不斷掃描資料集,不斷地求候選項集的支援度從而判斷它是否是頻繁項集。當資料集很大的時候,這種演算法的效率將會非常低。
更多關於Apriori,請見Apriori演算法的介紹

FP-Growth演算法:

FP-Growth演算法只需要掃描兩次資料集。它的思想是把構造一棵FP-Tree,把資料集中的資料對映到樹上,再根據這棵FP-Tree找出所有頻繁項集。
更多關於FP-Growth,請見FP-Growth演算法的介紹FP_Growth演算法python實現


關聯規則的生成:

從步驟一已經得到了頻繁項集,而此時的任務就是在頻繁項集裡面挖掘出大於最小置信度閾值的關聯規則。
怎麼挖呢?把頻繁項集分成前件和後件兩部分,然後求規則前件→後件的置信度,如果大於最小置信度閾值,則它就是一條強關聯規則。
但是把頻繁項集分成前件和後件的情況有很多,我們可以對其進行一些優化。


附加:

此處是針對購物籃示例來介紹關聯分析,購物籃資訊屬於布林型的,而現實生活中許多事物都是數值量化的,例如{購買1個時鐘}→{購買2塊電池}。
另外,對於產生的強關聯規則,並不是全部都是有價值的,還需要對關聯規則進行評價。
更多內容後續再補上。


轉載請註明出處,謝謝!(原文連結:http://blog.csdn.net/bone_ace/article/details/46648965

相關文章