1. 程式人生 > >資料菜鳥的挖掘之旅(二)關聯規則之Apriori演算法

資料菜鳥的挖掘之旅(二)關聯規則之Apriori演算法

一、介紹

假如,我們手中有一個顧客在商場中購買物品交易記錄的資料庫。我們如何通過這個資料庫,找出一些規則,再通過一些方法,讓這些規則被顧客接受,促使他們在商場中購買更多的商品?、

就像很早以前所說的——啤酒與尿布

二、幾個基本概念

2.1項集(Items)

在商場中購物,我們看到的所有商品。例如:Bread, Milk, Chocolate, Butter… 它們組成的集合就稱為項集,我們可以用符號 I 表示。其中的每一樣商品被稱作,用符號 Ii 表示。

2.2事務(Transaction)

事務其實就是項集的一個非空子集。形象地理解就是,顧客在商場購買完商品之後的小票。每一張小票對應著一個Transaction,通常我們用符號 T

表示。所以,T={ia,ib,ic...}。 千萬注意:T 一定是非空的。

2.3資料庫(Databases)

一個數據庫包含著所有事務,用符號D表示,同時 TD

2.4關聯規則(association rule)

PQwherePI,QIandPQ=

根據公式,我們可以知道,關聯規則,就是找到一種關係。

用商場中的例子來說就是買了牛奶、麵包的人,會去買黃油、果醬。這就是關聯規則。

2.5支援度

其實就是一個頻率,假如,我們手上同時有8個客戶的購物小票,其中有3個客戶購買了Butter。那麼,我們稱 Support(Butter)=38

另外,通常對於關聯規則的的支援度,我們如下定義:

Support(XY)=#(XY)n

2.6置信度

置信度可以看做條件概率。也就是在同時購買X的條件下,購買Y的概率,就是置信度。也就是我們的信心,再通俗一些的說就是,我們有多大的信心,在一個人買了麵包的情況下,去購買牛奶。

Confidence(XY)=#(XY)#(X)

2.7頻繁項集和強規則

我們先給定一個支援度和置信度的最小閾值

  • Minimum support θ
  • Minimum confidence ϕ

一個頻繁項集就是一個支援度大於 θ 的項集。

一個強規則就是頻繁項集中置信度大於ϕ 的的規則。

最後,關於關聯規則的問題,用一句形容就是:

GivenI,D,σandΦ,tofindallstrongrulesintheformofXY.

三、Apriori演算法

Apriori演算法的核心思想就是2句話:

A subset of a frequent itemset must be frequent.
任何一個頻繁項的非空子集必須是頻繁的。
{Milk, Bread, Coke} is frequent {Milk, Coke} is frequent

The supersets of any infrequent itemset cannot be frequent.
任何一個非頻繁項的超集(父類)不可能使頻繁的。
{Battery} is infrequent  {Milk, Battery} is infrequent

偽演算法:
偽演算法

例子:
例子

四、Reference