关联规则算法Apriori以及FP-growth学习

最近选择了关联规则算法进行学习,目标是先学习Apriori算法,再转FP-growth算法,因为Spark-mllib库支持的关联算法是FP,随笔用于边学边记录,完成后再进行整理

一、概述

关联规则是一种常见的推荐算法,用于从发现大量用户行为数据中发现有强关联的规则。常用于回答“那些商品经常被同时购买”的问题,最经典的用途就是“购物篮分析”,也就是“尿布和啤酒”,用于在商场中发现顾客经常一起购买的商品,从而优化货物摆放。

从大规模数据集中寻找物品间的隐含关系被称作关联分析(association analysis)或者关联规则学习(association rule learning)。这里的主要问题在于,寻找物品的不同组合是一项十分耗时的任务,所需的计算代价很高,蛮力搜索方法并不能解决这个问题,所以需要用更智能的方法在合理的时间范围内找到频繁项集。本文分别介绍如何使用Apriori算法和FP-growth算法来解决上述问题。

二、关联分析

关联分析是在大量数据中寻找存在关系的任务。这些关系可能有两种

●频繁项集

●关联规则

频繁项集(frequent item sets)是经常出现在一块儿的物品的集合,关联规则(association rules)暗示两种物品之间可能存在很强的关系。

举例说明,给出某店销售清单:

订单号

商品

1

豆奶、莴苣

2

莴苣、豆奶、葡萄酒、甜菜

3

豆奶、尿布、葡萄酒、橙汁

4

莴苣、豆奶、尿布、葡萄酒

5

莴苣、豆奶、尿布、橙汁

●频繁项集指经常出现在一起的集合,例如订单中的{葡萄酒、豆奶、尿布},或是{豆奶、尿布},根据频繁项集我们可以推测,购买了豆奶的人,很有可能会同时购买尿布,为了度量这种推测的可靠性,引入两个标准,支持度和置信度。

●支持度(Support)

支持度表示item-set在所有的事件N中出现的频率,计算公式为

例如在上述示例中,{尿布、豆奶}的支持度为3/5=0.6。五条事务中有三条事务包含尿布和豆奶

在实际使用中,通常会设置一个最低支持度(minimum support),将大于或等于最低支持度的X称为频繁的item-set。

●置信度(Confidence)

置信度表示规则 X ⇒ Y 在所有事务中出现的频率。他的含义是满足X的条件下,同时满足Y的事务占所有事务的比例:

在示例中X ⇒ Y体现在:购买尿布的人中,同时还会购买豆奶

示例中,{尿布、豆奶}的置信度为0.6/0.6=1。

同样使用中我们会设置一个最低置信度,>=最低置信度的规则我们认为是有意义的

三、Apriori原理

假设一家店有商品1、2、3、4,图中显示了商品所有可能的组合

对于单个项集的支持度,我们可以通过遍历的方式来计算,但是当商品数N过大时,数据集共有

2N−1种项集组合,进行遍历效率不高。

因此基于一种Apriori原理,即说如果某个项集是频繁的,那么它的所有子集也是频繁的,以及他的逆否命题如果一个项集是非频繁的,那么它的所有超集也是非频繁的。

例如在下图中,已知阴影项集{2,3}是非频繁的。由此我们就可以知道项集{0,2,3},{1,2,3}以及{0,1,2,3}也是非频繁的。也就是说,一旦计算出了{2,3}的支持度,知道它是非频繁的后,就可以由此排除{0,2,3}、{1,2,3}和{0,1,2,3}。

四、Apriori算法流程

如图,给定订单Database D,Apriori的扫描流程:

1.扫描所有订单的所有商品,生成候选频繁1项集C1,包含所有的五个数据并计算五个数据的支持度。

2.进行剪枝,数据{4}的支持度只有25%被剪掉,得到频繁1项集L1为1235

3.选出只有最后一位不同的集合求并集,连接生成频繁2项集C2,包括12,13,15,23,25,35六组,第一轮迭代结束

4.第二轮迭代,扫描数据集计算C2的支持度,继续剪枝,删除12和15得到频繁2项集L2

5.对L2进行链接,剪枝。。。。。

6.最终得到频繁三项集235

流程总结:

输入:数据集合D,支持度阈值α

输出:最大的频繁K项集

过程:

1)扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。k=1,频繁0项集为空集。

2)挖掘频繁k项集

a) 扫描数据计算候选频繁k项集的支持度

b) 去除候选频繁k项集中支持度低于阈值的数据集,得到频繁k项集。如果得到的频繁k项集为空,则直接返回频繁k-1项集的集合作为算法结果,算法结束。 如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束。

c) 基于频繁k项集,连接生成候选频繁k+1项集。

3) 令k=k+1,转入步骤2。

