博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
挖掘频繁模式、关联和相关
阅读量:4039 次
发布时间:2019-05-24

本文共 3521 字,大约阅读时间需要 11 分钟。

总述:在应用数据挖掘方法的时候,我们要找到算法的约束条件和化简条件,缩减算法的时间复杂度和空间复杂度。频繁模式就是对算法中结果进行描述,甚至做出进一步的刻画和限定,引导数据挖掘向结果进行靠近。

 

  1. 频繁模式是什么
  2. 有效的可伸缩的频繁项集挖掘方法有哪些
  3. 如果数据之间存在潜在的关联关系,如何去挖掘
  4. 怎么从关联挖掘的结果进行相关分析
  5. 实际情况下基于约束的关联挖掘是怎么回事

 

1.频繁模式是什么

答:频繁模式是频繁地出现在数据集中的模式。频繁模式反应了一些关联规则。当规则的支持度和置信度是规则兴趣的两种度量,分别反应了所发现规则的有用性和确定性。如果规则同时满足最小支持度阈值和最小置信度阈值,则此关联规则是有趣的。

对频繁模式用数据库的基本知识解读:我们假设有一张表,存在多个字段,我们假定存在字段A和B是这张表中的字段。这张表中存在了大量的数据,记做数据集T。T中每一条记录都有唯一的标识符TID。当数据T中存在的数据计算比例的时候发现,A某个取值和B的某个取值存在一定的关联关系,我们就称A和B在数据集T上存在关联成立,具有一个关联支持度s,s是T中A某个取值同时B取某个值同在一条记录的记录数与T的总记录数比值。在数据集T上,A和B关联关系的置信度c是A某个取值同时B取某个值同在一条记录的记录数与A某个取值的比值。

仔细分析就会发现,关联关系最强的时候可能成为字段的某种函数依赖关系。实际上这种关联关系是基于数据事实进行分析的,只有当关联支持度和置信度超过最小关联支持度阈值和最小置信度阈值的时候才是强规则。根据频繁模式的定义可以得出,在具体挖掘过程中先计算关联支持度,再计算置信度。

 

2.有效的可伸缩的频繁项集挖掘方法有哪些

答:第一种算法是利用Apriori性质:频繁项集的所有非空子集也必须是频繁的。这种算法除了利用频繁模式的定义之外,还根据这个性质采用了递归的方法。整个算法的核心思想是:第一步,先从频繁模式的定义触发,寻找两个字段之间存在关联的取值,然后通过增加一个字段,考察新增加字段取值与已有频繁模式集合之间的关系;第二步,利用Apriori性质,如果新增字段的某些取值和已有频繁模式存在足够关联度则保存,否则利用剪枝原则,排除这个新增字段取值到频繁模式集合之外。从算法的具体思想上来看,算法的时间复杂度波动范围是非常大,从1到n的n次方。这种情况下可以通过选取合理的计算顺序降低时间复杂度。

为了提高Apriori算法效率,人们有提出了基于散列技术的改进、事物压缩、划分、抽样、动态项集计数等改进算法。基于散列技术是从利用散列技术将多个二维关联关系分组,每个同分组时设置默认最小关联度阈值,计算桶内每个关联,只要关联度值超过默认最小关联度,则更新桶计数。统计最后计算结果,只要桶的阈值没有变换的全部排除掉,然后在对超过默认阈值的桶进行计算分析。事物压缩主要是根据不包含任何频繁k项集的事务也不可能包含在任何频繁k+1项集中。这样,对其中非频繁项一边计算一边删除可以缩减以后的计算量,实际上还是要计算一次作为检验条件。划分是将候选项集进行分组,先对每个分组计算满足最小阈值的关联,然后再寻找分组间的关联,随着关联项的增多,可以运用组合分组中组合的方式,这种方法也缩减了计算量。抽样是一种牺牲精确度换取效率的算法,算法的核心思想是先从整体数据集T中随机抽样得出样本S,在S中使用一个比最小支持度阈值小的阈值检测S中的频繁项集,然后对S的频繁项集中每一个项计算在T中出现的频率,然后根据S中频繁项集最小支持度阈值和D中出现的频率估算出结果。动态项集计数计数将数据库划分为用开始点标记的块,在这种变形中,可以在任何开始点添加新的候选集,可以动态的评估已计数的所有项集支持度。在这种技术下,一旦一个项集的所有子集已经确定为频繁的,则添加它为新的候选项。

第二种方法是频繁模式增长,简称FP增长。方法采用分治策略,先提供频繁项的数据库压缩到一颗频繁模式树上,但仍保留项集关联关系;其次将压缩后的数据库划分成一组条件数据库,每个关联一个频繁项或模式段,并分别挖掘每个条件数据库。 具体做法:1、先扫描事务数据库T一次,收集频繁项集的集合F和它们的支持度计数,对F按支持度计数降序排列,转化为频繁项列表L;2、创建FP树的根节点,以‘null’为标记,然后将L中的项逐次向树上添加。当设Li是L中的第i项,只要Li中的频繁项加入到树上时与父节点产生频繁模式,则计Li作为叶子插入到当前节点位置的计数加1.当Li中项全部检测完毕,计数超过最小关联度阈值则保存,否则去掉。因为这种算法考虑到频繁项集中计数是不统一的,将高计数的频繁项优先计算,低计数的频繁项后计算,极大的加快了计算速度,效率比第一种方法快一个数量级。

