第7章 关联分析: 高级概念
- 本章就扩展到具有二元属性、分类属性和连续属性的数据集。
- 扩充到包含 序列 和 图形
- 如何扩展传统的Apriori算法来发现这些模式
7.1 处理分类属性
- 将分类属性和对称二元属性转换成项,就可以用已有的关联规则挖掘算法;将每个不同的属性-值对创建一个新的项(即转化为非对称二元属性)来实现
- 将关联分析用于二元化后的数据时,需要考虑如下问题:
- 合并不太频繁的属性值变成一个称作其他的类别。
- 删除某些出现频率很高的属性;或者使用处理具有宽支持度的极差数据集的技术
- 避免产生包含多个来自同一个属性的项的候选项集。例如:不必产生诸如{州=X,州=Y,…}的候选项集,因为该项集支持度为零。
7.2 处理连续属性
- 量化关联规则:包含连续属性的关联规则通常
- 三类方法对连续数据进行关联分析
- 基于离散化的方法
- 基于统计学的方法
- 非离散化方法
7.1 基于离散化的方法
- 离散化技术:等宽、等频、聚类
- 区间宽度问题:
- 区间太宽,缺乏置信度
- 区间太窄,缺乏支持度
- 区间宽度解决方法:考虑邻近区间的每种可能的分组(即等步长的渐渐加大区宽),但这也导致了:
- 计算开销非常大 ―― 可以使用最大支持度阈值,防止创建对应于非常宽的区间的项,并减少项集的数量
- 提取许多冗余规则
7.2 基于统计学的方法
- 量化关联规则可以推断总体的统计性质
- 包括规则产生和规则确认
- 规则产生:先找到需要关注的目标属性,保留目标属性,对其余的分类或连续属性非对称二元化,然后用已有算法提取频繁项集,每个频繁项集确定了一个总体,计算每个确定总体的统计量(平均数、方差等);这样提取的量化关联规则(后件是连续的规则)不能使用置信度,那么怎么规则确认呢?
- 规则确认:仅当由规则覆盖的事务的目标属性的统计量明显不同于未被规则覆盖的事务计算的统计量,这时候规则成立,该量化规则是有趣的。 ―― 采用假设检验
7.3 非离散化方法
- 当分析者更感兴趣的是发现连续属性之间的关联。
- 事务中每个项的频率/所有事务该项上的频率和,确保支持度在0~1且保证数据在相同尺度上;
- 两种做法:
- 将数据变换成0/1矩阵,其中,如果规范化词频超过某个阈值t,则值为1,否则为0 ―― 但是很难设定一个合适的阈值
- min-Apriori:给定文档中词之间的关联通过取它们的规范化频率的最小值得到,项集的支持度即在所有文档上聚集它的支持度
- 定义的支持度具有如下性质:
- 支持度随词的规范化频率增加而单调递增
- 支持度随包含该词的文档个数的增加而单调递增
- 支持度随项集中词数的增加而单调递减(反单调性)
- 定义的支持度具有如下性质:
7.3 处理概念分层
- 可以用有向无环图表示
- 将概念分层纳入关联分析的优点:
- 位于层次结构较下层的项可能没有足够的支持度,不使用概念分层会丢失细节的规则
- 在概念分层低层发现的规则过于特殊,用较高层的规则可以总结;当然,过于高层的总结的规则可能没有价值
- 有两种方法【结合概念分层的关联规则】:
- 方法一:扩充标准的关联分析,让其包括概念分层:
- 每个事务由其扩展事务代替,新项集包含旧项及其对应的祖先
- 使用已有算法,发现跨越多个概念层的规则
- 这种方法的局限性:
- 处于高层的项比处于低层的项有更高的支持度计数。因此很难设定支持度阈值
- 事务宽度变大,算法开销变大
- 概念分层产生冗余规则
- 方法二:一层层考虑,因为父节点不是频繁的,那么子节点就不是频繁的
- 先在最高层产生频繁项集
- 然后在下一层产生频繁项集
- 问题:
- 传递数据的I/O开销大
- 平行层之间的规则无法被提取出来
- 方法一:扩充标准的关联分析,让其包括概念分层:
7.4 序列模式
7.4.1 问题描述
- 迄今为止所讨论的关联模式概念都只强调同时出现关系,而忽略数据中的序列信息。
- 关于序列的讨论主要考虑时间事件,可以推广到事件具有空间次序的情况:
- 子序列:序列t是序列s的子序列,t中的每个有序元素都是s中一个有序元素的子集,注意要符合项的次序
7.4.2 序列模式发现
-
给定序列数据集D和指定的支持度阈值minsup,序列模式的发现是找出支持度>=minsup的所有序列
-
k序列是指包括k个items的序列
-
产生序列模式的一种蛮力方法是枚举所有可能的序列,并统计它们各自的支持度
-
候选序列的个数很大,原因有两个:
- 一个事件可以在序列中出现多次
- 次序在序列中是重要的,候选序列的次序也是其不同之处
-
序列模式发现的类Apriori算法 与 前面产生候选集的算法一样!
-
先验原理对序列数据是有效的,序列模式发现的步骤细节:
- 候选产生
- 一对频繁(k-1) 序列合并,产生候选k-序列
- 序列s(1)与另一个序列s(2)合并,仅当从s(1)中去掉第一个事件得到的子序列与从s(2)中去掉最后一个事件得到得到的子序列相同。
- 候选剪枝
- 一个候选k-序列被剪枝,如果它的(k-1)-序列最少有一个是非频繁的。
- 支持度计数
- 枚举属于特定数据序列的所有候选k-序列,找出频繁k-项集
- 候选产生
7.5 子图模式
- 在这种类型的数据上进行数据挖掘的任务是,在图的集合中发现一组公共子结构。这样的任务称作频繁子图挖掘
7.5.1 图与子图
- 支持度定义:
7.5.2 频繁子图挖掘
- 给定图的集合和支持度阈值minsup,频繁子图挖掘的目标是找出所有使得s(g)>=minsup的子图g。
- 本章关注无向连通图:
- 候选子图的个数比传统的关联规则挖掘中的候选项集的个数大得多的原因:
- 项在某个项集中至多出现一次,而某个顶点可能在一个图中出现多次
- 相同的顶点对考研有多重边标号选择。
- 给定大量候选子图,即使对于规规模适度的图,蛮力方法也可能垮掉。
7.5.3 类Apriori方法
- 将图变换成类似于事务的形式:
- 事务变成图的形式:
- 类Apriori算法的步骤:
- 候选产生(得出的k+1的subgraph有多个,不是唯一一个 )
- 候选剪枝
- 支持度计数
- 候选删除
7.5.4 候选产生
-
为了避免产生重复的候选,对合并施加附加的条件:两个(k-1)-子图必须共享一个共同的(k-2)-子图。共同的(k-2)-子图称作核。
-
有两种定义方式:顶点增长,边增长
-
通过顶点增长产生候选
- 通过邻接矩阵 p280 ,但是无法确定增加完结点的边是否相连
-
通过边增长产生候选
- 拓扑等价 p281
7.5.5 候选剪枝
-
候选剪枝可以通过如下步骤实现:
- 相继从k-子图删除一条边,并检查对应的(k-1)-子图是否连通且频繁。
- 为了检查(k-1)-子图是否频繁,需要将它与其他频繁(k-1)-子图匹配,判定两个图是否拓扑等价。 ―― 即 图同构
-
处理图同构
- 将每一个图都映射到一个唯一的串表达式 ―― 代码或规范标号(如果两个图是同构的,则它们的代码一定相同)
- 第一步:找出图的邻接矩阵
- 第二步:确定每个邻接矩阵的串表示
- 最后一步:比较图的所有串表达式(通过行、列变换),并选出具有最小(最大)字典次序的串
7.5.6 支持度计数
-
文章来源: https://blog.csdn.net/weixin_41045344/article/details/90969418