Apriori算法

来源:互联网 发布:淘宝运营推广区别 编辑:程序博客网 时间:2024/06/05 00:28

Apriori算法

第一次写博客,看这个算法的目的是为毕设开题做准备,以及以后的复习所做的笔记。Apriori属于无监督学习,对数据关联规矩进行挖掘的算法。

关联规则是形如XY的蕴含式,其中X,Y分别是I的真子集,并且XY=。X称为规则的前提,Y规则的结果。关联规则翻译X中项目出现时,Y中的项目也跟着出现的规律。 —— 《数据挖掘算法原理与实现》

1.Apriori算法的预备知识

关联的支持度:

support(XY)=support(XY)=P(XY)

关联规则的置信度:
x=support(XY)support(X)=P(X|Y)

最小值支持度:关联规则的最低重要程度 (自己确定的阈值。)
最小置信度:关联规则必须满足的最低可靠程度。

tips:
1.统计学核心:用样本估计总体。
2.95%的几率落在50%到60%之间,95%为置信度,又称置信水平,(50%-60%)为置信区间。
参考:https://www.zhihu.com/question/26419030?sort=created


2.Apriori算法过程

这里写图片描述

以上图为例:数据库中存储的商品订单,事务即订单ID,商品用A,B,C,D等来表示,最小支持度为2首先进行第一次对订单数据的扫描,(第一次的扫描和后几次的是不太一样的),以项集为单位,支持度为项集中的商品在订单中同时出现的次数,即项集中商品的关联度。然后发现{D}的支持度为1小于2,所以删除(这个步骤叫做剪枝步)。然后,集合L1与自身做连接产生下一个集合C2(这个步骤叫做连接步)。在剪枝步和连接步中有两个重要的概念:

频繁项集:如果项集的相对支持度满足预定义的最小支持度阈值,则I是频繁项集。(其中项集是按照从小到大的顺序排列的)。
项目集空间理论核心:频繁项目集的子集仍是频繁项目集;非频繁项目集的超集是非频繁项目集

连接步的步骤:如果项集的前K-2个项相同,则可以连接,连接的结果为两个项集的并集(K为第K次扫描的K)。
剪枝步的步骤:根据上面的第二个概念中的“非频繁项目集的超集是非频繁项目集”删除项目集,which子集包含非频繁项目集(即图中标红的项集),然后删除支持度小于2的项集。

然后连接步,剪枝步,进行迭代,直到L为空。

核心:使用候选项集寻找频繁项集(方法:连接步,剪枝步)。逐层搜索,迭代。

Apriori算法描述

输入:数据库D,最小支持度阈值min_sup。
输出:D中的频繁项集。
(1)Begin
(2)L1=1-频繁项集;
(3)for (k=2;Lk1;k++) do begin
(4)Ck1=Apriori_ gen(Lk1); { 调用函数Apriori_gen(Lk1)通过频繁(k1)- 项集产生候选k- 项集}
(5)for所有数据集tD do begin {扫描D用于计数}
(6))Ct=subset(Ck,t);{找出该事务中候选的所有子集}
(7)for所有候选集cCt ; do
(8)c.count++;
(9)end;
(10)Lk= { cCt|c.countmin_sup}
(11)end
(12)end
(13)Return L1L2LkLm


2 0