推荐引擎:Apriori算法及Python示例

tracy 2018-10-22

Apriori算法基于关联规则挖掘原理。

关联规则挖掘是一种识别不同项之间潜在关系的技术。这种关系可以是物品购买频率和用户购买频率的相似性。

在本文中,我们将研究如何使用python示例来处理Apriori算法。

在超市里,Apriori算法可以用来把相似的物品放在一起。就像剃须泡沫,剃须膏和其他男性美容产品可以保持相邻根据订单或流行,他们一起购买。这样顾客就可以很容易地购买到产品,从而为超市增加更多的生意和利润。

现在我们已经有了Apriori算法的基本概念,现在我们来学习Apriori算法的理论。

Apriori算法理论

Apriori算法由Agrawal和Srikant于1994年提出。

Apriori算法有三个主要组成部分:

1)支持度(Support)

2)置信度(Confidence)

3)提升度(Lift)

我们将借助一个例子来解释这个概念。

假设我们有1000个客户交易的记录,我们希望找到牛奶和尿布的支持度,置信度和提升度。在1000个事务中,120个包含牛奶,150个包含尿布。在这150次购买尿布的交易中30次包含了牛奶。我们将使用这些数据来计算支持度,置信度和提升度。

支持度

支持度是指项目的受欢迎程度,可以通过查找包含特定项目的交易数量除以交易总数来计算。

  • 支持度(尿布)=(包含(尿布)的交易)/(总交易)
  • 支持度(尿布)= 150/1000 = 15%

置信度

置信度是指如果购买物品A,也可以购买物品B. 可以通过查找A和B一起购买的交易数量除以购买A的交易总数来计算。在数学上,它可以表示为:

  • 置信度(A​​→B)=(包含(A和B)的交易)/(包含A的交易)

如果顾客购买牛奶,购买尿布的可能性。

  • 信心度(牛奶→尿布)=(包含(牛奶和尿布)的交易)/(含牛奶的交易)
  • 信心度(牛奶→尿布)= 30/120 = 25%

置信度与Naive Based Algorithm类似。

提升度

提升度是指A出售时B的销售比率的增加。

提升度(A - > B)可以通过将置信度(A​​ - > B)除以支持度(B)来计算。

在数学上它可以表示为:

  • 提升度(A→B)=(置信度(A​​→B))/(支持度(B))
  • 提升度(牛奶→尿布)=(置信度(牛奶→尿布))/(支持度(尿布))
  • 提升度(牛奶→尿布)= 25/15 = 1.66

因此,通过Lift理论,买牛奶和尿布的概率是单独买尿布的1.66倍。

提升度关联规则

  • 提升度= 1→A和B之间没有关联。
  • 提升度<1→A和B不可能一起购买。
  • 提升度> 1→提升度越大,购买两种产品的可能性越大。

推荐引擎:Apriori算法及Python示例

Apriori算法涉及的步骤

Apriori算法试图为每个可能的项目组合提取规则。例如,可以计算项目A和项目B,项目A和项目C,项目A和项目D,然后项目B和项目C,项目B和项目D,然后计算项目组合,例如项目A,项目B和项目C; 类似的,项目A,项目B和项目D,依此类推。

对于较大的数据集,此计算可能会使进程非常缓慢。

为了加快这个过程,我们需要执行以下步骤:

  1. 设置支持度和置信度的最小值。这意味着我们只对找到具有某些默认存在(例如支持度)的项目的规则感兴趣,并且具有与其他项目共存的最小值(例如置信度)。
  2. 提取具有比最小阈值更高的支持度值的所有子集。
  3. 从置信度值高于最小阈值的子集中选择所有规则。
  4. 按Lift的降序排列规则。

python中的Apriori算法

现在我们已经了解Apriori algo的工作方式,我们将使用数据集实现此算法

示例数据集包含法国零售商店一周内的7500笔交易。

我们不会实现算法,我们将在python中使用已经开发的apriori算法。可以使用此处的文档安装库(https://pypi.org/project/apyori/)。

我将使用Jupyter-notebook编写Python代码。

实现Apriori算法的4个步骤

1.导入库

我们将导入numpy,pandas,matplotlib和apriori。

推荐引擎:Apriori算法及Python示例

2. 导入数据集

现在可以导入数据集并查看我们的数据集的外观,有多少交易以及数据集的形状。

推荐引擎:Apriori算法及Python示例

所以我们有20列和7500个交易。

3. 数据预处理

我们将要使用的Apriori库要求我们的数据集采用列表列表的形式,其中整个数据集是一个大列表,数据集中的每个事务都是外部大列表中的内部列表。目前,我们以pandas dataframe的形式提供数据。要将我们的pandas dataframe转换为列表列表,请执行以下代码。

推荐引擎:Apriori算法及Python示例

4. 使用Apriori

下一步是在数据集上应用Apriori算法。为此,我们可以使用从apriori库导入的apriori类。

apriori类需要一些参数值才能工作。第一个参数是要从中提取规则的列表的列表。第二个参数是min_support参数。此参数用于选择支持度值大于参数指定值的项目。接下来,min_confidence参数过滤那些置信度大于参数指定的置信度阈值的规则。同样,min_lift参数指定入围规则的最小提升度值。最后,min_length参数指定规则中所需的最小项目数。

min_length是3,因为我们的规则中至少需要两个产品。

对此数据的支持度可以计算为(一天购买的产品的最小次数* 7)/(一周内的交易次数)

支持度 =(6 * 7)/ 7500 = 0.0056

规则的最小置信度为20%或0.2。

推荐引擎:Apriori算法及Python示例

让我们看看被挖掘的规则的数量

推荐引擎:Apriori算法及Python示例

让我们看看第一条规则。

推荐引擎:Apriori算法及Python示例

第一条规则包括可以一起购买的物品列表。support 向量为0.0057,通过包含蘑菇奶油酱的事务数除以事务总数来计算。置信度值为0.30,告诉我们在总事务中30%的事务也包含了escalope。最后,提升度3.79告诉我们,有3.79倍的几率会在购买蘑菇奶油调味料时同时购买escalope。

所以现在我们对如何为小型零售店建立产品推荐系统有一个基本的想法,但是如果您有像亚马逊或Netflix这样的复杂数据,您应该使用推荐过滤技术(如协同过滤和基于内容的过滤)构建推荐系统。

相关推荐