本文將會講述關(guān)聯(lián)規(guī)則學習中的一個基本算法木柬,叫做先驗算法。所謂先驗算法入偷,就是找出不同事件之間的聯(lián)系追驴。比如一個人在超市買了產(chǎn)品A,他可能會買貨物B疏之。這里我們看一個例子殿雪。
這里有七筆交易,那么根據(jù)這些數(shù)據(jù)我們可以得出一些猜測锋爪,當有貨物A時可能有貨物B丙曙。比如有漢堡的時候可能有薯條,如果有蔬菜可能就有水果等等其骄。當我們的商店越來越大亏镰,交易記錄越來越多,那么通過人為觀察來看出這些商品之間的聯(lián)系就很難了拯爽,這時就需要用到先驗算法索抓。
概念
先驗算法當中有三個核心概念,support(支持度), confidence(信心水準), lift(提升度)毯炮。
先來看看支持度逼肯,比如交易的例子,對于一個商品I來說桃煎,那么就是所有包含商品I的交易數(shù)目除以總的交易數(shù)目篮幢。
第二個概念,信心水準为迈,這里I1表示商品1三椿,I2表示商品2,那么信心水準就是同時包含商品1和2的交易除以包含商品1的交易記錄個數(shù)葫辐。
第三個概念赋续,提升度,這個和支持度和信心水準有關(guān),就是configdence/support另患。當這個提升度大于1時纽乱,我們可以認為商品對
是有提升的。
那么現(xiàn)在做個總結(jié)昆箕,這個先驗算法主要可以分為四步:
- 設(shè)置一個最低的support和confidence
- 選擇所有support比剛剛設(shè)置的要大的商品
- 根據(jù)剛剛已經(jīng)選擇的商品鸦列,選擇所有比剛剛定義的最小confidence要高的所有規(guī)則的集合
- 把剛剛的規(guī)則從大到小排序,選出提升度最高的幾個鹏倘。
代碼實現(xiàn)
這次代碼實現(xiàn)我們使用一家商店如何使用先驗算法來提高銷量的例子薯嗤。這里有這家商店最近的所有交易,每個交易中分別賣出了不同種類的商品纤泵。
這次的代碼使用了一個額外的包骆姐,因此需要大家自己去看這個包里的代碼镜粤,這里只貼出如何使用這個包進行先驗算法的使用。
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查看這部分代碼玻褪。以上肉渴,就是先驗算法的相關(guān)基礎(chǔ)知識。