【ML小结6】关联分析与序列模式关联分析

2021年9月13日 1点热度 0条评论 来源: ==樛木==

一、关联分析

关联分析主要是用于从数据集中发现数据项之间的关系。

1. 基本概念

1.1 支持度

X → Y 的支持度表示项集 {X,Y} 在总项集中出现的概率:
s u p p o r t ( X → Y ) = P ( X , Y ) support(X\rightarrow Y)=P(X,Y) support(XY)=P(X,Y)
用于衡量同时满足X和Y的概率。

1.2 置信度

X → Y 的置信度表示在先决条件 X 发生的情况下,由规则 X → Y 推出 Y 的概率。
c o n f i d e n t ( X → Y ) = P ( Y ∣ X ) confident(X\rightarrow Y)=P(Y|X) confident(XY)=P(YX)
用于衡量X与Y之间的关联性。

1.3 提升度

X → Y 的提升度等于 X → Y 的置信度除以 Y 的支持度
l i f t ( X → Y ) = c o n f i d e n t ( X → Y ) s u p p o r t ( Y ) = P ( Y ∣ X ) P ( Y ) = P ( X , Y ) P ( X ) P ( Y ) lift(X\rightarrow Y)=\frac{confident(X\rightarrow Y)}{support(Y)}=\frac{P(Y|X)}{P(Y)}=\frac{P(X,Y)}{P(X)P(Y)} lift(XY)=support(Y)confident(XY)=P(Y)P(YX)=P(X)P(Y)P(X,Y)
用于衡量关联规则是否可用,大于1则可用

1.4 关联分析

关联分析的本质就是在集合里找出大于最小支持度阈值和最小信任度阈值的关联规则,并依据提升度找出其中可用(lift>1)的关联规则。

2. 求解算法:Aprior算法

2.1 算法描述

Apriori算法的目标是找到最大的K项频繁集。这里有两层意思,

  • 首先,我们要找到符合支持度标准的频繁集。但是这样的频繁集可能有很多。
  • 其次,我们要找到最大个数的频繁集。比如我们找到符合支持度的频繁集AB和ABE,那么我们会抛弃AB,只保留ABE,因为AB是2项频繁集,而ABE是3项频繁集。

2.2 算法细节

Apriori算法是如何做到挖掘K项频繁集的呢?事实上,Apriori算法是采用了迭代的方法:

  • 先搜索出候选1项集及对应的支持度,剪枝去掉低于支持度的1项集,得到频繁1项集;
  • 然后对剩下的频繁1项集进行连接,得到候选的频繁2项集,筛选去掉低于支持度的候选频繁2项集,得到真正的频繁二项集;
  • 以此类推,迭代下去,直到无法找到频繁k+1项集为止,对应的频繁k项集的集合即为算法的输出结果。

2.3 参考教程

参考 Apriori算法原理总结 - 刘建平Pinard - 博客园
https://www.cnblogs.com/pinard/p/6293298.html

二、序列模式关联分析

序列模式关联分析所挖掘的对象及结果都是有序的。序列模式关联分析的核心就是要找到事物发展的前后关联性,从而挖掘出带有一定因果性质的规律。
举例:

  • 简单关联关系:购买面包的顾客80%都会购买牛奶,由于面包和牛奶是早餐搭配的必需品,二者搭配构成了早餐的组成部分,这就是简单的关联关系。
  • 序列关联关系:当购买一款新手机后,就会考虑去购买手机膜等手机配件,这就是一种序列关系,不会先买手机膜再买手机的,先后关系是非常明显的,这种关系就是序列关联关系。

1. 求解算法

1.1 GSP算法

本质:

类Apriori算法

步骤:

  • 1.自连接
    序列如何进行自连接呢?有这样一个定义,即对于序列S1和S2,如果序列S1去掉第一项,与序列2去掉最后一项得到的序列相同,那么序列1和序列2就是可以连接的。把序列2的最后一项加入到序列1中,得到一个新的连接,即可以作为序列1和序列2连接的结果。
  • 2.剪枝
    GSP算法的剪枝条件与Apriori算法的剪枝条件相同:1.如果序列的支持度小于最小支持度,那么就会被剪掉 2.如果序列是频繁序列,则它的所有子序列必定是频繁序列;所以如果一个序列存在不是频繁序列的子序列的话,也会被剪掉。

缺点

每次计算序列的支持度时,都需要全表扫描数据集D

参考教程

1.2 SPADE算法

SPADE算法依旧使用传统的先验性质,即连接步+剪枝步的经典组合,思想跟GSP大致相同,只不过由于它多了一个ID_LIST记录,使得每一次的ID_LIST根据上一次的ID_LIST得到(从而得到支持度),而ID_LIST的规模是随着剪枝的不断进行,而规模逐渐缩小的。所以也就解决了GSP算法多次扫描数据集D问题。

算法细节

  • 寻找1成员和2成员频繁项集方法跟GSP完全形同
  • 在之后的3成员及之后的频繁项计算中,套用了如下3个规则找出“有可能”是频繁的元素,
  1. 如果诸如成员PA,PD这样的形式出现在2频繁项集中,则能推导出PBD这样的三成员元素。
  2. 如果出现诸如PB,P->A这样的形式出现在2频繁项集中,则能推导出PB->A这样的三成员元素。
  3. 如果出现诸如P->A,P->F这样的形式出现在2频繁项集中,则能推导出P->AF或P->A->F或P->F->A这样的三成员元素。
  • 为了确定是不是频繁的元素,还去原始data中进一步遍历、判断。


参考教程

    原文作者:==樛木==
    原文地址: https://blog.csdn.net/weixin_38493025/article/details/88122314
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。