Apriori算法Aprior算法每轮迭代都要扫描数据集,因此在数据集很大,数据种类很多的时候,算法效率比较低。

Python实现代码见https://www.cnblogs.com/1113127139aaa/p/9944769.html,小白向

参考博客:https://www.cnblogs.com/qwertWZ/p/4510857.html

python实现关联算法_关联规则算法Apriori学习及Python实现相关推荐

  1. cb32a_c++_STL_算法_查找算法_(5)adjacent_find

    cb32a_c++_STL_算法_查找算法_(5)adjacent_find adjacent_find(b,e),b,begin(),e,end() adjacent_find(b,e,p),p-p ...

  2. 常用十大算法_回溯算法

    回溯算法 回溯算法已经在前面详细的分析过了,详见猛击此处. 简单的讲: 回溯算法是一种局部暴力的枚举算法 循环中,若条件满足,进入递归,开启下一次流程,若条件不满足,就不进行递归,转而进行上一次流程. ...

  3. 关联规则挖掘算法_关联规则的挖掘与应用——Apriori和CBA算法

    文|光大科技大数据部  魏乐 卢格润 1  关联规则 1.1 关联规则基本概念 1.2 Apriori算法基本思路 2  关联分类 2.1  CBA关联分类算法思路 2.2  CBA算法实现 总结 关 ...

  4. 啤酒和尿不湿?购物篮分析、商品关联分析和关联规则算法都给你搞清楚(上—理论篇)

    不管是不是搞数据分析的,相信应该都听过啤酒尿不湿的故事,说的是美国的沃尔玛超市管理人员分析销售数据时发现了一个令人难以理解的现象:"啤酒"与"尿布湿"这两件看上 ...

  5. 机器学习_关联规则算法

    关联规则的理解:例如在超市里 , 将果酱和面包相邻摆放, 购买果酱的用户也有可能需要面包,购买面包也同理 . 可以激发用户的潜在购买欲望,相互提高销量 . 就像啤酒尿布问题 , 购买啤酒的用户大部分都 ...

  6. matlab 随机森林算法_(六)如何利用Python从头开始实现随机森林算法

    博客地址:https://blog.csdn.net/CoderPai/article/details/96499505 点击阅读原文,更好的阅读体验 CoderPai 是一个专注于人工智能在量化交易 ...

  7. neo4j python 算法_图论与图学习(二):图算法

    选自towardsdatascience 作者:Maël Fabien机器之心编译参与:熊猫 图(graph)近来正逐渐变成机器学习的一大核心领域,比如你可以通过预测潜在的连接来理解社交网络的结构.检 ...

  8. java寻优算法_模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径...

    模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...

  9. python距离向量路由算法_路由算法(全网最细)

    我在复习过程中整理的面试系列文章,全部免费分享给大家,适合保研和考研,需要的请移步我的个人原创公zhong号:程序员宝藏(号如其名,诚不欺你),回复关键字:复试上岸,即可获取! 正文开始 正文开始 1 ...

最新文章

  1. Nginx的https设置
  2. 将string转换成UTF8在进行请求
  3. ubuntu下svn命令
  4. console java_Java Console writer()方法与示例
  5. Visual.Assist.X 菜单汉化
  6. linux命令行聊天,Linux 下使用talk 进行聊天
  7. ArcGIS API For Javascript :如何动态生成 token 加载权限分配的地图服务?
  8. DelayedProduce分析
  9. 20-10-032-安装-KyLin-2.6.1-单机版安装(MAC官网下载)
  10. 解剖C语言---数据类型转换与数据运算集锦
  11. vs需要迁移_【迁移指南】从Web开发者到Flutter开发者
  12. VMware Workstation Pro下载密钥
  13. 投资理财之基金四:指数基金
  14. ubantu apt命令失败
  15. mount --bind作用与用法
  16. 考题篇(6.2) 05 ❀ FortiGate ❀ Fortinet 网络安全专家 NSE 4
  17. ROS通信机制--键盘控制乌龟运动线速度角速度XYZ值的解释
  18. 锐界机器人_钱江机器人/海峰机器人/锐界科技彰显“装配”技术实力
  19. linux安装intel驱动
  20. 如何在PC上下载腾讯课堂视频?

热门文章

  1. 质量工具之头脑风暴法
  2. Jackson反序列化
  3. 展讯李力游:产业政策制定与实施应更关注设计业龙头
  4. Mysql修改字段类型
  5. 历年真题知识点个人总结(持续更新)
  6. STM32F407ZGT6开发板STM32学习设计资料原理图PCB
  7. mybatis中 #{}和${}的区别是什么?
  8. 2021年中国脑机接口行业发展前景分析:应用前景广泛,市场规模的持续快速增长[图]
  9. Elasticsearch入门简介
  10. 树莓派串口2挂ESP32C3(推荐)