一、Apriori算法简介

Apriori算法用于解决大规模数据集的关联分析问题。关联分析(association analysis)或关联规则学习(association rule learning)是从大规模数据集中寻找物品间的隐含关系。但是,寻找物品的不同组合是一项十分耗时的任务,计算代价高,蛮力搜索并不能解决问题,所以需要更智能的方法在合理时间范围内找到频繁项集。Apriori算法就是解决这个问题的。

二、关联分析

关联分析是一种在大规模数据集中寻找有趣关系的任务。这些关系可以有两种形式:(1)频繁项集,(2)关联规则。

(1)频繁项集

频繁项集:是经常出现在一块的物品的集合。

量化方法:支持度(support)。支持度是数据集中包含该项集的记录所占的比例。例如数据集[[1, 3, 4], [2, 3, 5], [1, 2, 3], [2, 5]]中,项集{2}的支持度为3/4,项集{2,3}的支持度为1/2。

(2)关联规则

关联规则:暗示两种物品之间可能存在很强的关系。

量化计算:可信度或置信度(confidence)。可信度是针对一条关联规则(如{2}-->{3})来定义的。{2}-->{3}这条规则的可信度为“支持度{2,3}/支持度{2}”,即2/3,意味着包含{2}的所有记录中2/3符合规则包含{2,3}。

三、Apriori原理

无论频繁项集还是关联规则都需要计算支持度。如果数据量小,计算一个项集的支持度可以针对每个项集扫描所有数据,然后统计该项集出现的总数除以总的交易记录数,就可以得到支持度。但是对于N个物品的数据集共有2N-1中项集组合,即使4个物品也需要遍历数据集15次,100种物品有中可能的项集组合,对现代计算机而言,需要很长的时间才能完成运算,何况事实上,商店都会有上百上千种商品。

Apriori算法可以降低计算时间,减少可能感兴趣的项集。

Apriori原理:如果某个项集是频繁的,那么它的所有子集也是频繁的。如若{2,3}是频繁的,那么{0}、{1}也一定是频繁的。反过来同样,如果一个项集是非频繁集,那么它的所有超集也是非频繁的。如若{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原理可以避免项集数目的指数增长,从而在合理时间内计算出频繁项集。

四、Apriori算法发现频繁项集

Apriori算法流程:

1)首先,基于数据集生成个数为1的项集的列表C1;

2)根据频繁项集函数,计算C1中各元素的支持度,去掉不满足最小支持度的元素,生成满足最小支持度的频繁项集列表L1;

3)根据创建候选项集函数,基于L1生成k=2的候选项集列表C2;

4)根据频繁项集函数,基于C2生成满足最小支持度的k=2的频繁项集列表L2;

5)增加k的值,重复3)、4)生成Lk,直到Lk为空时,返回L列表,L包含L1、L2、L3...

以下是创建候选项集函数及解释。

至于为什么是比较前k-2个元素呢,一般初始项集个数为1,由k=1的项集生成k=2的项集。所以k的初始值也为2。如果要生成个数为k的项集,则比较前k-2项,如果相等合并,正好比较的项各剩下1个不相等的元素,这样合并后个数就为k-2+1+1=k项。(以下是举例推导过程,忽略C2经过滤后生成L2,直接将C2视为L2,相当于支持度为0)

比较前k-2个元素,可以减少遍历列表的次数。比如想利用{0,1}、{0,2}、{1,2}来创建三元素项集,如果将每两个集合合并,就会得到{0,1,2}、{0,1,2}、{0,1,2}。同样的结果结合会重复3次,还需要处理以得到非重复结果。现在只比较第k-2=1个元素,第1个元素相同才合并集合,得到{0,1,2},只有一次操作,这样就不需要遍历列表来寻找非重复值。

五、从频繁项集中挖掘关联规则

首先从一个频繁项集开始,接着创建一个规则列表,其中规则右部只包含一个元素,然后对这些规则进行测试。接下来合并所有剩余规则来创建一个新的规则列表,其中规则右部包含两个元素。这种方法也被称作分级法。【待续】

