机器学习(13)--apriori算法(挖掘关联规则的频繁项集算法)

学完吴老师的课程进入自我学习阶段,可学的很多,比如决策树,CNN,GAN等,先从一个简单的开始


上一篇:机器学习(12)--机器学习工程思想(划分流水线、分析学习曲线判断是否人工数据合成及上限分析)

https://blog.csdn.net/qq_36187544/article/details/88603838

下一篇:机器学习(14)--经典边缘检测canny算法(计算机视觉从0到1)https://blog.csdn.net/qq_36187544/article/details/89548363


apriori算法是关联规则挖掘的代表性算法,就是挖掘关联规则,举个经典例子,超市里有各种东西,订单如下

订单1苹果,香蕉,啤酒,尿布
订单2可乐,啤酒
订单3啤酒,尿布

啤酒出现了3次,尿布出现了2次,且啤酒和尿布关联出现概率极大,这就是关联规则。可为实际增加思考:把尿布和啤酒放一起能增加销量。

apriori是数据挖掘经典算法,同时也是和机器学习的交叉领域


数据挖掘10大算法:

1.k均值
2.支持向量机SVM
3.apriori
4.最大期望(EM)算法
5.PageRank
6.AdaBoost
7.kNN: k-nearest neighbor classification
8.朴素贝叶斯模型(Naive Bayesian Model,NBC)
9.CART, Classification and Regression Trees分类与回归树
10.分类决策树算法C4.5

谈谈个人理解,数据挖掘是对海量数据进行处理,得到有用信息,常使用数据库作为基础,统计学等算法得到信息和知识(关联关系只是其中一种),而机器学习可以视为算法处理问题,数据挖掘通常使用机器学习的算法。


算法正式开始,算法目标--找到找到最多的K项频繁集,从例子出发:

编号物品
ID1I1,I2,I3
ID2I1,I3,I4
ID3I3,I5
ID4I1,I3,I5
ID5I3,I5

支持度:一个项集的支持度被定义为数据集中包含该项集的记录所占的比例。如I1出现3次,总数量为5,则支持度为
SUPPORT(I1)=3/5=0.6。
特别地,如果对于一个恒定不变的数据集,即总数量不变时,支持度也可以取数字,比如取3次,I1则满足支持度。但是如果这是一个动态数据集,即不断有新的数据进入,取比例支持度会更好一点,但是要注意这个比例的大小。
强调关联规则,所以得再计算多个项集时支持度,比如I1,I3同时出现的次数为3:
SUPPORT(I1,I3)=3/5=0.6

可信度(置信度):就是条件概率,比如I3对I1的置信度表示当人们购买I3时同时购买I1的概率有多少:
Confidence(I1<-I3)=P(I1|I3)=P(I1I3)/P(I3)=SUPPORT(I1,I3)/SUPPORT(I3)=0.6/1=0.6
I1对I2I3的置信度表示当人们购买I1时同时购买I2,I3的概率有多少
Confidence(I1<-I2I3)=P(I1|I2I3)=P(I1I2I3)/P(I2I3)

支持度有什么作用?APRIORI算法是寻找频繁项集,如果项集出现次数过低,即支持度过低,则证明该项不占比重不能说明问题,支持度达到,说明这个项集为频繁项集
置信度有什么作用?说明了两者之间的关联关系
所以,满足最小支持度和最小置信度的二者,认为其满足频繁项集关联关系,他们之间有关联

假设此处我们要寻找满足支持度大于0.5,置信度大于0.5的最大频繁K项集
第一步、计算频繁1项集支持度第二步、淘汰不合支持度要求的1项集第三步、计算得到频繁2项集支持度(注:由于先验规则可进行剪枝,所以不再出现任何关于I2,I4的项,后文介绍原理)第四步、淘汰第五步、已经没有更多项的频繁项集了,不存在满足要求的3项集、4项集等,求置信度
{I1}=3/5=0.6{I1}=3/5=0.6{I1,I3}=3/5=0.6{I1,I3}=3/5=0.6confidence(I1<-I3)=0.6/1=0.6
{I2}=1/5=0.2{I3}=5/5=1{I1,I5}=1/5=0.2 confidence(I3<-I1)=0.6/0.6=1
{I3}=5/5=1{I5}=3/5=0.6{I3,I5}=2/5=0.4 满足置信度要求,所以最大频繁项集是2项集{I1,I3},I1和I3具有关联关系,且I3支持度极高,建议:不改变I3位置,将I1放置I3旁边将提高销量
{I4}=1/5=0.2   
{I5}=3/5=0.6   

先验规则剪枝原理:

Apriori定律1如果一个集合是频繁项集,则它的所有子集都是频繁项集。如上图,AB为频繁项集,则A、B为频繁项集。再比如上面的例子,I1,I3是频繁项集,则I1、I3都是频繁项集

Apriori定律2:如果一个集合不是频繁项集,则它的所有超集都不是频繁项集。如下图,AB不是频繁项集,则之后所有包含AB的都不是频繁项集。这也是之前例子中为什么把含I2、I4的数据集直接去掉的原因


Apriori算法流程:

1.扫描数据集,得到所有出现过的数据,作为候选1项集。
2.挖掘频繁k项集。
    扫描计算候选k项集的支持度。
    剪枝去掉候选k项集中支持度低于最小支持度α的数据集,得到频繁k项集。如果频繁k项集为空,则返回频繁k-1项集的集合作为算法结果,算法结束。如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束。
    基于频繁k项集,连接生成候选k+1项集。
3.利用步骤2,迭代得到k=k+1项集结果。
4.利用得到的频繁项集进行置信度规则分析,得到强关联关系的项集关系


优点:适合稀疏数据集、原理简单易实现

缺点:数据量大时不适用,耗时耗内存

注:Apriori算法是一种很基础的算法,很多算法都是从中展开,比如FP-growth等

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值