前言:

Apriori算法是关联规则挖掘经典算法,但不适合在大型数据库中挖掘关联规则,时间太慢,许多学者提出了改进的算法。比如DHP算法。

DHP

1. 减少候选集数量

  • 背景:这个操作是基于Ck来做的,我们知道原来的话,Ck的得到是通过L(k-1)*L(1)笛卡尔积连接,去掉k-1项集得到。同时,我们也知道其实Ck还是有很多都不是频繁项集。
    现在的目标就是:扫描一遍数据库,将Ck候选集的数量留下1/2(当然这只是为了形象化,不一定是1/2)。
    要知道,原来的化,假设Ck中有10个候选集,原来是要对每一个候选集扫描一遍数据库,然后统计次数的,也就是要10遍扫描,浪费了时间。而现在将次数降低到1+5=6次。这么神奇,如何做到?
  • 做法:
    以对减少C2数量为例。数据库如下表。
    算法的条件为:最小支持度为2。哈希函数为:h{ {x,y} }= ((order of x)*10+order of y) )mod 7 。
    你可以构造其他的的Hash 函数,但是一个较好的Hash 函数能减少冲突。这里为了方便说明DHP 算法的执行过程,取的哈希函数比较简单。对应地,数据库D 中包含的项为A 、B 、C 、D 、E ,其中order of A 为1 ,order of C 为3 。


为C2建立用于快速统计的哈希表H2 。建表的方法是:对读取的每行事务根据要构造的候选集合的长度进行组合分解。例如,为构造候选2-项目集C2 而建立H2时,将数据库分解,如表2 所示。对于每一个2项集分别代入哈希函数,根据算得的哈希值填写哈希表。例如,对于2-项目集{B, D} , 带入哈希函数得:h{ {B ,D} }=((order of B)10 十(order of D) )mod 7= (210 十4)mod 7=3 。在经历上表中19个2项集的分别计算后,得到下面的表。比如{B,E}的hash的是4,上面19个里面算出来4的就只有{B,E},所以元素个数为1。

而实际上,上面的表只是为了我们理解,在计算机里面的表其实只是一个位向量(6,2,0,6,1,0,4)。然后根据支持度是否小于2变为:(1,1,0,1,0,0,1)。其中0表示支持度小于2。
下面可以开始缩减C2数量了,我们知道C2最开始L1L1之后应该为:{ {A ,B} , {A ,C } ,{A ,D} ,{A ,E} {B ,C} , {B ,D} ,{B ,E}, {C ,D } , {C ,E} , {D , E } },一共10项。
接下来,我们把这10项依次带入hash,比如hash(A,B)=5,然后根据(1,1,0,1,0,0,1),可以知道,其为0,即不是频繁2项集,删除。
这样10次之后,只留下了{ {A ,C} , {A ,D } ,{A ,E} , {B ,D } , {C ,D } , {C ,E} , {D , E } },只留下了7项。至此,hash表H2的作用已经没了。
延申,如果你可以做一个更大的hash表,使得原来的10项2项集都有一个不一样的hash取值。那么只需要扫描一趟数据库,生成一个hash表,直接就可以得到最终的L2。
2. 减小项的数量
背景:如果原来共有5个项{A,B,C,D,E},现在得到了L1={{A},{B},{C},{D},{E}},L2={ {A ,E },{A,D} , {C ,D } ,{C,E} },接下来,按照流程,我们应该做的是L2
L1生成候选集C3。现在目标:
我们不需要将L2与L1中的所有项都连接。比如L2不需要连接B。
为什么?因为假设L3中含有B,比如xBy,我们可以推出,L2中一定有{xB},{By},{xy}。即L2中至少要出现两次B,而我们的L2中1次也没有。
做法
根据上述思路,我们可以通过观察L2得到项的出现次数:
a[0]=2,a[1]=0,a[2]=2,a[3]=2,a[4]=2
由于需要在L2出现2次以上的项才有可能在C3中出现,从而排除1,也就是B。我们L11={A,C,D,E},我们生成C3的时候应该为L2*L11。
进一步处理
根据上面的数组,发现有刚好出现2次的,
以D为例,从这里我们可以推断:
如果L3里面有D的话,一定是{A,D}+{C,D}={A,C,D}。反过来,若{A,C,D}在L3中,{A,C}必然在L2中,我们观察我们的L2,并不在,所以可以直接排除D。这样我们的L11又变小了。
3.标记无需扫描交易记录
如果我们发现一个交易记录不包含Lk中的任意一个k项集,那么可以把这个交易记录标记为0,以后扫描数据库的时候直接跳过。
原理:不包含Lk中的任意一个k项集,将不可能包含频繁k+1项集。

