首页 > 编程知识 正文

apriori算法原理,数据挖掘apriori算法

时间:2023-05-04 22:02:17 阅读:138612 作者:1911

http://www.Sina.com/http://www.Sina.com /

Apriori

关联规则学习(Association rule learning )是一种在大型数据库中发现变量之间有趣关系的方法。 其目的是使用一些有趣的度量来识别在数据库中发现的强规则。

相关性分析是在大数据集中寻找有趣关系的任务。 这些关系有两种形式:频繁项集或关联规则。 频现项集(frequent item sets )是一组经常出现在一起的事物,关联规则(association rules )提示两者之间可能存在较强的关系。

算法总结

查找频繁项集时,“频繁”的定义是什么?

最重要的是支持度和可靠性。

1、一个项目集的支持度(support ) )。

定义为数据集中包含的记录的百分比。 由于支持度是针对项目集进行的,因此可以定义最小支持度,只保留满足最小支持度的项目集。

2、可靠性或可靠性(confidence )。

是针对尿布啤酒等相关规则定义的。 该规则的可靠性被定义为“支持度(尿布、啤酒) /支持度)”。

如果{尿布、啤酒}的支持度为3/5,尿布的支持度为4/5,则“尿布啤酒”的可靠度为3/4=0.75。 简单来说,就是用户购买尿布的事件中包含了“购买尿布和啤酒”的比率。 这意味着对于包括“尿布”在内的所有记录,我们的规则将适用于其中75%的记录。

3、提升等级)“同时包含b的事务的百分比”与“包含b的事务的百分比”之比。 表达式的表示: lift=(p(ab )/p (a ) )/p ) b )=p ) ab )/p ) a )/p ) b )。 提升度反映了相关规则中的a和b的相关,提升度1越高,表示正相关越高,提升度1越低,表示负相关越高,提升度=1表示无相关。

为了缩短频繁项集合的生成时间,可以尽快消除非频繁项集合的集合,使用Apriori的两个法则。

Apriori定律1 :如果某个集合是频繁项集,则其所有子集都是频繁项集。 例如,假设某个集合{A,B}是频繁出现项集合。 也就是说,如果a、b在一个记录上同时出现的次数在最小支持度min_support以上,则其子集{A}、{B}的出现次数一定在min_support以上,也就是说其子集都是频繁出现项集合。

Apriori定律2 :如果某个集合不是频繁项集,则其所有超集都不是频繁项集。 例如,假设集合{A}不是频繁项集合。 也就是说,如果a以小于min_support的次数出现,则像{A,B}这样的超集也一定会以小于min_support的次数出现,因此该超集也一定不是频繁出现项集。

一、背景

接下来,我们来看一下Apriori算法的简单流程。

数据集:

面包、牛奶

[面包、尿布、啤酒、鸡蛋]

牛奶、尿布、啤酒、可乐、

[面包、牛奶、尿布和啤酒]

[面包、牛奶、尿布、可乐]

过程如下。

得到频繁项集合后,可以从频繁项集合中得到较强的相关规则(满足最小支持度和最小可靠度的相关规则)。 因为在这里找不到流程图,所以直接从程序运行的屏幕截图开始看吧:

这是我把支持度设定为0.3,得到的所有频繁的一套:

然后分析规则,根据二元集进行计算。 以下分析生成的关联规则。

接下来是三个插曲。 举个例子吧。

也就是说,对于频繁的项集合,首先找出所有的子集,循环地每次分析子集,比较从原项集合中去除该子集后剩下的数据的可靠度和提高度。 此时,如果可靠度大于0.7,提高度大于1,则最终结果如下。

以lift的作用为例。

例如,在前面的例子中,总事件为5件,购买牛奶为4件,购买尿布为4件,两者都购买为3件,所以牛奶(a )的支持度为p ) a )为0.8,对牛奶(a )的尿布) b的信赖度为a

通俗地说,b事务可能不是因为发生a事务而发生的,而是b事务本身发生的次数较多。例如,b事务出现在所有的事务集中,也就是说出现概率为1,就是说因为发生a事务而发生了b事务

二、理论

1、逐案物品较多时,支持度、置信度阈值设置过低,关联规则特别多,所得结果无价值;

eg .数据:

[1、3、9、13、23、25、34、36、38、40、52、5]

4,59,63,67,76,85,86,90,93,98,107,113],[2,3,9,14,23,26,34,36,39,40,52,55,59,63,67,76,85,86,90,93,99,108,114],[2,4,9,15,23,27,34,36,39,41,52,55,59,63,67,76,85,86,90,93,99,108,115],[1,3,10,15,23,25,34,36,38,41,52,54,59,63,67,76,85,86,90,93,98,107,113],[2,3,9,16,24,28,34,37,39,40,53,54,59,63,67,76,85,86,90,94,99,109,114],[2,3,10,14,23,26,34,36,39,41,52,55,59,63,67,76,85,86,90,93,98,108,114],[2,4,9,15,23,26,34,36,39,42,52,55,59,63,67,76,85,86,90,93,98,108,115],[2,4,10,15,23,27,34,36,39,41,52,55,59,63,67,76,85,86,90,93,99,107,115],[1,3,10,15,23,25,34,36,38,43,52,54,59,63,67,76,85,86,90,93,98,110,114]]

 

2、当有很多个事件时,若每个事件的物品很少,支持度、置信度阈值设置太高,关联规则会特别少,这个时候得到的结果也是没有价值;

3、故而,我觉得在初始数据和支持度、置信度之间,是要通过实际测试以及考虑预期结果来获得几个比较好的参数,也即是说,即便是Apriori这种相对其他复杂算法较为经典且基础的算法也是需要调参的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。