先存着,乐。
捏麻麻滴图灵的项目和报告有点多,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,其实和暴实差不多了。
碎碎念
感觉我写了一堆挖了一堆坑,乐。图灵👊😭。