Apriori算法通俗讲解相关推荐

  1. 人工智能算法通俗讲解系列(二):逻辑回归

    2019独角兽企业重金招聘Python工程师标准>>> 今天,我们介绍的机器学习算法叫逻辑回归.它英语名称是Logistic Regression,简称LR. 跟之前一样,介绍这个算 ...

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

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

  3. FP-growth算法通俗讲解

    FP-growth算法是一种高效发现频繁集的方法.例如你在搜索引擎中搜索一个词,它会自从补全查询词项,该处用到了FP-growth算法,通过查看互联网上的用词来找出经常在一块出现的词.[FP(Freq ...

  4. Apriori算法通俗详解_fpgrowth_关联

    20210817 频繁集:满足频率阈值的项集合 支持度:就是阈值 https://blog.csdn.net/u014407826/article/details/53375274 Apriori算法 ...

  5. 模拟退火算法通俗讲解

    目录 1. 模拟退火算法基本概念 2. 模拟退火算法基本流程 3. 遗传模拟退火算法matlab代码 1. 模拟退火算法基本概念 自然凝结的.不受外界干扰而形成的晶体拥有整齐规则的几何外形.那么从液态 ...

  6. 朴素贝叶斯分类器算法通俗讲解

    首先会用到贝叶斯决策理论,说一下.贝叶斯决策理论的核心思想是:选择具有最高概率的决策.例如一个点(x, y),属于类别1的概率是p1(x, y),属于类别2的概率是p2(x, y),用贝叶斯决策理论来 ...

  7. AdaBoost算法通俗讲解

    AdaBoost是元算法中最流行的一种,也被认为是最好的监督学习的方法 . 一.元算法 元算法(meta-algorithm),也被称作集成方法(ensemble method),是对其他算法进行组合 ...

  8. Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解

        Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解 在Hadoop分布式环境下实现K-Means聚类算法的伪代码如下: 输入:参数0--存储样本数据的文本文件inpu ...

  9. 大白话解析Apriori算法python实现(含源代码详解)

    大白话解析Apriori算法python实现(含源代码详解) 一.专业名词解释 二.算法思路 三.python代码实现 四.Aprioir的优点.缺点及改进方法 本文为博主原创文章,转载请注明出处,并 ...

  10. Apriori算法简介及实现(python)

    Apriori这个词的意思是"先验的",从priori这个词根可以猜出来~;) .该算法用于从数据中挖掘频繁项数据集以及关联规则.其核心原理是基于这样一类"先验知识&qu ...

最新文章

  1. linux可以远程装机吗,linux 远程装机
  2. zend studio配置调试(Xdebug方式)
  3. 导出SAP表结构到EXCEl
  4. import lombok 报错_Android上使用Lombok和set、get方法告别
  5. senchaTouch 给组件传参的两种方式
  6. Android 屏幕万能自适应(自定义适配)
  7. 判断字符串是否对称 C语言,c语言 判断字符串是否中心对称
  8. 《德鲁克管理思想精要》读书笔记3 - 管理的新范式?
  9. python四则运算完整代码_2/20Python之四则运算
  10. 电脑显示无网络,刷新DNS解析缓存
  11. Babel7的简单使用
  12. kali监听拦截局域网主机上网记录
  13. 基于S7–1500的单部六层电梯教程(六)
  14. google地图测距原码
  15. 微信小程序自定义分享功能开发笔记
  16. 推荐算法——NCF知识总结代码实现
  17. Android Studio制作简易微信界面
  18. RTSP协议视频智能分析平台EasyNVR登录及页面的加密优化方案介绍
  19. Oracle国际认证OCA/OCP/OCM目前的含金量及就业形势
  20. Win10 - 快捷键

热门文章

  1. java orb 是什么_什么是ORB
  2. Java利用NeteaseCloudMusicApi批量下载网易云音乐
  3. 开源软件生态:现状与趋势
  4. 互联网应用基础第五课:互联网即时通讯工具之QQ和微信的使用、淘宝客理解
  5. 软件测试面试常见问题
  6. HDOJ 5773 The All-purpose Zero
  7. CentOS Steam 9 安装测试
  8. 光耦参数理解(转载)
  9. UVALive - 5713
  10. 浅谈人脸识别技术的方法和应用