機器學習A-Z~先驗算法Apriori

本文將會講述關聯規則學習中的一個基本算法,叫作先驗算法。所謂先驗算法,就是找出不一樣事件之間的聯繫。好比一我的在超市買了產品A,他可能會買貨物B。這裏咱們看一個例子。python

這裏有七筆交易,那麼根據這些數據咱們能夠得出一些猜想,當有貨物A時可能有貨物B。好比有漢堡的時候可能有薯條,若是有蔬菜可能就有水果等等。當咱們的商店愈來愈大,交易記錄愈來愈多,那麼經過人爲觀察來看出這些商品之間的聯繫就很難了,這時就須要用到先驗算法。git

概念

先驗算法當中有三個核心概念,support(支持度), confidence(信心水準), lift(提高度)。github

先來看看支持度,好比交易的例子,對於一個商品I來講,那麼就是全部包含商品I的交易數目除以總的交易數目。算法

$$ support(I) = \frac{transactions\quad containing\quad I}{transactions} $$app

第二個概念,信心水準,這裏I1表示商品1,I2表示商品2,那麼信心水準就是同時包含商品1和2的交易除以包含商品1的交易記錄個數。ide

$$ confidence(I_1 -> I_2) = \frac{transactions\quad containing\quad I_1\quad and\quad I_2}{transactions \quad containing \quad I_1} $$學習

第三個概念,提高度,這個和支持度和信心水準有關,就是configdence/support。當這個提高度大於1時,咱們能夠認爲商品$I_1$對$I_2$是有提高的。spa

$$ lift(I_1 -> I_2) = \frac{confidence(I_1->I_2)}{support(I_2)} $$code

那麼如今作個總結,這個先驗算法主要能夠分爲四步:排序

  1. 設置一個最低的support和confidence
  2. 選擇全部support比剛剛設置的要大的商品
  3. 根據剛剛已經選擇的商品,選擇全部比剛剛定義的最小confidence要高的全部規則的集合
  4. 把剛剛的規則從大到小排序,選出提高度最高的幾個。

代碼實現

此次代碼實現咱們使用一家商店如何使用先驗算法來提升銷量的例子。這裏有這家商店最近的全部交易,每一個交易中分別賣出了不一樣種類的商品。

此次的代碼使用了一個額外的包,所以須要你們本身去看這個包裏的代碼,這裏只貼出如何使用這個包進行先驗算法的使用。

from apyori import apriori
import pandas as pd

dataset = pd.read_csv('Market_Basket_Optimisation.csv', header=None)
transactions = []
for i in range(0, 7501):
    transactions.append([str(dataset.values[i, j]) for j in range(0, 20)])

# Training Apriori on the dataset

rules = apriori(transactions, min_support=0.003, min_confidence=0.2, min_lift=3, min_length=2)

# Visualising the results
results = list(rules)
myResults = [list(x) for x in results]

這裏的apyori包能夠去個人github查看這部分代碼。以上,就是先驗算法的相關基礎知識。

相關文章
相關標籤/搜索