文章目录

  • 一、 问题背景与意义:
  • 二、 问题定义
  • 三、 经典的关联规则挖掘算法
    • 3.1 层次算法
      • 3.1.1 Apriori算法描述
      • 3.1.2 FP-Growth算法
    • 3.2 图挖掘算法
    • 3.3 并行算法
    • 3.4 数据流算法
    • 3.5 序列算法
  • 四、 关联规则的应用
  • 五、 总结与展望
  • 六、 参考文献

一、 问题背景与意义:

数据挖掘作为一种从数据中获取信息的有效方法,越来越受到人们的重视。其中,关联规则挖掘首先被用来发现购物篮数据事务中项目之间的有趣联系。此后,关联规则成为数据挖掘领域的一个重要研究方向,广泛应用于医学、金融、互联网等多个领域。

随着大数据时代的到来,数据的收集和存储愈加重要,许多场景也对从数据中挖掘出频繁模式有着愈加迫切的需求,比如从大量商务事务记录中发现有价值的相关模式,可以为分类设计、交叉销售和顾客购买习惯分析等许多商务决策过程提供帮助。因此,关联规则算法的研究十分具有现实意义。

1993年,Agrawal 首次突出了关联规则概念,随后给出了关联规则挖掘问题描述和相应的挖掘算法。1994 年,Agrawal 等人建立了项目集格空间理论,提出了著名的 Apriori 算法[1],目前该算法已经成为关联规则挖掘的经典算法。1995年Park 等人[2]提出了一种基于散列( hash) 技术产生频繁项集的算法同年基于划分( partition) 的算法[3]也被提出,克服了 Apriori 算法 I /O 开销大的瓶颈。针对数据库中数据量大、扫描数据库次数多的问题,Toivonen[4]提出了基于采样思想的 Sampling 关联规则算法;之后Han 等人[5]提出了一种不产生候选集的发现频繁项集的挖掘方法 FP-growth,大大提升了算法的效率,成为又一里程碑式的工作。之后随着关联规则处理的数据量呈现指数级的增长,分布式的算法逐渐成为主流,Agrawal 等人[6]提出了CD、DD及CaD三种并行算法。基于DIC思想,Cheung 等人[7]提出了APM并行算法。针对 DD 算法效率低下的问题,Han等[8]引入了 IDD、HD 算法。由于新需求数据流累关联规则挖掘算法应运而生,Giannella 等人[9]提出的 FP-stream 频繁项集挖掘算法是数据流挖掘的经典算法。图的广泛应用使得研究者将其引入关联规则挖掘,针对基于Apriori思想的算法产生大量候选子图的缺点,出现了基于 FP-growth 的频繁子图挖掘算法gSpan、FFSM、closeGraph。Agrawal 和 Strikant 也提出了序列模式挖掘的概念,提出了经典的水平格式的类 Apriori 算法 GSP[10],和基于垂直格式的序列模式算法 SPADE[11]。

二、 问题定义

规则的支持度support和置信度confidence是规则兴趣度的两种度量。它们分别反映所发现规则的有用性和确定性。

项的集合称为项集。包含k个项的项集称为k项集。项集的出现频度是包含项集的事务数,简称为项集的频度、支持度计数或计数。如果项集I的支持度满足预定义的最小支持度阈值,则I是频繁项集。则有:

一般而言,关联规则的挖掘是一个两步的过程:
(1) 找出所有的频繁项集:根据定义,这些项集的每一个频繁出现的次数至少与预定义的最小支持度min_sup一样;
(2) 由频繁项集产生强关联规则:根据定义,这些规则必须满足最小支持度min_sup和最小置信度min_con。

三、 经典的关联规则挖掘算法

关联规则挖掘算法根据其实现原理大致可以分为层次算法、图搜索算法、并行算法,下面本文将分别对其进行介绍,并简述其中较为经典的挖掘算法。

3.1 层次算法

按照关联规则中涉及到的变量的层次可以把关联规则分为单层关联规则和多层关联规则。单层关联规则只涉及数据的一个维度;而多层关联规则要处理多维数据,涉及多个变量。其中Apriori算法是该系列算法的开山代表之作。

3.1.1 Apriori算法描述

Apriori经典关联规则挖掘算法基于两个核心理论: 频繁项集的子集是频繁项集; 非频繁项集的超集是非频繁项集。其核心思想如下图1所示[1]:

图1
即首先,找出频繁1项集的集合,该集合记作L1,然后由L1经过连接步和剪枝步得到L2,再由L2经过连接步和剪枝步得到L3,如此循环下去,直到不能找到频繁k项集。每找一层均需要进行一次数据库扫描。最后,利用频繁项集构造出满足用户最小置信度的规则。挖掘和识别出所有频繁项集是该算法的核心,占整个计算量的大部分。