数据挖掘关联规则挖掘改进算法DHP相关推荐

  1. 【数据挖掘】关联规则挖掘 Apriori 算法 ( Apriori 算法过程 | Apriori 算法示例 )

    文章目录 一. Apriori 算法过程 二. Apriori 算法示例 参考博客 : [数据挖掘]关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 Transaction ...

  2. 【数据挖掘】关联规则挖掘 Apriori 算法 ( 关联规则性质 | 非频繁项集超集性质 | 频繁项集子集性质 | 项集与超集支持度性质 )

    文章目录 一. 非频繁项集超集性质 二. 频繁项集子集性质 三. 项集与超集支持度性质 参考博客 : [数据挖掘]关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 Trans ...

  3. 【数据挖掘】关联规则挖掘 Apriori 算法 ( 频繁项集 | 非频繁项集 | 强关联规则 | 弱关联规则 | 发现关联规则 )

    文章目录 一. 频繁项集 二. 非频繁项集 三. 强关联规则 四. 弱关联规则 五. 发现关联规则 参考博客 : [数据挖掘]关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 ...

  4. 【数据挖掘】关联规则挖掘 Apriori 算法 ( 关联规则 | 数据项支持度 | 关联规则支持度 )

    文章目录 一. 关联规则 二. 数据项支持度 三. 关联规则支持度 参考博客 : [数据挖掘]关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 Transaction 概念 ...

  5. 【数据挖掘】关联规则挖掘 Apriori 算法 ( 置信度 | 置信度示例 )

    文章目录 一. 置信度 二. 置信度 示例 参考博客 : [数据挖掘]关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 Transaction 概念 | 项 Item 概念 ...

  6. 关联规则挖掘——Apriori算法的基本原理以及改进

    问题引入 关联规则挖掘发现大量数据中项集之间有趣的关联或者相互联系.关联规则挖掘的一个典型例子就是购物篮分析,该过程通过发现顾客放入其购物篮中不同商品之间的联系,分析出顾客的购买习惯,通过了解哪些商品 ...

  7. 数据分享|R语言关联规则挖掘apriori算法挖掘评估汽车性能数据

    全文链接:http://tecdat.cn/?p=32092 我们一般把一件事情发生,对另一件事情也会产生影响的关系叫做关联.而关联分析就是在大量数据中发现项集之间有趣的关联和相关联系(形如" ...

  8. 数据挖掘-序列模式挖掘-prefixspan算法(样例)

    数据挖掘-序列模式挖掘-prefixspan算法(样例) ' 所有结果: 通俗来讲:可以以1-频繁项d为例,我们的思路讲解的很明白:这儿我们一般化我们的求解过程: 1)第一次扫描原始数据库,得到长度为 ...

  9. 关联规则挖掘--Apriori算法

    关联规则挖掘--Apriori算法 1.关联规则概述 2.置信度.支持度.提升度的概念 3.关联规则挖掘问题 4.Apriori算法 4.1 算法步骤 4.2 先验原理 4.3 寻找最大频繁项的过程 ...

最新文章

  1. echarts图表第一个案例
  2. 计算未来轻沙龙 | 当深度学习遇上归纳推理,图神经网络有多强大?
  3. [PyJs系列介绍]三、编译与上线
  4. CSS基础语法(三) CSS的6种特性
  5. 中国涉5.9亿份简历信息泄露
  6. 金山云和金山办公均成功上市 雷军揭秘背后原因
  7. JQuery实现radio、select、checkbox禁用
  8. Python简单GUI(录音机)
  9. 安装Vmware虚拟机弹出此安装程序不支持降级解决办法
  10. DailyWallpaper v1.02 released
  11. python如何把控制台输出保存到文件中_如何用10行代码完成目标检测
  12. PicoDet网络结构在YOLOv5-Lite上的复现
  13. c语言求栈长度程序,数据结构C语言实现之顺序栈
  14. 关于站内搜索的那些事儿
  15. word流程图变为图片格式_图片如何转换成word?新手小白几步就学会了
  16. 应用二 stm32使用esp8266进行串口wifi通信
  17. 2022最新阿里云域名注册和续费优惠口令及使用方法
  18. Spring【Bean的作用域与生命周期】
  19. Tomcat 环境变量
  20. web项目web接入微信登录

热门文章

  1. CoGAN pytorch
  2. 实践操作:六步教你如何用开源框架Tensorflow对象检测API构建一个玩具检测器
  3. 抓取了1400家科技公司的招聘信息,我发现数据工程师比数据科学家更有市场
  4. 独家 | 手把手教你组织数据科学项目!(附代码)
  5. 匿名发差评被判赔3272元,北京研究生遭遇冲上热搜,涉事机构回应:暂不澄清...
  6. 太有缘!和同专业师兄同名同姓同年同月同日生还是同导师是什么体验?
  7. 【Python】一文读懂Python正则表达式常用用法
  8. 英伟达CEO黄仁勋获芯片行业最高荣誉:他颠覆了计算!
  9. 华为诺亚加法网络再升级:精度提升,可以逼近任意函数
  10. 在2020年到来之前,你应该知道的十大科技趋势预测