购物篮模型&Apriori算法
一、频繁项集
若I是一个项集,I的支持度指包含I的购物篮数目,若I的支持度>=S,则称I是频繁项集。其中,S是支持度阈值。
1、应用
- “尿布和啤酒”
- 关联概念:寻找多篇文章中共同的词汇集合。项->词,购物篮->文档
- 文档抄袭:寻找多个购物篮中共同出现的项对,同一个项对出现在越多的购物篮中,其相似度越高。项->文档,购物篮->句子
2、关联规则
I->j 如果I中所有项出现在某个购物篮的话,那么j“有可能”也出现在这一购物篮中。
I->j的可行度:集合I与{j}补集的支持度与I的支持度的比值。
在实际应用中,购物篮规模和频繁项集太大,故任何算法的主要开销时间都集中在将购物篮从磁盘读入内存这个过程。
- 对n个项集组成的购物篮而言,大小为k的所有子集的生成时间约为n(k)/k!(最终该时间会超过数据从磁盘传输的时间).
- 通常只需要较小的频繁项集,所以k永远不会超过2或者3。
- 当确实需要一个更大的k的项集时,往往可以去掉每个购物篮中不太可能会成为频繁项的那些项,从而保证k增长的同时n却下降。
3、项集计数中内存使用
若项集是字符串或其他,可以以从1到n的连续整数来表示,整数码与项一一对应:用一个哈希表将项的表现形式换成整数。即每次在文件中看到一个项,就对它进行哈希。若该项存在,则可以获得其整数码;若不存在,就将下一个可用的数字赋给它,并将项极其整数码放入哈希表中。
4、三角矩阵方法
假设i<j,且仅使用二维数组a中的元素a[i,j]来存放计数结果,这种策略会使数组的一半元素都没有用,故使用一个一维的三角数组。此时,{i,j}对应元素a[k],其中1<=i<=j<=n,k=(i-1)(n-i/2)+j-i.
5、三元组方法
将计数值以三元组[i,j,c]的方式来存储,即{i,j}对的计数值为c(其中i<j).可以采用类似哈希表的数据结构,其中i和j是搜索键值,以此确定对于给定的i和j是否存在对应的三元组。
- 若某个项对的计数值为0,则三元组方式不一定需要存储某个值。
- 三元组方式对每个出现在购物篮中的项对都会存储三个而不是一个整数。
如果在所有可能出现的项对中至少有1/3出现在购物篮的情况下,三角矩阵方式更优;而若出现的比例显著小于1/3,就要考虑使用三元组方式。
6、项集的单调性
- 如果项集I是频繁的,那么其所有的子集都是频繁的;
- 如果一个项集的超集不再是频繁的,则称该项集最大(这里的最大频繁项集不是指所含项个数最多的频繁项集,不要弄错了,最大频繁项集不是唯一的,可能有很多个)。
- 最大频繁项集的所有子集都是频繁的;
- 除最大频繁项集的子集之外,其它集合都是不频繁的。
二、A-Priori算法
A-Priori相关算法:避免对所有的三元组或更大的集合计数,集中考虑计算频繁二元组的算法。A-Priori算法通过对数据做两遍扫描来减少必须计数的项对数目。
1、第一遍扫描
- 建立两张表:第一张表将项的名称转换为1到n之间的整数;另一张表则是一个计数数组,第i个数组元素是上述第i个项的出现次数,初始值为0.
- 读取购物篮时,检查购物篮中的每个项并将其名称转换为一个整数,将改整数作为计数数组的下标找到对应的数组元素,最后,对该数组元素加1.
2、两遍扫描之间的处理
只给频繁项重新编号,编号范围是1到m.此时的表格是一个下标为1到n的数组,如果第i项不频繁,则对应的第i个数组元素为0,否则为1到m之间一个唯一的整数。该表格称为频繁项集表格。
3、第二遍扫描
在第二遍扫描之后,对两个频繁项组成的所有项对计数。
- 第二遍扫描所需的空间是2m*m字节。
- 如果要使用一个大小正确的三角矩阵,那要注意只对频繁项进行重新编号处理。
第二遍扫描具体细节如下:
1、对每个购物篮,在频繁项集表中检查哪些项是频繁的;
2、通过一个双重循环生成所有的频繁项对;
3、对某个频繁项对,在存储计数值的数据结构中相应的计数值上加1;
最后,在第二遍扫描结束时,检查计数值结构以确定哪些项对是频繁项对。
三、所有频繁项集上的A-Priori算法
从某个集合大小k到下一个大小k+1的转移模式:
对于每个集合大小k,存在两个频繁项集的集合:
- Ck大小为k的候选项集集合,即必须要通过计算来确定到底是否真正频繁的项集组成的集合。
- Lk大小为k的真正频繁的项集集合。