a) Apriori算法分析
可以看出,Apriori算法有两个致命的瓶颈:第一是可能在算法执行过程中产生庞大的候选项目集,这大大增加了算法的时空复杂度。第二是需要多次扫描数据库,造成大量的I/O操作,耗时耗力。
当然,Apriori算法在数据集比较稀疏时候,频繁集长度较短时候还是具有很好的性能的。

b) Apriori算法的改进
虽然Apriori算法自身已经进行了一定的优化,但是在实际的应用中,还是存在不令人满意的地方,于是人们相继在其基础上提出了一些优化的方法。

i)数据库划分改进

ii)数据采样改进
Toivonen[4]提出了基于采样思想的 Sampling关联规则算法,该方法首先用从数据库 中抽取采样数据 得到一些在整个数据库中可能成立的规则,然后对数据库的剩余部分验证这个结果。
抽样技术可以快速实现频繁项集的挖掘,但由于Sampling 算法利用随机抽样法进行采样,容易造成数据扭曲问题,导致样本数据库挖掘结果与数据库D 挖掘结果误差增大。

3.1.2 FP-Growth算法

a)算法描述
针对Apriori算法的固有缺陷,Han等人提出了一个称为FP-Growth的算法[5]。它是不产生候选集而直接生成频繁集的频繁模式增长算法,该方法在经过第一遍扫描之后,把数据库中的频繁项目集压缩进一棵频繁模式树(FP-Tree),同时依然保留其中的关联信息。然后再将FP-Tree分化成一些条件库,每个库和S个长度为l的频繁项目集相关,然后再对这些条件库递归地进行挖掘。该算法的步骤大致如下所示:
(1)按Apriori算法,扫描数据库一次生成1频繁集,并把它们按降序排列,放入L表中。
(2)创建根节点,并标记为null,扫描数据库一次,当得到数据库的一个项目集时,就把其中的元素按L表的次序排列,然后递归调用FP-Growth来实现FP-Tree增长。
(3)迭代重复(1)和(2),直到树包含一个元素项为止。

b)算法性能分析
算法中存储信息的FP-Tree保证了数据信息的完整性,而且FP-Growth算法在运行过程中只需要进行两次数据库扫描,而且不用生成候选集,相较于Apriori大大降低了时空复杂度。
但是构建FP-Tree这个数据结构本身也会消耗时间和内存,如果这个树很大,对于算法来说也是得不偿失的。

3.2 图挖掘算法

图挖掘是指将关联分析用于基于图的数据,在图的集合中发现一组公共子结构,即频繁子图挖掘。gSpan算法是图挖掘邻域的一个算法,而作为子图挖掘算法,又是其他图挖掘算法的基础,可见gSpan算法在图挖掘算法中的重要性。其算法流程如下:
1、遍历所有的图,计算出所有的边和点的频度。
2、将频度与最小支持度数做比较,移除不频繁的边和点。
3、重新将剩下的点和边按照频度进行排序,将他们的排名号给边和点进行重新标号。
4、再次计算每条边的频度,计算完后,然后初始化每条边,并且进行此边的subMining()挖掘过程。

3.3 并行算法

基于 DIC 思 想,Cheung 等 人[7] 提 出了 APM 并 行 算 法, APM 采用全局剪枝技术约减候选 2-项集,这在数据分布不均时十分有效。首先把数据库转化成布尔矩阵,根据要求的k项频繁项集来对矩阵进行裁减,然后用待生成的k-项集设计的匹配矩阵对裁减后的布尔矩阵进行运算产生与匹配矩阵对应的频繁 k-项集。APM 算法流程如下图2所示:

图2

3.4 数据流算法

不同于传统的静态数据库模型,数据流是在线联机产生的,其具有连续、无界、无序的特征。因此,基于数据流的关联规则挖掘不能采用以往多次扫描数据的形式,而应随着数据更新进行单次扫描。为了适应数据流的特征,解决存储空间不足的问题,一般通过滑动窗口技术对数据流作区域性限制进行窗口查询。
Giannella 等人[9]提出的 FP-stream 频繁项集挖掘算法是数据流挖掘的经典算法,它将倾斜时间窗口表嵌入到基于内存的频繁和亚频繁序列信息频繁模式树(pattern-tree) 中,挖掘出具有近似支持度的时间敏感频繁模式,并实现多时间粒度的频繁模式增量维护。根据概念“频繁闭项集提供一种不丢失支持 度信息的最小表示”,可以对频繁闭项集挖掘,这样在时间和空间的复杂性上提高了挖掘效率。

