Apriori algorithm是关联规则里一项基本算法。是由Rakesh Agrawal和Ramakrishnan Srikant两位博士在1994年提出的关联规则挖掘算法。关联规则的目的就是在一个数据集中找出项与项之间的关系,也被称为购物蓝分析 (Market Basket analysis),因为“购物蓝分析”很贴切的表达了适用该算法情景中的一个子集。

Apriori(先验的,推测的)算法应用广泛,可用于消费市场价格分析,猜测顾客的消费习惯;网络安全领域中的入侵检测技术;可用在用于高校管理中,根据挖掘规则可以有效地辅助学校管理部门有针对性的开展贫困助学工作;也可用在移动通信领域中,指导运营商的业务运营和辅助业务提供商的决策制定。

  关于这个算法有一个非常有名的故事:"尿布和啤酒"。故事是这样的:美国的妇女们经常会嘱咐她们的丈夫下班后为孩子买尿布,而丈夫在买完尿布后又要顺 手买回自己爱喝的啤酒,因此啤酒和尿布在一起被购买的机会很多。这个举措使尿布和啤酒的销量双双增加,并一直为众商家所津津乐道。

1、基本概念

对于A->B

①支持度:P(A ∩ B),既有A又有B的概率

②置信度:

P(B|A),在A发生的事件中同时发生B的概率 p(AB)/P(A)     例如购物篮分析:牛奶 ⇒ 面包

例子:[支持度:3%,置信度:40%]

支持度3%:意味着3%顾客同时购买牛奶和面包

  置信度40%:意味着购买牛奶的顾客40%也购买面包

③如果事件A中包含k个元素,那么称这个事件A为k项集事件A满足最小支持度阈值的事件称为频繁k项集。

同时满足最小支持度阈值和最小置信度阈值的规则称为强规则

2、算法简述:

Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法Apriori使用一种称作逐层搜索的迭代方法,“K-1项集”用于搜索“K项集”。

首先,找出频繁“1项集”的集合,该集合记作L1。L1用于找频繁“2项集”的集合L2,而L2用于找L3。如此下去,直到不能找到“K项集”。找每个Lk都需要一次数据库扫描。

      核心思想是:连接步和剪枝步。连接步是自连接,原则是保证前k-2项相同,并按照字典顺序连接。剪枝步,是使任一频繁项集的所有非空子集也必须是频繁的。反之,如果某个候选的非空子集不是频繁的,那么该候选肯定不是频繁的,从而可以将其从CK中删除。

      简单的讲,1、发现频繁项集,过程为(1)扫描(2)计数(3)比较(4)产生频繁项集(5)连接、剪枝,产生候选项集   重复步骤(1)~(5)直到不能发现更大的频集

Apriori算法是反单调的,即一个集合如果不能通过测试,则该集合的所有超集也不能通过相同的测试。(剪枝步核心)

3.算法示例

1.过单趟扫描数据库D计算出各个1项集的支持度,得 到频繁1项集的集合。

2.连接步:为了生成,预先生成,由2个只有一个项不同的属于的频集做一 个(k-2)JOIN运算得到的。

3.剪枝步:由于是的超集,所以可能有些元素不是频繁的。在 潜在k项集的某个子集不是中的成员是,则该潜在频繁项集不可能是频繁的可以从中移去。

4.通过 单趟扫描数据库D,计算中各个项集的支持度,将中不满足支持度的项集去掉形成。

5.通过迭代循环,重复步骤2~4,直到有某个r值使得为空,这时算法停止。

4.Apriori的缺点

从以上的算法执行过程可以看到Apriori算法的缺点:

第一:在每一步产生侯选项目集时循环产生的组合过多,没有排除不应该参与组合的元素;(空间、时间)

第二:每次计算项集的支持度时,都对数据库D中的全部记录进行了一遍扫描比较,如果是一个大型的数据库的话,这种扫描比较会大大增加计算机系统的I/O开销。而这种代价是随着数据库的记录的增加呈现出几何级数的增加。(时间)

5.Apriori的优化改进(未完成,待补充)

      1.基于hash表的项集计数(将每个项集通过相应的hash函数映射到hash表中的不同的桶中,这样可以通过将桶中的项集技术跟最小支持计数相比较先淘汰一部分项集)
      2.事务压缩(压缩进一步迭代的事务数)(不包含任何k-项集的事务不可能包含任何(k+1)-项集,这种事务在下一步的计算中可以加上标记或删除)
      3.基于划分( D中的任何频繁项集必须作为局部频繁项集至少出现在一个部分中。
            第一次扫描:将数据划分为多个部分并找到局部频繁项集
            第二次扫描:评估每个候选项集的实际支持度,以确定全局频繁项集。)
      4.基于采样(在给定数据的一个子集挖掘)
            基本思想:选择原始数据的一个样本,在这个样本上用Apriori算法挖掘频繁模式
            通过牺牲精确度来减少算法开销,为了提高效率,样本大小应该以可以放在内存中为宜,可以适当降低最小支持度来减少遗漏的频繁模式

            可以通过一次全局扫描来验证从样本中发现的模式
            可以通过第二此全局扫描来找到遗漏的模式

