2017-12-02 14:27:18

一、术语

Items:项,简记I

Transaction:所有项的一个非空子集,简记T

Dataset:Transaction的一个集合,简记D

关联规则:

一个Dataset的例子:

我们的目的就是找到类似买了面包->黄油这样的关联关系。

二、支持度与置信度

  • 支持度

支持度就是相应的Item或者ItemSet在Dataset中出现的频率:

比如上图的D中的支持度为:

从这个图中我们可以看到一般来说支持度是单调不增的,也就是说,随着商品的增加,支持度是会减小的。

另外,类似X->Y这种购买了X又购买了Y的支持度就是这两者同时购买的频率:

  • 置信度

关联规则X->Y的置信度就是T中包含X,Y的交易数目比上单独出现X的交易数目。

也可以理解为条件概率

举个例子:

一般来说会给出支持度和置信度的一个下限,也就是规定了支持度和置信度要高于某个阈值才表示当前的规则是有效的:

所以一个关联规则的问题就是:

一个简单的思想就是首先找到所有的频繁项,然后对频繁项中的数据进行排列组合找出其中符合条件的规则。但是这种暴力检索的方式是非常麻烦的,主要问题就是排列组合的过程中的算法的复杂度会达到指数级。

三、Apriori算法

我们必须设法降低产生频繁项集的计算复杂度。此时我们可以利用支持度对候选项集进行剪枝。

Apriori定律1:如果一个集合是频繁项集,则它的所有子集都是频繁项集。

Apriori定律2:如果一个集合不是频繁项集,则它的所有超集都不是频繁项集。

举个例子:

下图表示当我们发现{A,B}是非频繁集时,就代表所有包含它的超级也是非频繁的,即可以将它们都剪除。

算法的具体步骤:

关键的步骤是如何生成Ck+1;

通过上述的算法就可以生成一个Ck+1,算法的步骤是前k-1项相同,第k项不同,将不同的项合并就可以生成一个k+1的C。不过这种算法也会有出错的时候比如:

证明该种生成算法有效的过程如下:

举个例子:

一个更具体的例子如下:

保留了所有的频繁集之后再来进行计算置信度:

这里需要警惕的是,P(X|Y)<=P(X)的时候,这条关联规则就没有什么作用。

四、序列模式

序列是前后有一定关系的元素的列表。

子序列的概念:

注意,这里的子序列中的前后是有顺序的概念的,也就说,子序列中2在3前面,那么在原序列中也应该是这个顺序。

序列中的支持度:

     

序列的组合要更为复杂:

那么这里就需要一种新的生成算法:

关联规则&Apriori算法的更多相关文章

  1. Python两步实现关联规则Apriori算法,参考机器学习实战,包括频繁项集的构建以及关联规则的挖掘

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  2. 一步步教你轻松学关联规则Apriori算法

    一步步教你轻松学关联规则Apriori算法 (白宁超 2018年10月22日09:51:05) 摘要:先验算法(Apriori Algorithm)是关联规则学习的经典算法之一,常常应用在商业等诸多领 ...

  3. 详细介绍关联规则Apriori算法及实现

    看了很多博客,关于关联规则的介绍想做一个详细的汇总:  一.概念                                                                     ...

  4. python实现简单关联规则Apriori算法

    from itertools import combinations from copy import deepcopy # 导入数据,并剔除支持度计数小于min_support的1项集 def lo ...

  5. 数据挖掘:关联规则的apriori算法在weka的源码分析

    相对于机器学习,关联规则的apriori算法更偏向于数据挖掘. 1) 测试文档中调用weka的关联规则apriori算法,如下 try { File file = new File("F:\ ...

  6. 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:非hash方法

    http://blog.csdn.net/pipisorry/article/details/48914067 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  7. 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:基于hash的方法

    http://blog.csdn.net/pipisorry/article/details/48901217 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  8. 关联规则挖掘之apriori算法

    前言: 众所周知,关联规则挖掘是数据挖掘中重要的一部分,如著名的啤酒和尿布的问题.今天要学习的是经典的关联规则挖掘算法--Apriori算法 一.算法的基本原理 由k项频繁集去导出k+1项频繁集. 二 ...

  9. 关联规则—频繁项集Apriori算法

    频繁模式和对应的关联或相关规则在一定程度上刻画了属性条件与类标号之间的有趣联系,因此将关联规则挖掘用于分类也会产生比较好的效果.关联规则就是在给定训练项集上频繁出现的项集与项集之间的一种紧密的联系.其 ...

随机推荐

  1. pycharm 和 Anaconda 下的 opencv 安装

    学习真的切忌三天打鱼两天晒网!! 一开始python下的opencv已经都弄好了,中间电脑坏了一次,好久没有接触这个,就全部都忘完了.深感惋惜. 今天又从新安装了一下opencv.在anaconda下 ...

  2. hibernate基于注解实现映射关系的配置

    关联关系的配置步骤 ①要理清楚管理关系 ②确定管理依赖关系的哪一方 1一对一例如:person 和IdCard ①确定依赖关系:一对一 ②依赖关系由person类管理代码如下: person: @En ...

  3. Jenkins之构建执行脚本权限问题

    Jenkins需要执行的脚本不在本机需要ssh免密码登陆到远程主机执行 Jenkins部署机ip地址为192.168.56.12 需要远程执行脚本的主机为192.168.56.11 设置好密钥可以使用 ...

  4. angular $http服务详解

    它是对原生XMLHttpRequest对象的简单封装, 这个方法会返回一个promise对象,具有sccess和error两个方法. 当然,我们也可以在响应返回时用then 方法来处理,会得到一个特殊 ...

  5. Centos6与Centos7的区别

    前言 centos7与6之间最大的差别就是初始化技术的不同,7采用的初始化技术是Systemd,并行的运行方式,除了这一点之外,服务启动.开机启动文件.网络命令方面等等,都说6有所不同.让我们先来了解 ...

  6. scrapy爬虫系列之五--CrawlSpider的使用

    功能点:CrawlSpider的基本使用 爬取网站:保监会 主要代码: cf.py # -*- coding: utf-8 -*- import scrapy from scrapy.linkextr ...

  7. 前端调用后端的方法(基于restful接口的mvc架构)

    1.前端调用后台: 建议用你熟悉的一门服务端程序,例如ASP,PHP,JSP,C#这些都可以,然后把需要的数据从数据库中获得,回传给客户端浏览器(其实一般就是写到HTML中,或者生成XML文件)然后在 ...

  8. 利用GridView实现单选效果

    1.实现如图所示的单选效果 由于Android提供的单选按钮radiobutton只能单行或单列显示,且样式并不美观,故可用GridView进行改造,实现单选效果,而要实现这样的效果重点就在GridV ...

  9. SQL Server查看库、表占用空间大小

    转自:https://blog.csdn.net/yenange/article/details/50493580 查询数据文件与日志文件占用情况,查看数据大小,查看库大小 1. 查看数据文件占用(权 ...

  10. 2018 Multi-University Training Contest 6 Solution

    A - oval-and-rectangle 题意:给出一个椭圆的a 和 b,在$[0, b]中随机选择c$ 使得四个顶点在椭圆上构成一个矩形,求矩形周长期望 思路:求出每种矩形的周长,除以b(积分) ...