Frequent Pattern Mining(频繁模式挖掘) - Aprior挖掘算法

在开始之前,先看一个故事:

故事产生于20世纪90年代的美国沃尔玛超市中,沃尔玛的超市管理人员分析销售数据时发现了一个令人难于理解的现象:在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系的商品会经常出现在同一个购物篮中,这种独特的销售现象引起了管理人员的注意,经过后续调查发现,这种现象出现在年轻的父亲身上。因此超市管理人员将啤酒和尿布的货架安排得非常接近,既提高了销售量,又便利了顾客的购买。

这里的啤酒和尿布就是我们需要介绍的频繁模式的一种。叫做频繁项集。就是出现频繁的项目构成的集合,这里有两个项目,因此也可以称之为2项集。

前面的小故事其实就是频繁模式挖掘的一个使用场景了,就是超市货架的摆放问题,还有一个经典的场景就是推荐了,其实在深度学习出现之前,一些数据挖掘算法也可以获得不错的成绩的。

Aprior挖掘算法

直接看例子.

我们把下面这个表格看成是超市的销售数据, 比如第一行表示Tid为10的一个人,买了糖,可乐,米这三样东西.那么这个表格显示有四个人,他们分别买了一些东西.

步骤:

  • 对数据进行第一次扫描,得到频繁1项集.看下面的扫描结果你就知道什么是频繁一项集了.这一步就是将所有的商品一个一个拿出来,去掉重复的.

那么后面的数字表示什么意思呢?

数字表示的是支持度(support), 怎么算出来的呢?以糖为例,糖的支持度就是看4个人当中有几个人买了糖,有10和30,那么糖的支持度就是2.那为什么米的颜色不一样了,因为这里有个最小支持度的设置,例子中我们设置最小支持度为2,也就是说支持度小于2的都要去掉.

  • 去掉支持度不符合的1项集之后

  • 然后进行join和prune操作. join操作很好理解,就是把它们一一组合起来, 这样就得到了候选的2项集.如下.这里不涉及到prune操作,我们先不讲.

  • 继续求它们的支持度.如下.

  • 去掉支持度不符合的,如下,

  • 继续进行join和prune操作,

join操作我们已经了解了,这里涉及了prune操作,我们看一下.

网上数两个图,看到候选2项集有{糖,尿布}这个选项,但是它的支持度不符合被去掉了,prune做的就是之前支持度不符合的项集,往里面加其它item(超项集),他的支持度任然不符合.所示在糖和尿布里面再加入一个啤酒,它仍然是不符合的,这就是剪枝的做法.

  • 最后的结果

总结一下步骤:

  1. 遍历数据集,得到频繁1-项集
  2. 从频繁K-项集中生成候选的(K+1)-项集
  3. 再次遍历数据集,测试候选的(K+1)-项集是否是频繁的,由此得到频繁(K+1)-项集
  4. 重复2-3步,直到没有候选项集或频繁项集可以生成
  5. 从频繁项集中找出强的关联规则

下面我们来看一下第5步是怎么做的,这里说的强的关联规则.

什么是关联规则?其实就是一个形如A->B的式子.

什么是强,这是自己规定的,比如我认为置信度大于70%的就算强.置信度下面再说.

看一下上面例子生成的频繁3项集

步骤:

  • 为每一个频繁项集l生成其所有的非空子项集.我们这里l ={啤酒,可乐, 尿布},那么他的所有非空子项集是{啤酒}, {可乐}, {尿布}, {啤酒,可乐}, {啤酒,尿布}, {可乐, 尿布}
  • 我们要计算每一个非空子项集sl-s关联规则的置信度.置信度confidence用下面的式子算.

confidence(s−>(l−s))=support(l)support(s)confidence(s->(l-s)) = \frac{support(l)}{support(s)} confidence(s−>(l−s))=support(s)support(l)​

  • 计算置信度

  • 如果我们规定最小置信度为70%,那么红框里面的关联规则就是强的关联规则.

总结一下步骤:

  1. 为每一个频繁项集l生成其所有的非空子项集
  2. l的每个非空子项集s,如果满足下式

confidence(s−>(l−s))=support(l)support(s)>=min_confconfidence(s->(l-s)) = \frac{support(l)}{support(s)} >= min\_conf confidence(s−>(l−s))=support(s)support(l)​>=min_conf
则规则s->(l-s)就是强的关联规则.

