原文链接:http://tecdat.cn/?p=7947

原文出处:拓端数据部落公众号

关联规则挖掘是一种识别不同项目之间潜在关系的技术。以超级市场为例,客户可以在这里购买各种商品。通常,客户购买的商品有一种模式。例如,有婴儿的母亲购买婴儿产品,如牛奶和尿布。少女可以购买化妆品,而单身汉可以购买啤酒和薯条等。总之,交易涉及一种模式。如果可以识别在不同交易中购买的物品之间的关系,则可以产生更多的利润。

例如,如果项目A和项目B的购买频率更高,则可以采取几个步骤来增加利润。例如:

  1. A和B可以放在一起,这样,当客户购买其中一种产品时,他不必走很远就可以购买另一种产品。
  2. 购买某一种产品的人可以通过广告活动来定位以购买另一种产品。
  3. 如果客户购买了这两种产品,则可以在这些产品上提供折扣。
  4. A和B都可以包装在一起。

识别产品之间的关联的过程称为关联规则挖掘。

关联规则挖掘的Apriori算法

已经开发出不同的统计算法来实现关联规则挖掘,而Apriori就是这样一种算法。在本文中,我们将研究Apriori算法背后的理论,稍后将在Python中实现Apriori算法。

先验算法理论

支持度

支持是指商品的默认受欢迎程度,可以通过查找包含特定商品的交易数量除以交易总数来计算。假设我们想找到对项目B的支持。可以将其计算为:

Support(B) = (Transactions containing (B))/(Total Transactions)

例如,如果在1000个事务中,有100个事务包含Ketchup,则对项目Ketchup的支持可以计算为:

Support(Ketchup) = (Transactions containingKetchup)/(Total Transactions)Support(Ketchup) = 100/1000= 10%

置信度

置信度是指如果购买了商品A,也购买了商品B的可能性。可以通过找到一起购买A和B的交易数量除以购买A的交易总数来计算。从数学上讲,它可以表示为:

Confidence(A→B) = (Transactions containing both (A and B))/(Transactions containing A)

回到我们的问题,我们有50笔交易,汉堡和番茄酱是一起购买的。在150笔交易中,会购买汉堡。然后我们可以发现购买汉堡时购买番茄酱的可能性可以表示为Burger-> Ketchup的置信度,并且可以用数学公式写成:

Confidence(Burger→Ketchup) = (Transactions containing both (Burger and Ketchup))/(Transactions containing A)Confidence(Burger→Ketchup) = 50/150= 33.3%

提升度

Lift(A -> B)指当出售A时B的出售比例的增加。提升(A –> B)可以通过除Confidence(A -> B)以来计算Support(B)。从数学上讲,它可以表示为:

Lift(A→B) = (Confidence (A→B))/(Support (B))

回到我们的汉堡和番茄酱问题,Lift(Burger -> Ketchup)可以计算为:

Lift(Burger→Ketchup) = (Confidence (Burger→Ketchup))/(Support (Ketchup))Lift(Burger→Ketchup) = 33.3/10= 3.33

Lift基本上告诉我们,一起购买汉堡和番茄酱的可能性是仅购买番茄酱的可能性的3.33倍。

Apriori算法涉及的步骤

对于大量数据,成千上万的交易中可能有数百个项目。Apriori算法尝试为每种可能的项目组合提取规则。例如,可以为项目1和项目2,项目1和项目3,项目1和项目4,然后是项目2和项目3,项目2和项目4,然后是项目1,项目2和项目3的组合计算提升。项目3;类似地,项目1,项目2和项目4,依此类推。

用Python实现Apriori算法

从理论上讲,现在是时候看看Apriori算法了。在本节中,我们将使用Apriori算法查找规则,这些规则描述了在法国零售商店一周进行7500次交易的不同产品之间的关联。

另一个有趣的一点是,我们不需要编写脚本来为所有可能的项目组合计算支撑度,置信度和提升度。我们将使用一个现成的库,其中所有代码都已实现。

我指的是apyori库,可以在这里找到源。我建议您在继续之前,在Python库的默认路径中下载并安装该库。

注意:本文中的所有脚本均已使用Spyder IDE for Python 执行。

请按照以下步骤在Python中实现Apriori算法:

导入库

与往常一样,第一步是导入所需的库。

导入数据集

现在,我们导入数据集执行以下脚本:

