码迷,mamicode.com
首页 > 编程语言 > 详细

【机器学习】--关联规则算法从初识到应用

时间:2018-04-07 20:05:41      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:葡萄酒   子集   技术   blog   log   生成   阈值   输入   apriori   

一、前述

  关联规则的目的在于在一个数据集中找出项之间的关系,也称之为购物蓝分析 (market basket analysis)。例如,购买鞋的顾客,有10%的可能也会买袜子,60%的买面包的顾客,也会买牛奶。这其中最有名的例子就是"尿布和啤酒"的故事了。

二、相关概念

关联分析在大规模数据集中寻找有趣关系的任务。这些关系可以有两种形式:频繁项集或者关联规则。
频繁项集:(frequent item sets)是指经常出现在一起的物品的集合,
关联关系:(association rules)暗示两种物品之间可能存在很强的关系。
项与项集:
技术分享图片

 

比如上面的{尿布,葡萄酒}就频繁出现,他们之间可能存在一些关系,辣么,如何来确定是否是频繁项集呢?主要是依靠支持度和可信度。

首先我们来看,什么是规则?规则形如"如果…那么…(If…Then…)",前者为条件,后者为结果。例如一个顾客,如果买了可乐,那么他也会购买果汁。

如何来度量一个规则是否够好?有两个量,置信度(Confidence)和支持度(Support)

假设有如下表的购买记录。

技术分享图片

整理后如图:

技术分享图片

上表中横栏和纵栏的数字表示同时购买这两种商品的交易条数。如购买有Orange的交易数为4,而同时购买Orange和Coke的交易数为2。

 

置信度表示了这条规则有多大程度上值得可信设条件的项的集合为A,结果的集合为B。置信度计算在A中,同时也含有B的概率。即Confidence(A==>B)=P(B|A)。例 如计算"如果Orange则Coke"的置信度。由于在含有Orange的4条交易中,仅有2条交易含有Coke.其置信度为0.5。

 

支持度计算在所有的交易集中,既有A又有B的概率。例如在5条记录中,既有Orange又有Coke的记录有2条。则此条规则的支持度为2/5=0.4。现在这条规则可表述为,如果一个顾客购买了Orange,则有50%的可能购买Coke。而这样的情况(即买了Orange会再买Coke)会有40%的可能发生。支持度是针对项集来说的,因此可以定义一个最小支持度,而只保留满足最小支持度的项集

关联规则要求项集必须满足的最小支持阈值,称为项集的最小支持度(Minimum Support),记为supmin支持度大于或等于supmin的项集称为频繁项集,简称频繁集,反之则称为非频繁集。通常k-项集如果满足supmin,称为k-频繁集,记作Lk。关联规则的最小置信度(Minimum Confidence)记为confmin,它表示关联规则需要满足的最低可靠性。

三、Apriori算法

1、原理

 

如果某个项集是频繁的,那么它的所有子集也是频繁的。该定理的逆反定理为:如果某一个项集是非频繁的,那么它的所有超集(包含该集合的集合)也是非频繁的。Apriori原理的出现,可以在得知某些项集是非频繁之后,不需要计算该集合的超集,有效地避免项集数目的指数增长,从而在合理时间内计算出频繁项集。
2、实现
Apriori算法是发现频繁项集的一种方法。Apriori算法的两个输入参数分别是最小支持度和数据集。该算法首先会生成所有单个物品的项集列表->接着扫描交易记录来查看哪些项集满足最小支持度要求,其中不满足最小支持度的集合会被去掉->然后对剩下的集合进行组合以生成包含两个数据集的项集->接着重新扫描交易记录,去掉不满足最小支持度的项集->该过程重复进行直到所有项集都被滤掉。




 

【机器学习】--关联规则算法从初识到应用

标签:葡萄酒   子集   技术   blog   log   生成   阈值   输入   apriori   

原文地址:https://www.cnblogs.com/LHWorldBlog/p/8734191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!