关联分析的目的是找到事务间的关联性,用以指导决策行为。如“67%的顾客在购买啤酒的同时也会购买尿布”,因此通过合理的啤酒和尿布的货架摆放或捆绑销售可提高超市的服务质量和效益。又如“‘C语言’课程优秀的同学,在学习‘数据结构’时为优秀的可能性达88%”,那么就可以通过强化“C语言”的学习来提高教学效果。
接下来我会分为四部分来讲解
我们先明确一些概念:
频繁项集:经常出现在一块儿的物品的集合。
关联规则:暗示两种物品之间可能存在很强的关系。
支持度(support):
项在事务中发生的频率。
支持度表示项集{X,Y}在总项集里出现的概率。
公式为:
Support(X- +Y) = P(X,Y)/P(I) = P(X∪Y) /P(I)
其中,I表示总事务集。
置信度(Confidence): .
表示在先决条件x发生的情况下,由关联规则”X→Y"推出Y的概率。
即在含有x的项集中,含有Y的可能性,公式为:
Confidence(X-→Y)= P(Y|X) = P(X,Y)/ P(X) = P(XUY)/ P(X)
提升度(Lift):
表示含有x的条件下,同时含有Y的概率,与Y总体发生的概率之比。
Lift(X→Y)= P(Y|X) / P(Y)
关于关联分析还有另外的算法,这里讲解Apriori算法
这里的逆否命题怎么理解呢?就是说比如一个项集{2,3},不是频繁的,那么它的超集{2,3,5}就一定不是频繁的。
下面我会举个例子,来讲解这个算法
由表,我们找出频繁项集(其中阈值是由我们随便设的)
剪枝加自连接,得到我们最后的频繁项集
由频繁项集产生强关联规则,然后算关联规则之间的置信度和提升度
由此我们得出,用户感兴趣的规则为儿童床→蚊帐或蚊帐→儿童床。
这里明确一个强关联规则中提升度的概念,要使我们两个东西之间关联是有效的,就需要计算提升度,大于1的提升度,才是用户感兴趣的,有效的。
那么怎么区分理解置信度和提升度?置信度也就是说在买了冰丝凉席之后又去买儿童床的概率,提升度则是衡量冰丝凉席→儿童床这条规则是否有效。如果冰丝凉席→儿童床=0,就说明两者独立不存在关联性,用户一般就会单独购买两者,不会一起买。就比如1号炒锅和2号炒锅,用户买了1号之后,就不会再买2号了,因为用户已经有了炒锅。=0就说明两者是这两种炒锅的关系。