购物篮模型&Apriori算法的更多相关文章
- Apriori算法在购物篮分析中的运用
购物篮分析是一个很经典的数据挖掘案例,运用到了Apriori算法.下面从网上下载的一超市某月份的数据库,利用Apriori算法进行管理分析.例子使用Python+MongoDB 处理过程1 数据建模( ...
- 数据挖掘算法之-关联规则挖掘(Association Rule)(购物篮分析)
在各种数据挖掘算法中,关联规则挖掘算是比較重要的一种,尤其是受购物篮分析的影响,关联规则被应用到非常多实际业务中,本文对关联规则挖掘做一个小的总结. 首先,和聚类算法一样,关联规则挖掘属于无监督学习方 ...
- 关联规则之Aprior算法(购物篮分析)
0.支持度与置信度 <mahout实战>与<机器学习实战>一起该买的记录数占所有商品记录总数的比例——支持度(整体) 买了<mahout实战>与<机器学习实战 ...
- 购物篮算法的理解-基于R的应用
是无监督机器学习方法,用于知识发现,而非预测,无需事先对训练数据进行打标签,因为无监督学习没有训练这个步骤.缺点是很难对关联规则学习器进行模型评估,一般都可以通过肉眼观测结果是否合理. 一,概念术语 ...
- 数据算法 --hadoop/spark数据处理技巧 --(5.移动平均 6. 数据挖掘之购物篮分析MBA)
五.移动平均 多个连续周期的时间序列数据平均值(按相同时间间隔得到的观察值,如每小时一次或每天一次)称为移动平均.之所以称之为移动,是因为随着新的时间序列数据的到来,要不断重新计算这个平均值,由于会删 ...
- 基于Hadoop的改进Apriori算法
一.Apriori算法性质 性质一: 候选的k元组集合Ck中,任意k-1个项组成的集合都来自于Lk. 性质二: 若k维数据项目集X={i1,i2,-,ik}中至少存在一个j∈X,使得|L(k-1)(j ...
- 关联规则挖掘算法之Apriori算法
Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集. 关于这个算法有一个非常有名的故事:"尿布和啤酒".故事是 ...
- 数据挖掘:关联规则的apriori算法在weka的源码分析
相对于机器学习,关联规则的apriori算法更偏向于数据挖掘. 1) 测试文档中调用weka的关联规则apriori算法,如下 try { File file = new File("F:\ ...
- Apriori算法的原理与python 实现。
前言:这是一个老故事, 但每次看总是能从中想到点什么.在一家超市里,有一个有趣的现象:尿布和啤酒赫然摆在一起出售.但是这个奇怪的举措却使尿布和啤酒的销量双双增加了.这不是一个笑话,而是发生在美国沃尔玛 ...
随机推荐
- django学习——url的name
html中的地址可以用写死的,也可以用生成的,如:<a href="{% url 'app-url' param1 param2 ... %}">link</a& ...
- 创建 github 仓库
1. 创建入口 在右上角找到 “+” 然后,选择 “New repository” 进行创建. 2. 填入信息 输入名字和描述 . 选择 “Initialize this repository wit ...
- cf734 E. Anton and Tree
这个题的题意还是很劲的.搞了好久才知道是怎么变得. (假设已经缩好了点,每次边中间颜色不同的,然后和就和他外面的相同,继续再变这个大的,依次类推,最多就是树的直径D/2) (还是英语水平太弱了(吐槽+ ...
- JS 工具 构建工具
1.gruntjs http://www.gruntjs.net/ 2.bootstrap http://www.bootcss.com/ 3.
- endnote X7使用方法
网页版的endnote不能添加新模版,只能用模版库里的那些,所以转而试试离线版客户端. 1.下载安装完以后(下载地址就不给了,网上有很多),在word里可以看到顶栏有插件,如果你同时也安装了在线版本, ...
- Webx3学习笔记(2)——基本流程
Webx3项目是运行在jetty/tomcat这种Web应用容器中的,Web应用的模式都是请求-响应的.一个请求通过浏览器发出,封装为HTTP报文到达服务端,被容器接受到,封装为HttpRequest ...
- JSP EL表达式 获得 request的GET/POST方法
JSP EL表达式 获得 request的GET/POST方法: 不在requestScopse中: <p>得到request的方法</p> <p>pageCont ...
- Ninja介绍
什么是Ninja 在Unix/Linux下通常使用Makefile来控制代码的编译,但是Makefile对于比较大的项目有时候会比较慢,看看上面那副漫画,代码在编译都变成了程序员放松的借口了.所以这个 ...
- 关于MATSIM中,如何关闭自动加载dtd的问题
有用过MATSIM做交通仿真的朋友应该都知道,在创建Scenario时,会默认加载matsim官网的netword的dtd文件,然后因为网络的问题,加载往往会报错,从而造成系统异常退出,如图所示: 根 ...
- Dev的WPF控件与VS2012不兼容问题
在只有vs2010环境下Dev的wpf可以在视图模式下显示,但是安装vs2012后无法打开界面的视图模式,报错:无法创建控件实例! 发现是Dev的wpf控件与.net framework 4.5不兼容 ...