3.5 序列算法

Agrawal和Strikant最早提出了序列模式挖掘的概念,即从序列数据库中挖掘满足最小支持度的频繁子序列的过程。序列模式挖掘不同于关联规则挖掘项集属性内部的联系,它主要研究项集之间的联系。
序列模式挖掘较为经典的是类Apriori算法GSP,它的基本思路如下:
1、长度为1的序列模式 ,作为初始的种子集;
2、根据长度为i的种子集 ,通过连接操作和剪切操作生成长度为i+1的候选序列模式,然后扫描数据库,计算每个候选序列模式的支持度,产生长度为i+1的序列模式并作为新的种子集。
3、重复第二步,直到没有新的序列模式或新的候选序列模式产生为止。

四、 关联规则的应用

关联规则挖掘是数据挖掘领域的重要技术,是继贝叶斯、支持向量机等方法之后的又一项重要的分类技术,随着相关算法研究日渐成熟,被广泛应用于文本分类、医学图像分类、农业病虫防治、蛋白质结构预测、网络入侵检测等领域,并取得了喜人的成效。

五、 总结与展望

综上所述,本文给出了关联规则挖掘的学术定义,并在回顾前人在关联规则挖掘算法研究的基础上,将算法按照原理大致分为5类,在每类中重点介绍了其中较为经典的一两种算法,并进行对比分析。
关联分析算法带给人们便利的同时也存在诸多不足。比如一些关联度很大的A、B事物之间也有可能是负相关的事物,从整体看才发现原来买A之前B的销售额更多,这就需要关联算法更加智能化和专业化,结合当下炙手可热的AI技术是一个不错的研究方向。
关联规则挖掘经过长期的研究与发展,已在频繁模式挖掘算法的设计及优化方面日趋成熟,广泛应用于互联网、金融、生物信息等领域。但该领域在未来研究的方向是仍具有挑战性的工作;设计更高效的挖掘算法;实现用户与挖掘系统的交互,开发易于理解的可视化界面; 结合特殊领域完善扩展型挖掘算法,实现与其它系统的集成,如周期模式挖掘等; 拓展关联规则的应用领域。

六、 参考文献

[1] Agrawal R,Srikant R. Fast algorithms for mining association rules [C]/ /Proc of International Conference on Very Large Databases. 1994: 487-499.
[2] Park J S,Chen M S,Yu P S. An effective hash-based algorithm for mining association rules[J]. SIGMOD Record,1995,25( 2) : 175- 186.
[3] Savasere A,Omiecinski E,Navathe S. An efficient algorithm for mining association rules in large databases[C]/ /Proc of the 21st International Conference on Very Large Databases. 1995.
[4] Toivonen H. Sampling large databases for association rules[C]/ /Proc of the 22nd International Conference on Very Large Databases. 1996
[5] Han Jiawei,Pei Jian,Yin Yiwen. Mining frequent patterns without candidate generation[C]/ /Proc of ACM SIGMOD International Conference on Management of Data. New York: ACM Press,2000: 1-12.
[6] Agrawal R,Shafer J. Parallel mining of association rules[J]. IEEE Trans on Knowledge and Data Engeering,1996,8( 6) : 962-969
[7] Cheung D W,Han J,Ng V,et al. A fast distributed algorithm for mining association rules[C]/ /Proc of International Conference on Parallel and Distributed Information Systems. 1996: 31-44.
[8] Han E S,Karypis G,Kumar V. Scalable parallel data mining for association rules[C]/ /Proc of ACM SIGMOD International Conference on Management of Data. New York: ACM Press,1997: 277-288.
[9] Giannella C,Han Jiawei,Pei Jian,et al. Mining frequent patterns in data streams at multiple time granularities[J]. Next Generation Data Mining,2006,35( 1) : 61-84.
[10] Srikant R,Agrawal R. Mining sequential patterns: generalizations and performance improvements[C]/ /Proc of the 5th International Conference on Extending Data Base Technology. 1996: 3-17.
[11] Zaki M J. SPADE: an efficient algorithm for mining frequent sequences [J]. Machine Learning,2001,42( 1) : 31-60.