store_data = pd.read_csv('D:\\Datasets\\store_data.csv')

让我们调用该head()函数以查看数据集:

store_data.head()

上面的屏幕快照中显示了数据集的摘要。如果仔细查看数据,我们可以看到标题实际上是第一个事务。每行对应一个交易,每列对应于在该特定交易中购买的商品。在NaN告诉我们,列所代表的项目在具体的交易没有购买。

在此数据集中没有标题行。 如下所示:

store_data = pd.read_csv('D:\\Datasets\\store_data.csv', header=None)

现在执行head()函数:

store_data.head()

现在,我们将使用Apriori算法来找出哪些商品通常一起出售,以便商店所有者可以采取行动将相关商品放在一起或一起做广告 。

数据处理

我们将要使用的Apriori库要求我们的数据集采用列表列表的形式,其中整个数据集是一个大列表,而数据集中的每个事务都是外部大列表中的一个内部列表。

应用

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

 

在第二行中,我们将apriori类找到的规则转换为,list因为这样更容易查看结果。

查看结果

首先让我们找到apriori该类挖掘的规则总数。执行以下脚本:
上面的脚本应返回48。每个项目对应一个规则。

让我们打印association_rules列表中的第一项以查看第一条规则。执行以下脚本:
输出应如下所示:

RelationRecord(items=frozenset({'light cream', 'chicken'}), support=0.004532728969470737, ordered_statistics[OrderedStatistic(items_base=frozenset({'light cream'}), items_add=frozenset({'chicken'}), confidence=0.29059829059829057, lift=4.84395061728395)])

列表中的第一项是包含三项的列表本身。列表的第一项显示规则中的杂货项目。

例如,从第一项开始,我们可以看到淡奶油和鸡肉通常一起购买。这是有道理的,因为购买淡奶油的人对自己吃的东西很谨慎,因此他们更有可能购买鸡肉即白肉而不是红肉即牛肉。或这可能意味着淡奶油通常用于鸡肉食谱中。

第一条规则的支持值为0.0045。该数字是通过将含淡奶油的交易次数除以交易总数得出的。该规则的置信度为0.2905,这表明在所有包含轻奶油的交易中,29.05%的交易也包含鸡肉。最终,提升4.84告诉我们,与默认销售鸡肉的可能性相比,购买淡奶油的顾客购买鸡肉的可能性高4.84倍。

以下脚本以更清晰的方式显示每个规则的规则,支撑,置信度和提升:

如果执行上述脚本,您将看到apriori该类返回的所有规则。apriori该类返回的前四个规则如下所示:
Rule: light cream -> chicken
Support: 0.004532728969470737
Confidence: 0.29059829059829057
Lift: 4.84395061728395
=====================================
Rule: mushroom cream sauce -> escalope
Support: 0.005732568990801126
Confidence: 0.3006993006993007
Lift: 3.790832696715049
=====================================
Rule: escalope -> pasta
Support: 0.005865884548726837
Confidence: 0.3728813559322034
Lift: 4.700811850163794
=====================================
Rule: ground beef -> herb & pepper
Support: 0.015997866951073192
Confidence: 0.3234501347708895
Lift: 3.2919938411349285
=====================================

我们已经讨论了第一条规则。现在让我们讨论第二条规则。第二条规则指出,经常购买蘑菇奶油酱和无骨牛排。蘑菇奶油酱的支持量是0.0057。

结论

关联规则挖掘算法(例如Apriori)对于查找数据项之间的简单关联非常有用。它们易于实现并且具有很高的解释能力。