6.参考文档:

1.数据挖掘算法-Apriori Algorithm(关联规则)
      2.Apriori算法详解之【一、相关概念和核心步骤】
      3.大数据经典算法Apriori讲解

Apriori算法总结相关推荐

  1. Apriori算法通俗详解_fpgrowth2_关联分析评估

    20220317 https://blog.csdn.net/a790439710/article/details/103080674 支持度,置信度各指标再理解 条件模式基:在某元素比如y出现的前提 ...

  2. 关于kNN、kMeans、Apriori算法小结

    趁着准备即将到来的笔试,也为了回顾一下这一星期来所学的三个机器学习算法,觉得还是重新理一下思路,好理解一下这几个算法. 复制代码 kNN算法 即k-近邻算法,属监督学习. 概述 优点:精度高,对异常值 ...

  3. Apriori算法进行关联分析实战

    使用Apriori算法进行关联分析(层次聚类) 一.基础知识 1.关联分析定义及存在的问题 定义:从大规模的数据集中寻找物品间的隐含关系,被称为关联分析或关联规则学习. 关联分析存在的主要问题:主要问 ...

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

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

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

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

  6. R语言Apriori算法关联规则挖掘:使用interestMeasure函数评估挖掘到的规则(包括覆盖率(coverage)和FishersExactTest)、置信度最高的五条规则(top five

    R语言Apriori算法关联规则挖掘:使用interestMeasure函数评估挖掘到的规则(包括覆盖率(coverage)和FishersExactTest).置信度最高的五条规则(top five ...

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

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

  8. Apriori算法、FP-Growth算法、顺序分析、PrefixSpan算法

    Apriori算法.FP-Growth算法.顺序分析.PrefixSpan算法 目录 Apriori算法.FP-Growth算法.顺序分析.PrefixSpan算法 Apriori算法 FP-Grow ...

  9. 关联规则推荐及Apriori算法

    参考这篇文章: http://blog.csdn.net/rongyongfeikai2/article/details/40457827 这条关联规则的支持度:support = P(A并B) 这条 ...

  10. 机器学习——使用Apriori算法进行关联分析

    从大规模的数据集中寻找隐含关系被称作为关联分析(association analysis)或者关联规则学习(association rule learning). Apriori算法 优点:易编码实现 ...

最新文章

  1. leading dimension
  2. php代码提示助手,laravel自动补全助手ide-helper安置及配置
  3. phpmemcache
  4. Windows环境下安装React Native开发环境----记一次填坑过程
  5. 关于JavaScript系列的自学,该怎么学比较好?
  6. 谷歌浏览器开发者工具解析
  7. windows 7下不能使用telnet方法
  8. 项目微管理23 - 会议
  9. VScode 搭建 django 开发环境(MAC、Python3.7)
  10. BFS Codeforces Beta Round #94 (Div. 2 Only) C. Statues
  11. OSI七层网络协议归纳
  12. 爬取淘宝买家秀,sign值的生成
  13. Stata:面板分位数回归
  14. CSS 定位(position)
  15. 分享多张图片到微信朋友圈
  16. Excel如何批量将中文名字翻译为英文
  17. navicat连接mysql1044_Navicat访问MySQL出现1044/1045错误的解决方法
  18. ETIMEDOU 104.16.20.35:443(已解决)
  19. photoshop下载安装_如何保存,共享,下载和安装自定义Photoshop操作
  20. python 量化交易 库_Quant-trading:Python量化交易策略库

热门文章

  1. 查看matlab当前路径,Matlab 如何查找当前路径下文件夹
  2. 计算机语音输入软件,语音输入法_语音输入法电脑版_语音输入法哪个好【最新】-太平洋电脑网...
  3. 关于mybatis中的大于号和小于号的错误
  4. 不用找,你想要的酒店餐饮su模型素材都在这里
  5. 自适应空间特征融合( adaptively spatial feature fusion)一种基于数据驱动的金字塔特征融合策略
  6. gui学生信息管理系统java,Java实训·GUI学生信息管理系统
  7. 常用快捷键cmd常用dos命令java安装
  8. 直播预告:对神经网络对抗鲁棒性正则化的认识 | AI TIME PhD
  9. 如何透彻理解 Paxos 算法?
  10. 【博客625】keepalived开启garp refresh的重要性