Frequent Pattern Mining(频繁模式挖掘) - Aprior挖掘算法相关推荐

  1. Frequent Pattern Tree 频繁模式数

    安装pip包 pip install pyfpgrowth 然后,要在项目中使用它,导入它并使用find_frequent_patterns和generate_association_rules函数 ...

  2. 频繁模式挖掘Frequent Pattern Mining

    频繁模式挖掘(Frequent Pattern Mining): 频繁项集挖掘是通常是大规模数据分析的第一步,多年以来它都是数据挖掘领域的活跃研究主题.建议用户参考维基百科的association r ...

  3. 浅谈数据挖掘——频繁模式、序列挖掘与搜索优化算法

    本系列将从下面几方面谈谈最近的一点点收获 令声明:本文主要是对我找到的一个莫名其妙国外英文pdf文件的学习与解读,因为我也没有找到他的出处(也没作者也没学校),所以我仅以此段文字向这个未知的作者致敬. ...

  4. scala-MLlib官方文档---spark.ml package--ML Pipelines+Collaborative Filtering+Frequent Pattern Mining

    三. ML Pipeline Main concepts in Pipelines(管道中的主要概念) MLlib对用于机器学习算法的API进行了标准化,从而使将多种算法组合到单个管道或工作流中变得更 ...

  5. 频繁模式挖掘——概述

    频繁模式挖掘(Frequent Pattern Mining) 基本概念 a. 频繁模式(frequent pattern)是频繁地出现在数据集中的模式(如项集.子序列或子结构). 例如: i. 频繁 ...

  6. 挖掘频繁模式、关联和相关性:基本概念和方法

    基本概念 频繁模式挖掘搜索给定数据及中国反复出现的联系. 购物篮分析:一个例子 频繁项集.闭项集和关联规则 规则的支持度和置信度是规则兴趣度的两种度量. 一个例子: 支持度:支持度为2%,意味着分析的 ...

  7. 数据挖掘-关联分析频繁模式挖掘Apriori、FP-Growth及Eclat算法的JAVA及C++实现

    (update 2012.12.28 关于本项目下载及运行的常见问题 FAQ见 newsgroup18828文本分类器.文本聚类器.关联分析频繁模式挖掘算法的Java实现工程下载及运行FAQ ) 一. ...

  8. 频繁模式(frequent pattern)

    Datawhale 频繁模式(frequent pattern) 频繁模式一般是指频繁地出现在数据集中的模式.这种频繁模式和关联规则是数据挖掘中想要挖掘的知识. 我们都知道一个很有趣的故事,就是啤酒和 ...

  9. 【数据挖掘笔记六】挖掘频繁模式、关联和相关性:基本概念和方法

    6.挖掘频繁模式.关联和相关性:基本概念和方法 频繁模式(frequent pattern)是频繁地出现在数据集中的模式. 6.1 基本概念 频繁模式挖掘搜索给定数据集中反复出现的联系,旨在发现大型事 ...

  10. 【数据挖掘】频繁模式挖掘及Python实现

    1.理论背景 在美国,著名的沃尔玛超市发现啤酒与尿布总是共同出现在购物车中,于是沃尔玛超市经过分析发现许多美国年轻的父亲下班之后经常要去购买婴儿的尿布,而在购买尿布的同时,他们往往会顺手购买一些啤酒: ...

最新文章

  1. C# 中的委托和事件(1)
  2. 前方高能:1024程序员节读书攻略来来来来啦!
  3. Android 事件分发 简单学
  4. 猪的诱惑(2005-12-25 15:45:05)(新浪)
  5. golang 并发实践
  6. 在AWS中设置Cassandra集群
  7. 高性能网络编程(二):上一个10年,著名的C10K并发连接问题
  8. 不加群提取群成员_使用itchat分析指定微信群男女比例等成员数据
  9. linux-ab压力测试
  10. 二进制加法器c语言程序,二进制加法器电路框图
  11. Qt Event(Qt事件)
  12. Android so加固的简单脱壳
  13. Ubuntu 20.04 Micosoft edg 浏览器安装教程
  14. PDF怎么合并?分享几种非常简单的合并方法
  15. 学编程有什么用?零基础小白可以学吗?
  16. CSGO社区服搭建记录
  17. 信息安全数学基础(仅供个人复习使用)
  18. Acwing4269. 校庆
  19. 如何删去微信小程序服务器,微信小程序怎么注销
  20. 分享通达信破解交易接口的使用!

热门文章

  1. 【快代理API】获取隧道代理IP
  2. sealos2.0使用教程,最简单kubernetesHA方案
  3. Oracle启动监听错误TNS-12555: TNS:permission denied
  4. 《第五项修炼,学习型组织的艺术与实践》读书笔记
  5. Windows 使用命令行修改密码
  6. 每周大数据论文(一)Data-intensive applications, challenges, techniques and technologies: A survey on Big Data
  7. 零信任体系下的企业数据安全建设路径
  8. 【转载】HBase基本概念和hbase shell常用命令用法
  9. SAP SD客户寄售案例教程1
  10. epoll精粹二 - Linux C++网络编程(二十三)