数据挖掘算法-Apriori Algorithm(关联规则)
http://www.cnblogs.com/jingwhale/p/4618351.html
Apriori algorithm是关联规则里一项基本算法。是由Rakesh Agrawal和Ramakrishnan Srikant两位博士在1994年提出的关联规则挖掘算法。关联规则的目的就是在一个数据集中找出项与项之间的关系,也被称为购物蓝分析 (Market Basket analysis),因为“购物蓝分析”很贴切的表达了适用该算法情景中的一个子集。
关于这个算法有一个非常有名的故事:"尿布和啤酒"。故事是这样的:美国的妇女们经常会嘱咐她们的丈夫下班后为孩子买尿布,而丈夫在买完尿布后又要顺 手买回自己爱喝的啤酒,因此啤酒和尿布在一起被购买的机会很多。这个举措使尿布和啤酒的销量双双增加,并一直为众商家所津津乐道。
一.一些概念和定义
1.定义1 项目与项集
设I={i1,i2,…,im}是m个不同项目的集合,每个ik(k=1,2,……,m)称为一个项目(Item)。
项目的集合 I 称为项目集合(Itemset),简称为项集。其元素个数称为项集的长度,长度为k的项集称为k-项集(k-Itemset)。
2.定义2 交易
每笔交易T(Transaction)是项集I上的一个子集,即TI,但通常T
I。
对应每一个交易有一个唯一的标识——交易号,记作TID
交易的全体构成了交易数据库D,或称交易记录集D,简称交易集D。
交易集D中包含交易的个数记为|D|。
3.定义3 项集的支持度
对于项集X,XI,设定count(X
T)为交易集D中包含X的交易的数量
项集X的支持度support(X)就是项集X出现的概率,从而描述了X的重要性。
4.定义4 项集的最小支持度与频繁集
发现关联规则要求项集必须满足的最小支持阈值,称为项集的最小支持度(Minimum Support),记为supmin。
支持度大于或等于supmin的项集称为频繁项集,简称频繁集,反之则称为非频繁集。
通常k-项集如果满足supmin,称为k-频繁集,记作Lk 。
5.定义5 关联规则
关联规则(Association Rule)可以表示为一个蕴含式:
其中:。
例如:R:牛奶→面包
6.定义6 关联规则的支持度
规则R的的支持度(Support)是交易集中同时包含X和Y的交易数与所有交易数之比。
例如:在5条记录中,既有橙汁又有可乐的记录有2条。则此条规则的支持度为 2/5=0.4,即Support(A-〉B)=P(AB)。
7.定义7 关联规则的置信度
规则R的置信度(Confidence)是指包含X和Y的交易数与包含X的交易数之比
例如:计算“如果Orange则Coke”的置信度。由于在含有“橙汁”的4条交易中,仅有2条交易含有“可乐”。其置信度为0.5。
8.定义8 关联规则的最小支持度和最小置信度
关联规则的最小支持度也就是衡量频繁集的最小支持度(Minimum Support),记为supmin,它用于衡量规则需要满足的最低重要性。
关联规则的最小置信度(Minimum Confidence)记为confmin,它表示关联规则需要满足的最低可靠性。
9.定义9 强关联规则
,称关联规则X=》Y为强关联规则,否则称关联规则X=》Y为弱关联规则。
在挖掘关联规则时,产生的关联规则要经过supmin和confmin的衡量,筛选出来的强关联规则才能用于指导商家的决策。
10.候选集(Candidate itemset):通过向下合并得出的项集。定义为C[k]。
11.频繁集(Frequent itemset):支持度大于等于特定的最小支持度(Minimum Support/minsup)的项集。表示为L[k]。注意,频繁集的子集一定是频繁集。
12.提升比率(提升度Lift):lift(X -> Y) = lift(Y -> X) = conf(X -> Y)/supp(Y) = conf(Y -> X)/supp(X) = P(X and Y)/(P(X)P(Y))
经过关联规则分析后,针对某些人推销(根据某规则)比盲目推销(一般来说是整个数据)的比率,这个比率越高越好,我们称这个规则为强规则;
13.剪枝步:只有当子集都是频繁集的候选集才是频繁集,这个筛选的过程就是剪枝步。
二.Apriori Algorithm(关联规则)算法动态演示(点击下载ppt观看)
三.Apriori Algorithm(关联规则)算法描述
Apriori 算法采用的方法为:首先产生频繁 1-项集 L1,然后用 L1经过自连接、剪枝生成 L2,频繁 2-项集 L2又用来生成 L3,以此类推,逐层迭代,直到无法产生新的频繁项集为止。然后根据给定的最小可信度,利用生成的频繁项集产生关联规则。
1.产生频繁项集 该过程可以通过以下步骤实现:
1) 第一阶段,所有单独的项都是候选项集 C1。任何支持度值比给定的最小支持度值小的项都将从候选项集 C1中剔除,形成频繁 1-项集 L1。
2) 两个 L1通过自连接形成具有 2 个项的候选项集 C2。通过再次扫描数据库决定这些候选项的支持度。保留比预先给定的最小支持度大的候选项,形成频繁 2-项集L2。
3) 下一步形成含有 3 个项的候选项集 C3,重复上述步骤,直到找到所有的频繁项集为止。
Apriori 算法的伪码描述如下所示:
输入:数据集 D,min_sup
输出:D 中的频繁项集 L
2.产生关联规则
从事务数据库 D 中挖掘出频繁所有的频繁项集后,就可以比较容易的获得相应的关联规则,即满足可信度min_conf 的频繁项集产生强关联规则。由于规则是由频繁项集产生,所以每个规则自动满足 min_sup。
在用频繁项 X 生成关联的伪码如下:
输入:Yk,Lk,min_conf
输出:形如 X=》Y 的关联规则
数据挖掘算法-Apriori Algorithm(关联规则)的更多相关文章
- 先验算法(Apriori algorithm) - 机器学习算法
Apriori is an algorithm for frequent item set mining and association rule learning over transactiona ...
- 数据挖掘算法——Apriori
在上一篇数据挖掘入门算法整理中提到,Apriori算法是关联规则算法中使用最为广泛的算法,这次我们就来学习下该算法的基本知识. 一.算法概述 Apriori 算法是一种最有影响力的挖掘布尔关联规则的频 ...
- 数据挖掘算法——Apriori算法
Apriori算法 首先,Apriori算法是关联规则挖掘中很基础也很经典的一个算法. 转载来自:链接:https://www.jianshu.com/p/26d61b83492e 所以做如下补充: ...
- 数据挖掘算法之-关联规则挖掘(Association Rule)(购物篮分析)
在各种数据挖掘算法中,关联规则挖掘算是比較重要的一种,尤其是受购物篮分析的影响,关联规则被应用到非常多实际业务中,本文对关联规则挖掘做一个小的总结. 首先,和聚类算法一样,关联规则挖掘属于无监督学习方 ...
- 关联规则算法(The Apriori algorithm)详解
一.前言 在学习The Apriori algorithm算法时,参考了多篇博客和一篇论文,尽管这些都是很优秀的文章,但是并没有一篇文章详解了算法的整个流程,故整理多篇文章,并加入自己的一些注解,有了 ...
- 数据挖掘算法之关联规则挖掘(一)apriori算法
关联规则挖掘算法在生活中的应用处处可见,几乎在各个电子商务网站上都可以看到其应用 举个简单的例子 如当当网,在你浏览一本书的时候,可以在页面中看到一些套餐推荐,本书+有关系的书1+有关系的书2+... ...
- 【十大经典数据挖掘算法】Apriori
[十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 关联分析 关联分析是一类非常有 ...
- 数据挖掘算法之-关联规则挖掘(Association Rule)
在数据挖掘的知识模式中,关联规则模式是比较重要的一种.关联规则的概念由Agrawal.Imielinski.Swami 提出,是数据中一种简单但很实用的规则.关联规则模式属于描述型模式,发现关联规则的 ...
- 详解十大经典数据挖掘算法之——Apriori
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第19篇文章,我们来看经典的Apriori算法. Apriori算法号称是十大数据挖掘算法之一,在大数据时代威风无两,哪 ...
随机推荐
- C语言基础(不断更新)
1.memcpy. memmove.memccpy的区别 字符串函数功能查询 memcpy要求源串和目的串不能重叠 memccpy:copy直至遇到由参数指定的ch. memmove: 源串和目的串可 ...
- mysql基础知识(4)--修改
修改表: 一般概述 通常,创建一个表,能搞定(做到)的事情,修改表也能做到.大体来说,就可以做到: 增删改字段: 增:alter table 表名 add [column] 字段名 字段类 ...
- SQL 脚本
1.USE语句 USE语句用于设置当前数据库,如果没有USE语句,那么就由执行脚本的任何用户来确定执行脚本时当前数据库是正确的.如果只是一个通用脚本,那么省去USE语句实际上可能更有益.通常,如果在脚 ...
- ArcObjects10.0MapControl不显示地图内容
添加MapControl控件,右键属性设置MXD 文档之后,运行显示一片空白.拖放另一个控件axLicenseControl之后OK.
- 理解js闭包(一)
@(编程) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. ...
- POJ3630Phone List(字典树)
经典的字典树的题目了,这次完全是按照自己的风格来写的,没有参考其他人的代码风格来写. 分析:如果采用常规的暴力枚举,那么复杂度就是O(n*n*str.length) = O(10^9),这明显是会超时 ...
- AcceptEx编辑
Windows套接字AcceptEx函数接受一个新的连接,返回本地和远程地址,并接收由客户端应用程序发送的第一块数据.Windows 95/98不支持AcceptEx函数. 平台SDK:Windows ...
- 汇编语言程序入门实验二:在dos下建立子目录操作
汇编语言程序入门实验二:在dos下建立子目录操作 1,背景 在读此文,并读懂前,建议读者先阅读这两篇博客 1,在dos环境下汇编语言程序设计入门(输出hello world)和masm32的下载.安装 ...
- 给js function的参数设置默认值
C# 中 function func(a,b=1){//具体方法} js 中 function func(a,b){ a= arguments[0] || 10; b= arguments[1] || ...
- canvas加载gif
http://ernestdelgado.com/public-tests/gifoncanvas/ <!DOCTYPE html><html><head> < ...