走~走走~走走走走​🚶‍♂️🚶‍♂️🚶‍♂️

Apriori


先存着,乐。
捏麻麻滴图灵的项目和报告有点多,Apriori算法以及数据挖掘的相关概念倒是可以稍微总结下,毕竟我之后不会去看课本和ppt了。
谁看这些啊(暴论)

来点概念

basic conception

首先要明白的一点是,这里的数据挖掘基本上是去寻找数据的关联性的。

项集:若干个项的集合,是数据挖掘种最基本的模式。
事务:每个事务都是非空项集,都拥有一个唯一表示TID。
数据集:事务的集合。
k项集:事务$|A|=k$

总体而言,给定了数据集后,我们需要通过分析来发现频繁项集。

呐,接下来整点数学。

math

支持度$Support(A,B)=P(AB)=\frac{|AB|}{|\Omega|}$

多个事物的支持度当然可以推了嘛。当然,这种东西不一定能够成为频繁项集的评判标准,接下来便有:

置信度$Confidence(A<-B)=P(A|B)$

呐,条件概率!条件概率就能稍微整点和关联性了,但是还是不够。

提升度$Lift(A<-B)=P(A|B)/P(AB)$

这就能一眼顶针了。若 $Lift$ 能够大于1,则该规则($A<-B$)为有效强关联规则,而等于1就是我们概率论学过的相互独立事件:

$P(X|Y)=P(X)$

小于等于1就是无效的强关联规则了。
当然,可以自己定义标准,这里只是一些常用的形式。当我们自定义的标准算出的值大于某个阈值(看看之后能不能填坑解释下),便可认为他是频繁k项集。

来点性质

k维数据项集为频繁项集的必要条件是所有k-1子项集也为频繁项集。(先验原理)
似乎可以根据这个规则来线性递推?

具体似乎也补充不了太多,先放着🕊。

来点实现

为了找出所有频繁k项集的集合$L_k$,需要逐层搜索。现在,对于生成$L_k$:

连接步骤

根据给的数据集,生成$C_k$(候选集合)罢!也就是多一项的问题!
但一眼TLE(错乱)

剪枝步骤

$C_k$是$(L_k)$的超集,所以$C_k$可以继续剪枝。
压缩$C_k $(利用前面讲的性质),用非空子集是否是频繁项集(阈值之类的)做判断条件来剪枝,然后用阈值再次判断是否是频繁项集。

最后,若扫描k项集为空集,则k-1为最大频繁项集,算法结束。

当然,还有诸如极大频繁项集,这等之后填坑了。从中也可以看到,其实这方法蛮低效的,两剪枝在每层都要扫描数据集前面都是fw,其实和暴实差不多了。

碎碎念

感觉我写了一堆挖了一堆坑,乐。图灵👊😭。


Author: ZzzRemake
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source ZzzRemake !
Comment
  TOC