机器学习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查看这部分代码。以上,就是先验算法的相关基础知识。

相关文章
相关标签/搜索