机器学习之Apriori算法
1.Apriori算法简介
Apriori算法是常用于挖掘出数据关联规则的算法,能够发现事物数据库中频繁出现的数据集,这些联系构成的规则可帮助用户找出某些行为特征,以便进行企业决策。例如,某食品商店希望发现顾客的购买行为,通过购物篮分析得到大部分顾客会在一次购物中同时购买面包和牛奶,那么该商店便可以通过降价促销面包的同时提高面包和牛奶的销量。了解Apriori算法推导之前,我们先介绍一些基本概念。
- **事务数据库:**设 I = { i 1 , i 2 , … , i m } I=\{ i_1,i_2,…,i_m \} I={i1,i2,…,im}是一个全局项的集合,事物数据库 D = { t 1 , t 2 , . . , t n } D=\{ t_1,t_2,..,t_n \} D={t1,t2,..,tn}是一个事务的集合,每个事务 t i ( 1 ≤ i ≤ n ) t_i(1\le i \le n) ti(1≤i≤n)都对应 I I I上的一个子集,例如 t 1 = { i 1 , i 3 , i 7 } t_1=\{ i_1,i_3,i_7\} t1={i1,i3,i7}。
- **关联规则:**关联规则表示项之间的关系,是形如 X → Y X\rightarrow Y X→Y的蕴含表达式,其中 X X X和 Y Y Y是不相交的项集, X X X称为规则的前件, Y Y Y称为规则的后件。例如 { c e r e a l , m i l k } → { f r u i t } \{ cereal,milk\}\rightarrow \{fruit \} {cereal,milk}→{fruit}关联规则表示购买谷类食品和牛奶的人也会购买水果。通常关联规则的强度可以用支持度和置信度来度量。
- **支持度:**支持度表示关联数据在数据集中出现的次数或所占的比重。
s u p p o r t ( X → Y ) = P ( X ∪ Y ) = ∣ X ∪ Y ∣ ∣ D ∣ support(X\rightarrow Y)=P(X\cup Y)=\frac{|X\cup Y|}{|D|} support(X→Y)=P(X∪Y)=∣D∣∣X∪Y∣ - **置信度:**置信度表示 Y Y Y数据出现后, X X X数据出现的可能性,也可以说是数据的条件概率。
c o n f i d e n c e ( X ⇐ Y ) = P ( X ∣ Y ) = P ( X Y ) P ( Y ) confidence(X\Leftarrow Y)=P(X|Y)=\frac{P(XY)}{P(Y)} confidence(X⇐Y)=P(X∣Y)=P(Y)P(XY) - **提升度:**提升度体现 X X X和 Y Y Y之间的关联关系,提升度大于1表示 X X X和 Y Y Y之间具有强关联关系,提升度小于等于1表示 X X X和 Y Y Y之间无有效的强关联关系。
l i f t ( X ⇐ Y ) = c o n f i d e n c e ( X ⇐ Y ) P ( X ) = P ( X Y ) P ( X ) P ( Y ) lift(X \Leftarrow Y)=\frac{confidence(X \Leftarrow Y)}{P(X)}=\frac{P(XY)}{P(X)P(Y)} lift(X⇐Y)=P(X)confidence(X⇐Y)=P(X)P(Y)P(XY) - **强关联规则:**满足最小支持度和最小置信度的关联规则。
关联规则的挖掘目标是找出所有的频繁项集和根据频繁项集产生强关联规则。对于Apriori算法来说,其目标是找出所有的频繁项集,因此对于数据集合中的频繁数据集,我们需要自定义评估标准来找出频繁项集,常用的评估标准就是用上述介绍的支持度。
2.Apriori算法原理
Apriori算法是经典生成关联规则的频繁项集挖掘算法,其目标是找到最多的K项频繁集。那么什么是最多的K项频繁集呢?例如当我们找到符合支持度的频繁集AB和ABE,我们会选择3项频繁集ABE。下面我们介绍Apriori算法选择频繁K项集过程。
Apriori算法采用迭代的方法,先搜索出候选1项集以及对应的支持度,剪枝去掉低于支持度的候选1项集,得到频繁1项集。然后对剩下的频繁1项集进行连接,得到候选2项集,筛选去掉低于支持度的候选2项集,得到频繁2项集。如此迭代下去,直到无法找到频繁k+1集为止,对应的频繁k项集的集合便是算法的输出结果。我们可以通过下面例子来看到具体迭代过程。
数据集包含4条记录{‘134’,‘235’,‘1235’,‘25’},我们利用Apriori算法来寻找频繁k项集,最小支持度设置为50%。首先生成候选1项集,共包含五个数据{‘1’,‘2’,‘3’,‘4’,‘5’},计算5个数据的支持度,然后对低于支持度的数据进行剪枝。其中数据{4}支持度为25%,低于最小支持度,进行剪枝处理,最终频繁1项集为{‘1’,‘2’,‘3’,‘5’}。根据频繁1项集连接得到候选2项集{‘12’,‘13’,‘15’,‘23’,‘25’,‘35’},其中数据{‘12’,‘15’}低于最低支持度,进行剪枝处理,得到频繁2项集为{‘13’,‘23’,‘25’,‘35’}。如此迭代下去,最终能够得到频繁3项集{‘235’},由于数据无法再进行连接,算法至此结束。
3.Apriori算法流程
从Apriori算法原理中我们能够总结如下算法流程,其中输入数据为数据集合D和最小支持度α,输出数据为最大的频繁k项集。
- 扫描数据集,得到所有出现过的数据,作为候选1项集。
- 挖掘频繁k项集。
- 扫描计算候选k项集的支持度。
- 剪枝去掉候选k项集中支持度低于最小支持度α的数据集,得到频繁k项集。如果频繁k项集为空,则返回频繁k-1项集的集合作为算法结果,算法结束。如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束。
- 基于频繁k项集,连接生成候选k+1项集。
- 利用步骤2,迭代得到k=k+1项集结果。
4.Apriori算法优缺点
4.1优点
- 适合稀疏数据集。
- 算法原理简单,易实现。
- 适合事务数据库的关联规则挖掘。
4.2缺点
- 可能产生庞大的候选集。
- 算法需多次遍历数据集,算法效率低,耗时。
5.推广
更多内容请关注公众号谓之小一,若有疑问可在公众号后台提问,随时回答,欢迎关注,内容转载请注明出处。
参考
刘建平Pinard-Apriori算法原理总结
机器学习之Apriori算法相关推荐
- 【机器学习】Apriori 算法进行关联分析和FP-growth算法
[机器学习]Apriori 算法进行关联分析和FP-growth算法 文章目录 1 关联分析 2 FP-growth算法理解和实现 3 FP增长算法的频繁项集产生 4 FP-Growth关联分析算法在 ...
- 机器学习——使用Apriori算法进行关联分析
从大规模的数据集中寻找隐含关系被称作为关联分析(association analysis)或者关联规则学习(association rule learning). Apriori算法 优点:易编码实现 ...
- 啤酒与尿布?挖掘商品之间的关联性分析(1):机器学习之Apriori算法
从这个贸易战看:强权即是真理,没有所谓的自由贸易和平等.中国之大已容不下一个安静的键盘.不过是又一次鸦片战争.除了愤怒还是愤怒,除了一心想为崛起而澎湃还是一心想为崛起而澎湃.中华文明三四千年的历史都是 ...
- Apriori 算法原理以及python实现详解
Apriori 算法原理以及python实现 Apriori算法是第一个关联规则挖掘算法,也是最经典的算法.它利用逐层搜索的迭代方法找出数据库中项集的关系,以形成规则,其过程由连接(类矩阵运算)与 ...
- 关联规则挖掘--Apriori算法
关联规则挖掘--Apriori算法 1.关联规则概述 2.置信度.支持度.提升度的概念 3.关联规则挖掘问题 4.Apriori算法 4.1 算法步骤 4.2 先验原理 4.3 寻找最大频繁项的过程 ...
- 机器学习-关联之Apriori算法原理及实战
Apriori算法 前言 关联分析是一种无监督的机器学习方法,主要用于发现大规模数据集中事物之间的依存性和关联性.挖掘数据中隐藏的有价值的关系(如频繁项集.关联规则),有利于对相关事物进行预测,也能帮 ...
- 机器学习(八)Apriori算法学习
Apriori算法学习 原文地址:http://blog.csdn.net/hjimce/article/details/45438507 作者:hjimce 本文主要是我学习<机器学习实战&g ...
- apriori算法代码_资源 | 《机器学习实战》及代码(基于Python3)
〇.<机器学习实战> 今天推荐给大家的是<机器学习实战>这本书. 机器学习作为人工智能研究领域中一个极其重要的研究方向(一文章看懂人工智能.机器学习和深度学习),在当下极其热门 ...
- [机器学习]关联挖掘算法Apriori和FP-Growth以及基于Spark 实例
目录 Apriori 算法 FP-Growth算法 算法原理 步骤1 统计各个商品被购买的频次 步骤2 构建FP树 步骤3 频繁项的挖掘 阅读本文需要了解关联挖掘的基本知识,了解关联挖掘的基本原理,参 ...
最新文章
- ubuntu安装mysql 密码忘了怎么办_在ubuntu上面安装mysql都密码忘记及一些常用命令...
- IKE phase 2
- gets scanf以及缓冲区域的问题
- we need to have frequent contact for relationships for transferring from aca to career
- Angr 初体验之探索口令
- postgres 支持的线程数_线程池被打满了怎么处理呢,你是否真的了解线程池?
- Project testing plan
- 判断一个整数是否是回文数
- Vue3.0的有优点有哪些?它比vue2快在哪?
- 瑜伽扭身祈祷式动作教程
- mysql 存储session
- SSM框架整合_1MyBatis搭建
- pr抖音转场 300个做视频用的剪辑素材pr转场包含音效
- [4G+5G专题-132]: 传输层 - 以太网电缆的类型(Cat5,Cat5e,Cat6,Cat6a)
- 适合长期电脑办公人群的养生小技巧
- 计算机专业梦想作文,我的理想是电脑工程师作文
- 第三章 项目立项管理
- 读书笔记:Mysql实战45讲 (1-10讲)
- Datatables 隐藏列
- 北漂那么多程序员,到了35岁以后该怎么选择往后的路?