【机器学习实战】使用Apriori算法进行关联分析
2019-02-22 本文已影响0人
吵吵人
关联分析
关键问题:寻找物品的不同组合,找到频繁项集,进而进行关联分析。
1.频繁项集
定义:指经常出现在一起的物品的集合。
指标:支持度,即数据集中包含该项集的记录所占的比例。如,在5条记录中,{豆奶,尿布}出现了3次,所以{豆奶,尿布}的支持度为3/5.
2.关联规则
定义:暗示两种物品之间可能存在很强的关系。
指标:可信度(置信度)。如, 针对 {尿布}-->{葡萄酒} 关联规则,可信度被定义为"支持度({尿布,葡萄酒} )/ 支持度({尿布})"。
只保留支持度、可信度(置信度)大于指定值的项集。
Apriori原理
如果某个项集是频繁的,那么它的所有子集也是频繁的。反过来,如果一个项集是非频繁的,那么它的所有超集也是不频繁的。
如,已知阴影项集{2,3}是非频繁的。则项{0,2,3} ,{1,2,3}以及{0,1,2,3}也是非频繁的。也就是说,一旦计算出了{2,3}的支持度,就不需要再计算{0,2,3}、{1,2,3}和 {0,1,2,3}的支持度,因为这些集合肯定不会满足要求。使用该原理就可以避免项集数目的指数增长,从而在合理时间内计算出频繁项集。
目标:寻找频繁项
- 生成所有单个物体的集合C1,去掉不满足最小支持度的集合,生成L1。
- 对剩下的集合进行组合生成包含两个元素的项集。重新扫描订单,去掉不满足最小支持度的项集。
- 重复进行直到所有项集均被去掉。
注意:python实现中涉及到frozenset类型,一是防止用户修改集合,二是为了集合作为字典值使用打下铺垫。
目标:挖掘关联规则
- 从一个频繁项集出发,创建一个规则列表,规则右部只包含一个元素。分别计算可信度,去掉可信度低的规则。
- 合并剩下规则创建新的规则列表,规则右部包含两个元素。如,步骤1中,右部为3的规则可信度低,则右部的两个元素只能是1、2的组合。分别计算可信度,去掉可信度低的规则。
- 重复以上步骤。
以上方法称为分级法。