关联规则挖掘算法研究相关推荐

  1. 关联规则挖掘算法综述

    转载自:http://www.cnblogs.com/witxjp/archive/2003/09/23/1986213.html 摘  要  本文介绍了关联规则的基本概念和分类方法,列举了一些关联规 ...

  2. Apriori关联规则挖掘算法函数

    假设有以下<超市商品购买.txt>数据集,每行代表一个顾客在超市的购买记录: I1: 西红柿.排骨.鸡蛋.毛巾.水果刀 I2: 西红柿.茄子.水果刀.香蕉 I3: 鸡蛋.袜子.毛巾.肥皂. ...

  3. 关联规则挖掘算法_关联规则的挖掘与应用——Apriori和CBA算法

    文|光大科技大数据部  魏乐 卢格润 1  关联规则 1.1 关联规则基本概念 1.2 Apriori算法基本思路 2  关联分类 2.1  CBA关联分类算法思路 2.2  CBA算法实现 总结 关 ...

  4. 关联规则挖掘算法_#数据挖掘初体验 使用weka做关联规则

    这学期选了数据挖掘课,前两节课刚好都没有去上课.照着教程练习一下课程内容... prepare 下载软件weka,根据系统选择版本,个人使用版本"a disk image for OS X ...

  5. 【机器学习】关联规则挖掘算法 + 三大案例实战 + Apriori算法 + Python代码实现

    文章目录 一.关联规则概述 1.1 关联规则引入 1.2 关联规则相关概念介绍 1.2.1 样本.事务.项集.规则 1.2.2 支持度.置信度 1.2.3 提升度 1.2.4 所有指标的公式 二.Py ...

  6. 关联规则挖掘算法: Aprior算法和Fpgrowth算法

      关联规则挖掘的目的是挖掘不同物品(item)之前的相关性,啤酒和尿布的故事就是一个典型的成功例子.关联规则挖掘思想简单高效,在广告推荐领域也有较多的应用,主要用于推荐模型落地前的流量探索以及构建规 ...

  7. 数据挖掘从入门到放弃(四):手撕(绘)关联规则挖掘算法

    友情提示:篇幅较长.多图(手绘),请备好流量. 前面我们讨论了线性回归.逻辑回归.决策树和朴素贝叶斯等,今天我们来看什么呢? 关联规则简介 关联规则挖掘可以让我们从数据集中发现项与项之间的关系,它在我 ...

  8. 关联规则挖掘算法_数据挖掘 | 关联规则分析

    1 Introduction 1.1 Problem 频繁模式是频繁出现在数据集中的模式,对于数据分类.聚类.和其他数据挖掘任务有极大的帮助,频繁模式的挖掘成为了一项重要的数据挖掘任务和数据挖掘关注的 ...

  9. 关联规则挖掘算法_基于Apriori关联规则的协同过滤算法

    Apriori 算法 apriori关联规则算法的原理设计较为简单,著名的"啤酒和尿布"说的就是Apriori算法,通俗来讲apriori旨在寻找频繁项集,以帮助商家将消费者有可能 ...

最新文章

  1. websohere 替换单独文件_postman教程-16-如何读取外部文件实现数据参数化
  2. sublime中文输入(转)
  3. 具有CompletableFuture的异步超时
  4. [vue] 在移动端使用vue,你觉得最佳实践有哪些?
  5. 前端学习(2225):react之类定义组件
  6. 《天天数学》连载46:二月十五日
  7. ddx_check绑定注意事项
  8. php 开发环境配置,开发环境配置
  9. 基于嵌入式操作系统VxWorks的多任务并发程序设计(5)――中断与任务
  10. 2021扬州市高考成绩查询,2021高考成绩查询系统登录官网入口
  11. 类成员函数可以返回该类的实例吗_关于类的理解
  12. 【MATLAB】修改黑色炫酷主题darcula.prf
  13. 初中计算机表格知识点,初中信息技术考试知识点.doc
  14. 软件配置--ubuntu16.04
  15. java中ssm框架介绍_JavaSSM框架简介
  16. CentOS 7.5 安装Nginx教程
  17. 开启电脑自带的远程控制
  18. 2014ACM亚洲区域北京邀请赛总结
  19. VSFTPD搭建过程记录
  20. 小爬虫sitemap网站seo优化(黄梦岚)

热门文章

  1. python面向对象编程从零开始_Python面向对象编程从零开始(4)—— 小姐姐请客下篇
  2. Linux---fork函数和exec函数
  3. cad制图坐标系转换为地理坐标系
  4. 2021新人学习UI设计如何快速入门?
  5. Android Studio的ADV无法启动解决办法
  6. 计算机网络mooc测验2
  7. Oracle插入数据每5000条提交一次
  8. adb java_java环境变量配置和adb的配置教程详解
  9. [Unity Shader]凌波微步效果
  10. C语言实现快速排序法(分治法)