精华内容
下载资源
问答
  • 鉴于此, 提出一种新的关联规则挖掘框架, 利用常量化表示布尔数据的时间属性, 结合聚类算法关联分析, 提高规则的支持度, 从而解决布尔时间序列数据在关联规则挖掘中的时间值表示问题, 并使用多种指标评价规则与...
  • 关联规则挖掘序列模式挖掘的Apriori算法,介绍了关联规则和序列模式的基本概念,Apriori算法的思想和伪代码,挖掘频繁项集的例子。
  • 关联规则挖掘研究中,为了在产生候选频繁项时减少算法存在的重复计算和冗余候选项,为了在计算支持数时减少扫描事务数据库的次数,提出了一种基于序列数的关联规则挖掘算法,其关联规则适合挖掘任何长度该算法用...
  • 继续数据挖掘方面算法的讲解,前面讲解了数据挖掘关联规则算法FP-Growth的实现。此篇博文主要讲解基于有趣性度量标准的GSP序列模式挖掘算法。有关论文后期进行补充。实现思路与前面优化的FP-Growth算法一致,首先...

    数据挖掘进阶之序列模式挖掘GSP算法

          继续数据挖掘方面算法的讲解,前面讲解了数据挖掘中关联规则算法FP-Growth的实现。此篇博文主要讲解基于有趣性度量标准的GSP序列模式挖掘算法。有关论文后期进行补充。实现思路与前面优化的FP-Growth算法一致,首先实现简单的GSP算法,通过认真阅读源码,在理解的基础之上进行优化。优化后的算法将在性能方面与原算法进行对比,以此突出此算法的优良性能。下面进行简要介绍:

    原理介绍

          GSP算法是一种非常有效的序列模式挖掘算法,该算法使用一种称作为逐层搜索的迭代方法,首先找出频繁1-序列模式的集合F1,F1用于寻找频繁2-序列模式F2,F2用于寻找频繁3-序列模式、F3...,如此下去,直到不能找到频繁序列模式为止。

       F1 = the set of frequent 1-sequence

       k=2,

       do while F(k-1)!= Null;

           Generate candidate sets Ck (set of candidate k-sequences);

               For all input sequences s in the database D

                   do

               Increment count of all a in Ck if s supports a

               Fk = {a ∈ Ck such that its frequency exceeds the threshold}

                   k= k+1;

               Result = Set of all frequent sequences is the union of all Fks

                   End do

       End do

          GSP需要多次扫描序列数据库,在第一次扫描中,对所有的单个项目(1—序列模式)进行计数。利用频繁1—序列模式生成候选频繁2—序列模式,进行第二次扫描并求候选频繁2—序列模式的支持数。使用频繁2—序列模式生成候选频繁3—序列模式,重复以上过程,直到找出所有的频繁序列模式。

     算法实现

           本算法采用Java实现,主要根据序列模式的情况,序列模式挖掘中共涉及到3个对象:序列元素项目。算法共有5个类:

    GSP类:算法核心类,GSP算法的核心操作:连接剪枝操作都在这里实现。在使用该算法时,也是需要通过使用该类的方法来实现GSP算法。

    Sequence类:序列类,该类封装了序列的基本信息和基本操作,实现了对序列间的比较以及序列中的项目集操作。

    Element类:元素类,在序列模式中元素也就是项目集,项目集中包含了项目。在本算法实现中,元素类中含有一个项目集属性,用于表示项目集,在使用时也是使用该属性来表示项目集,另外,在该类中还封装了对项目的操作以及一些其他操作。

    SeqDB类:该类用于从数据库中扫描获取序列,本算法主要用于模拟实现,所以在程序中已经初始化了序列。

    GSPTest类:测试类,使用JUnit对算法进行单元测试,本文附的代码只含有对于实现GSP算法的方法测试。

          具体源码请参考博文“序列模式分析算法GSP的实现”。

    展开全文
  • 一种很不错的Apriori改进算法,并从时间和空间效率上对算法进行了分析。
  • 文章目录一、 问题背景与意义:二、 问题定义三、 经典的关联规则挖掘算法四、 关联规则的应用五、 总结与展望六、 参考文献 一、 问题背景与意义: 数据挖掘作为一种从数据中获取信息的有效方法,越来越受到人们的...

    一、 问题背景与意义:

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

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

    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.

    展开全文
  • 综合社区与关联序列挖掘的电子政务推荐算法
  • 综合社区与关联序列挖掘的电子政务推荐算法.pdf
  • 关联规则挖掘算法

    千次阅读 2018-08-31 20:06:08
    关联规则挖掘是一种基于规则的机器学习算法,该算法可以在大数据库中发现感兴趣的关系。它的目的是利用一些度量指标来分辨数据库中存在的强规则。也即是说关联规则挖掘是用于知识发现,而非预测,所以是属于无监督的...

    关联规则挖掘是一种基于规则的机器学习算法,该算法可以在大数据库中发现感兴趣的关系。它的目的是利用一些度量指标来分辨数据库中存在的强规则。也即是说关联规则挖掘是用于知识发现,而非预测,所以是属于无监督的机器学习方法。

    “尿布与啤酒”是一个典型的关联规则挖掘的例子,沃尔玛为了能够准确了解顾客在其门店的购买习惯,对其顾客的购物行为进行购物篮分析,想知道顾客经常一起购买的商品有哪些。沃尔玛利用所有用户的历史购物信息来进行挖掘分析,一个意外的发现是:"跟尿布一起购买最多的商品竟是啤酒!

    关联规则挖掘算法不仅被应用于购物篮分析,还被广泛的应用于网页浏览偏好挖掘,入侵检测,连续生产和生物信息学领域。

    与序列挖掘算法不同的是,传统的关联规则挖掘算法通常不考虑事务内或者事件之间的顺序

    支持度和置信度

    那么我们如何能够从所有可能规则的集合中选择感兴趣的规则呢?需要利用一些度量方法来筛选和过滤,比较有名的度量方法是最小支持度(minimum support)最小置信度(minimum confidence)

    假定我们一个数据库包含5条事务,每行表示一个购物记录,1 表示购买,0 表示没有购买,如下图表格所示:

    ID | milk | bread | butter | beer | diapers
    ----|------|------|------|----
    1 | 1| 1 | 0 | 0 | 0
    2| 0| 0| 1| 0| 0
    3| 0| 0| 0| 1| 1
    4| 1| 1| 1| 0| 0
    5| 0| 1| 0| 0| 0

    让 X,Y 各表示为一个 item-set, X ⇒ Y 表示为一条规则(尿布 ⇒ 啤酒 就是一条规则),用 T 表示为事务数据库(并不是说只局限于事务数据库)。

    支持度(Support)

    支持度表示 item-set 在整个 T 中出现的频率。假定 T 中含有 N 条数据,那么支持度的计算公式为:

    譬如在上面的示例数据库中,{beer, diaper} 的支持度为 1/5 = 0.2。5 条事务中只有一条事务同事包含 beer和 diaper ,实际使用中我们会设置一个最低的支持度(minimum support),那些大于或等于最低支持度的 X 称之为频繁的 item-set 。

    置信度(Confidence)

    置信度表示为规则 X ⇒ Y 在整个 T 中出现的频率。而置信度的值表示的意思是在包含了 X 的条件下,还含有 Y 的事务占总事务的比例。同样假定 T 中含有 N 条数据,那么置信度的计算公式为:

    譬如再上面的示例数据库中,{beer, diaper} 的置信度为 0.2/0.2 = 1。表面在所有包含 beer 的事务中都会一定包含 diaper。同样的,在实际使用中我们会设置一个最低置信度,那些大于或等于最小置信度的规则我们称之为是有意义的规则。

    相关性度量

    有时候使用支持度和置信度挖掘到的规则可能是无效的。

    举个例子:

    10000 个事务中, 6000 个事务包含计算机游戏, 7500 个包含游戏机游戏, 4000 个事务同时包含两者。关联规则(计算机游戏 ⇒ 游戏机游戏) 支持度为 0.4 ,看似很高,但其实这个关联规则是一个误导。在用户购买了计算机游戏后有 (4000÷6000) = 0.667 的概率的去购买游戏机游戏,而在没有任何前提条件时,用户反而有 (7500÷10000) = 0.75的概率去购买游戏机游戏,也就是说设置了购买计算机游戏这样的前置条件反而会降低用户去购买游戏机游戏的概率,所以计算机游戏和游戏机游戏是相斥的,也即表明是独立的。

    因此我们可以通过下面的一些相关性度量方法来筛选挖掘到的规则。

    提升度(Lift)

    提升度可以用来判断规则 X ⇒ Y 中的 X 和 Y 是否独立,如果独立,那么这个规则是无效的。

    计算提升度的公式如下:

    如果该值等于 1 ,说明两个条件没有任何关联。如果小于 1 ,说明 X 与 Y 是负相关的关系,意味着一个出现可能导致另外一个不出现。大于 1 才表示具有正相关的关系。一般在数据挖掘中当提升度大于 3 时,我们才承认挖掘出的关联规则是有价值的。

    他可以用来评估一个出现提升另外一个出现的程度。

    提升度是一种比较简单的判断手法,实际中受零事务(也即不包含 X 也不包含 Y 的事务)的影响比较大。所以如果数据中含有的零事务数量较大,该度量则不合适使用。

    全置信度 和 最大置信度

    给定两个项集 X 和 Y ,其全置信度为

    不难知道,最大置信度为

    全置信度和最大置信度的取值都是从 0 ~ 1 ,值越大,联系越大。

    该度量是不受零事务影响的。

    KULC 度量 + 不平衡比(IR)

    给定两个项集 X 和 Y,其 Kulczynski(Kulc) 度量定义为:

    可以看做是两个置信度的平均值,同样取值也是从 0 ~ 1,值越大,联系越大,关系越大。

    该度量同样也是不受零事务影响的。

    Apriori 算法

    在执行算法之前,用户需要先给定最小的支持度和最小的置信度。
    生成关联规则一般被划分为如下两个步骤:
    1、利用最小支持度从数据库中找到频繁项集。

    给定一个数据库 D ,寻找频繁项集流程如下图所示

    频繁项集的流程示意图

    C1 中 {1} 的支持度为 2/4 = 0.5 表示在 D 中的 4 条事务中,{1} 出现在其中的两条事务中,以后几个步骤的支持度计算方式也是类似的。假定给定的最小支持度为 0.5,那么最后我们可以得到一个包含 3 个项的频繁项集 {2 3 5}。

    另外,从图中我们可以看到 itemset 中所包含的 item 是从 1 增长到 3 的。并且每次增长都是利用上一个 itemset 中满足支持度的 item 来生成的,这个过程称之为候选集生成(candidate generation)。譬如说 C2 里就不包含 C1 中的 4 。

    2、利用最小置信度从频繁项集中找到关联规则。

    同样假定最小的置信度为 0.5 ,从频繁项集 {2 3 5} 中我们可以发现规则 {2 3} ⇒ {5} 的置信度为 1 > 0.5 ,所以我们可以说 {2 3} ⇒ {5} 是一个可能感兴趣的规则。

    从第一步中我们看出每次计算支持度都需要扫描数据库,这会造成很大的 I/O 开销,所以有很多变种的算法都会在该问题上进行优化(FP-Growth)。此外如何有效的生成候选集也是很多变种算法优化的问题之一(Apriori-all)。

    总结

    • 关联规则是无监督的学习算法,能够很好的用于知识的发现。
    • 缺点是很难严重算法的有效性,一般只能够通过肉眼观察结果是否合理。



    作者:曾梓华
    链接:https://www.jianshu.com/p/7d459ace31ab
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • 针对不等长序列数据的关联问题, 提出基于滑动窗口的最优匹配增权法不等长序列相似度度量算法. 以较短序列作为滑动窗口遍历较长序列得到一组滑动相似度, 利用这组相似度形成最优权重, 加权得到不等长序列的相似度, 并...
  • 针对目前时态关联规则研究中存在的挖掘效率不高、规则可解释性低、未考虑项集时间关联关系等问题,在原有相关研究的基础上,提出一种新的基于频繁项集树的时态关联规则挖掘算法.通过对时间序列数据进行降维离散化处理,...
  • MAHOUT之关联规则挖掘算法

    千次阅读 2015-09-06 22:42:51
    期望从已有的数据中挖掘出类似购物篮的关联规则,但是单机环境下的关联规则算法实在是无法胜任大数据环境下的数据挖掘工作,无奈寻求大数据环境下的分布式挖掘算法,目前可供选用的关联规则挖掘算法有Apriori和fp-...

    需求说明

    目前正在对hive表中的数据做分析,期望从已有的数据中挖掘出类似购物篮的关联规则,但是单机环境下的关联规则算法实在是无法胜任大数据环境下的数据挖掘工作,无奈寻求大数据环境下的分布式挖掘算法,目前可供选用的关联规则挖掘算法有Apriori和fp-tree两种,前者较后者来说,当挖掘过万的记录时,效率上更是百倍的差距,所以选择mahout中提供的fpgrowth算法来实现关联规则挖掘。

    准备工作

    为了配合hive中的数据表完成挖掘工作,这里需要安装的工具主要有:
    1)hadoop平台,若想深入了解mapreduce的开发原理,可以参考Helloworld案例;
    2)hive工具,建议使用textfile格式来存储数据,方便mahout直接在hdfs下调用数据;
    3)mahout 0.9版本及之前(注,之后的版本不提供关联规则的挖掘算法,但是0.9版会与hadoop2.2及以上版本存在不兼容的现象),有关FP-TREE算法的原理可以参考该博文
    可观察mahout的jar包中是否提供了FPGrowthDriver类,若有,则是可以直接使用的。

    关联规则使用

    1)从hive中获取数据,进行数据ETL过程,最终输入数据格式为(每行一条购物记录,可用任何分隔符分割):

    4750,19394,25651,6395,5592
    26180,10895,24571,23295,20578,27791,2729,8637
    7380,18805,25086,19048,3190,21995,10908,12576
    3458,12426,20578
    1880,10702,1731,5185,18575,28967
    21815,10872,18730
    20626,17921,28930,14580,2891,11080
    18075,6548,28759,17133
    7868,15200,13494
    7868,28617,18097,22999,16323,8637,7045,25733
    12189,8816,22950,18465,13258,27791,20979
    26728
    17512,14821,18741
    26619,14470,21899,6731

    2)利用mahout提供的方式执行命令:

    mahout org.apache.mahout.fpm.pfpgrowth.FPGrowthDriver -i input/* -o output -method mapreduce -regex ‘[,|\t| ]’ -s 10

    参数说明:
    -i 输入路径,由于运行在hadoop环境中,所以输入路径必须是hdfs路径,这里需要指出文件名,所示多个,则可以用*代表input目录下的所有文件。
    这里写图片描述

    挖囧结果

    最终运行的结果如下图所示,会产生四个文件夹,其中,挖掘的关联结果在frequentpatterns文件夹下
    这里写图片描述

    其中:flist是一个文件,按降序排列存储了单个项出现的频次(频次大于支持度),fpgrowth存储的是按频繁树获取的频繁项集(没有经过整理吧),frequentpatterns则是我们需要的经过排序合并后的频繁项集(每一个单项都有),最后一个文件夹和flist记录的内容差不多,包括低于支持度的项的统计(貌似也有单项统计的)。
    由于mahout的结果是sequencefile格式存储,所以需要mahout提供的seqdumper方法将序列文件转化成文本文件查看,可使用命令为:

    mahout seqdumper -i output/frequentpatterns/part-r-00000 -o output -q

    注:这里的-o命令若不加以说明,则是将hdfs上的结果存储到本地目录路径上,-q表示将不存储除数据以外的其他文本信息。

    展开全文
  • {面包(mianbao)、尿布(niaobu)},{牛奶(niunai)},牛奶和尿布的首写字母一样,可以继续比较第二位都是i,再比较第三位u在a后面,以此类推,然后长度短放后面等等,即将集合通过某种方式进行序列化。...
  • 目录 关联规则挖掘介绍 Apriori算法介绍 FP-growth算法介绍 强规则关联与相关分析 什么是关联规则挖掘? 关联规则挖掘: 从事务数据库,关系数据库和其他信息存储中的大 量数据的项集之间发现有趣的频繁出现的模式 关联...
  • 针对 Apriori 关联规则挖掘算法在计算频繁项集时需要生成大量的候选项集且多次扫描数据库的问题以及布尔矩阵关联规则挖掘算法在计算频繁项集过程中具有计算速度快和内存占用率低等特点 , 但在计算频繁项集之前未对...
  • Apriori算法时经典的挖掘频繁项集的算法,第一次实现了再大数据集上可行的关联规则提取,其核心思想是通过连接产生候选项与其支持度,然后通过剪枝生成频繁项集。 1.关联规则的一般方式 项...
  • 关联规则挖掘算法就是从事务数据库,关系数据库或其他信息存储中的大量数据的项集之间发现频繁出现的模式、关联和相关性。关联算法在科学数据分析、雷达信号分选、分类设计、捆绑销售、生物信息学、医疗诊断及网页...
  • 序列模式挖掘算法之PrefixSpan

    千次阅读 2019-06-19 09:47:47
    序列模式挖掘算法之PrefixSpanPrefixSpan 配套代码地址http://download.csdn.net/download/u012202808/9961002本文从基本的概念和例子入手,最后通过讲解代码来解释PrefixSpan算法序列模式挖掘简介 序列模式...
  • 关联规则--Apriori算法部分讨论的关联模式概念都强调同时出现关系,而忽略数据中的序列信息(时间/空间): 时间序列:顾客购买产品X,很可能在一段时间内购买产品Y; 空间序列:在某个点发现了现象A,很可能在下...
  • 挖掘告警序列关联规则的算法都受到最小支持度的限制,仅能够得到频繁告警序列间的关联规则。对此,提出了一种以高相关度、高置信度为条件,通过聚类找到特征相同的网元告警群,然后基于相关度统计的挖掘算法。实验...
  • 关联规则挖掘使用基于有趣性度量标准的FP-Growth算法序列模式挖掘使用基于有趣性度量标准的GSP算法。若想实现以上优化算法,首先必须了解其基本算法,并编程实现。关键点还是在于理解算法思想,只有懂得
  • 序列模式挖掘算法

    2020-01-02 22:49:28
    题目:下面有关序列模式挖掘算法的描述,错误的是?   AprioriAll算法和GSP算法都属于Apriori类算法,都要产生大量的候选序列   FreeSpan算法和PrefixSpan算法不生成大量的候选序列以及不需要反...
  • 在研究已有算法的基础上提出了一种频繁序列挖掘算法IDSG.该算法通过在频繁项(而不是频繁项集,即无需先求出所有频繁项集)间建立关联图,并在垂直数据库表达的基础上,借助简单的时态连接得到频繁序列完全集.整个过程只...
  • 算法衍生过程Leung等提出的一种基于树结构所改进的算法:CANTree(canonical-order tree),这种...在CanTree中,项是根据某种序列排序的,这种序列可以由用户在挖掘过程之前或者挖掘过程中决定。 1.CanTree的构建首先
  • 序列挖掘算法比较

    千次阅读 2016-09-13 16:26:57
    AprioriAll算法属于Apriori类算法,其基本思想为首先遍历序列数据库生成候选序列并利用Apriori性质进行剪枝得到频繁序列。 GSP(generalized sequential pattern)算法是AprioriAll算法的扩展算法,不同在于GSP...
  • 序列模式挖掘——GSP算法

    千次阅读 2016-09-01 20:29:31
    序列模式挖掘的基本概念 项目全集I、项集X和事务集合T的概念和文章关联规则挖掘——Apriori算法 中定义的一致。一个序列(Sequence)是一个有序的项集列表,这个有序通常是指时间有序。
  • 关联规则挖掘算法在生活中的应用处处可见,几乎在各个电子商务网站上都可以看到其应用 举个简单的例子 如当当网,在你浏览一本书的时候,可以在页面中看到一些套餐推荐,本书+有关系的书1+有关系的书2+...+...
  • 基于全置信度的电信时间序列事务间关联规则高效算法,迟明群,杨晓峰,电信网络的规模及复杂度日益增大,每天分布在各种网元上的Agent都会采集大量的网络性能KPI时间序列数据。这些时间序列之间是相互影�

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,956
精华内容 5,582
关键字:

关联挖掘序列算法