第三种方法是使用垂直数据格式挖掘频繁项集。 前面两种方法的数据格式都是水平数据格式,就是以TID作为首要标识项的表示方法。如果转换数据表示方法,以事务的项集做为首要标识项,这种称为垂直数据格式。这种数据格式下计算项集的频繁项只需要计算事务项的交即可。这种方法的时间复杂度和空间复杂度很大,主要集中在数据从水平数据格式转换为垂直数据格式上。人们对这种方法进行了改进,采用差集的技术,仅记录k+1项集的TID集与一个对应的k项集的TID集之差。在数据集中包含很多稠密和长模式时,该技术可以显著减低频繁项集垂直格式挖掘的总开销。

第四种方法是挖掘闭频繁项集,这种方法可以降低开销。在挖掘过程中直接搜索闭频繁项集,一旦识别到闭频繁项集就尽快对搜索空间进行剪枝。剪枝策略:1、如果保单频繁项集X的每个事务都包含项集Y,但不包含Y的任何真超集,则X∪Y形成一个闭频繁项集,并且不必再搜索包含X但不包含Y的任何项集;2、如果一个频繁项集X是一个已经发现的闭频繁项集Y的真子集,并且支持度X和支持度Y相等,则X和X在集合枚举树中的所有后代都不可能是闭频繁项集,因此可以剪枝处理;3、在深度优先挖掘闭项集时,每一层都有一个与头表和投影数据库相关联的前缀项集X。如果一个局部频繁项p在不同层的多个头表中都有相同的支持度,则可以将p安全地从较高层头表中剪掉。

从以上数据挖掘的方法来看,数据挖掘的算法按照时间复杂度和空间复杂度来说都是很高的,在针对具体问题上的处理时都要检查时间复杂度和空间复杂度,尽可能估算算法的执行时间和需要的存储空间。

 

3.如果数据之间存在潜在的关联关系,如何去挖掘

答:一般情况下越靠近底层的原始数据,关联关系越微弱,越是靠近高层,关联关系越明显。为了挖掘这种潜在关联关系,必须对挖掘规则做一些特别的设置:1、在较低层使用递减的最小支持度;2、使用基于项或基于分组的最小支持度。

第一种挖掘方法是使用预定义的概念分层对量化属性离散化,这种离散化必须在挖掘之前进行。因为这种离散化是静态和预确定的,所以这种方法也称为使用量化属性的静态离散化挖掘多维关联规则。

第二种方法是根据数据的分布将量化属性离散化或聚类到箱。因为这种离散化是动态的满足某种挖掘标准,也称这种方法为动态量化关联规则。

 

4.怎么从关联挖掘的结果进行相关分析

答:大部分关联规则挖掘算法都使用支持度——置信度框架。但是这无法保证挖掘出来的结果一定是有趣的规则,特别是使用低支持度阈值挖掘或挖掘常模式时,情况更加糟糕,这一直是关联规则挖掘成功应用的主要瓶颈之一。由于规则有趣评估可以主观的或客观的,当评估是主观的,那么规则有趣可能因用户不同而不同。即便是满足关联度和置信度的关联规则,也不一定就是有效的。为了解决这种情况,我们需要使用统计学中的联合分布事件的定义来判定关联规则中的项是否是独立分布事件,如果不是就存在关联关系。

在分析关联挖掘的结果时,我们需要使用统计学的知识来检查结果是否是有效的。

 

5.实际情况下基于约束的关联挖掘是怎么回事

答:因为挖掘出来的关联模式是否有趣很大一部分是由用户决定的,所以用户说明他们的需要或者期望可以作为限制搜索空间的约束条件。这种策略称为基于约束的挖掘,这些约束的类型有:知识类型约束、数据约束、维/层约束、兴趣度约束、规则约束。

元规则是主要来自于经验丰富的人员的经验,这些规则可以快速推进数据挖掘的处理。例如XX年龄段XX地区的某种职业的男性在有某种数据特征的时候,也呈现出另外一种数据特征。因为这是从规则层面上体现的,可以最大幅度的加速挖掘。

其他比较通用的规则约束还有反单调性、单调性、简洁性、可转换变的等约束,这些约束都是有助于进行挖掘处理的。以反单调性为例,月消费超过10000元的人呈现与什么样的消费特征。

转载地址:http://hmpdi.baihongyu.com/

你可能感兴趣的文章
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>
linux内核学习(4)建立正式内核的页式内存映射, 以x86 32位模式为例
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>