拓端tecdat|通过Python中的Apriori算法进行关联规则挖掘相关推荐

  1. R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)、使用subset函数进一步筛选生成的规则去除左侧规则中的冗余信息、获取更独特的有新意的关联规则

    R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘).使用subset函数进一步筛选生成的规则去除左侧规则中的冗余信息.获取更独特的有新意的关联规则 目录

  2. 利用weka进行数据挖掘——基于Apriori算法的关联规则挖掘实例

    文章目录 1. weka安装 2. 先分析一个Apriori算法的关联规则挖掘实例 3. 利用weka进行数据挖掘 3.1 将数据转为ARFF格式 3.2 利用weka进行分析 4. 参考文章 首先, ...

  3. R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)、查看限制了规则的右侧之后挖掘到的规则(置信度排序,只查看左侧即可)

    R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘).查看限制了规则的右侧之后挖掘到的规则(置信度排序,只查看左侧即可) 目录

  4. R语言使用apriori算法进行关联规则挖掘实战:关联规则概念、频繁项集、支持度(support)、置信度(confidence)、提升度(lift)、apriori算法

    R语言使用apriori算法进行关联规则挖掘实战:关联规则概念.频繁项集.支持度(support).置信度(confidence).提升度(lift).apriori算法 目录

  5. matlab 关联规则挖掘,数据挖掘实验(六)Matlab实现Apriori算法【关联规则挖掘】...

    本文代码均已在 MATLAB R2019b 测试通过,如有错误,欢迎指正. (一)关联规则挖掘 关联规则挖掘(Association rule mining)是数据挖掘中最活跃的研究方法之一,可以用来 ...

  6. 拓端tecdat荣获掘金社区入驻新人奖

    2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...

  7. 拓端tecdat荣获2022年度51CTO博主之星

    相信技术,传递价值,这是51CTO每一个技术创作者的动力与信念,2022 年度,拓端tecdat 作为新锐的数据分析咨询公司,在51CTO平台上,不断的输出优质的技术文章,分享前沿创新技术,输出最佳生 ...

  8. 【Python数据挖掘课程笔记】八.关联规则挖掘及Apriori实现购物推荐

    #2018-03-23 10:48:40 March Friday the 12 week, the 082 day SZ SSMR[Python数据挖掘课程笔记]八.关联规则挖掘及Apriori实现 ...

  9. 在python中使用FP-growth算法

    在 Python 中使用 FP-growth 算法可以使用第三方库 PyFIM.PyFIM 是一个 Python 的实现频繁项集挖掘算法库,它提供了多种频繁项集挖掘算法,其中包括 FP-growth. ...

  10. Python 数据挖掘之中医证型关联规则挖掘

    Python 数据挖掘之中医证型关联规则挖掘 综述 部分数据展示 数据聚类离散化 Apriori关联规则分析 结果 综述 对中医证型数据进行挖掘分析,运用的算法有 K-Means,MeanShift, ...

最新文章

  1. Linux学习(三)--vi和vim编辑器
  2. 干货 | 476个PyTorch资源大合集推荐,GitHub超过3600星
  3. hdu 5256 LIS变形
  4. 笨办法学python47 原理_41:学会说面向对象
  5. 010_html事件属性
  6. UbuntuServer16.04LTS中安装Mysql并配置远程访问
  7. 小 Q 与函数求和 1(牛客练习赛 81 E)
  8. 软件_mongo占用磁盘空间过大
  9. 敏捷开发般若敏捷系列之三:什么是敏捷(下)(无住,不住于空,破空执,非法,非非法)...
  10. 程序员,别逼自己学 AI 了,掌握正确的方法,开发水平暴增!
  11. 297 - Quadtrees
  12. Win10x64-WDM设备驱动开发入门 - 第六章 VMware-Win10x64+WDK10+VS2015/2019环境搭建与双机调试
  13. 预演:使用 TensorFlow 进行深度学习
  14. java 拼多多电子面单打印_商家自定义模板
  15. 苹果手机连到电脑后找不到服务器,iPhone手机热点明明打开了,可是电脑就是连不上怎么办?...
  16. 游标CURSOR的基本用法
  17. Toast 消息提示框
  18. Linux下安装YASM--编译x264
  19. python16进制表示0xad_在 Python 中 0xad 是合法的十六进制数字表示形式。 (2.0分)_学小易找答案...
  20. 计算机发明时间 冯诺依曼,电脑是谁发明的,冯·诺依曼和图灵(两人都起到了重要作用)...

热门文章

  1. PHP用户名和密码登陆验证代码
  2. 【相机标定系列】相机成像的理想模型原理,相机矩阵分解
  3. 大规模分布式图学习框架Euler
  4. 凸优化第五章对偶 5.9 广义不等式
  5. 介绍一下python getopt 模块
  6. nginx 子进程 woker process 启动失败的问题
  7. JAVA Thread的中断机制(interrupt)
  8. asp.net乱码问题
  9. IOS快速集成下拉上拉刷新
  10. mac废纸篓清空的心得、mac设置不睡眠不待机不锁屏、如何快速锁屏待机睡眠、mac重启、mac学习的必备软件-城...