【机器学习实战】使用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}的支持度,因为这些集合肯定不会满足要求。使用该原理就可以避免项集数目的指数增长,从而在合理时间内计算出频繁项集。

目标:寻找频繁项

  1. 生成所有单个物体的集合C1,去掉不满足最小支持度的集合,生成L1。
  2. 对剩下的集合进行组合生成包含两个元素的项集。重新扫描订单,去掉不满足最小支持度的项集。
  3. 重复进行直到所有项集均被去掉。
    注意:python实现中涉及到frozenset类型,一是防止用户修改集合,二是为了集合作为字典值使用打下铺垫。


目标:挖掘关联规则
  1. 从一个频繁项集出发,创建一个规则列表,规则右部只包含一个元素。分别计算可信度,去掉可信度低的规则。
  2. 合并剩下规则创建新的规则列表,规则右部包含两个元素。如,步骤1中,右部为3的规则可信度低,则右部的两个元素只能是1、2的组合。分别计算可信度,去掉可信度低的规则。
  3. 重复以上步骤。
    以上方法称为分级法。
上一篇下一篇

猜你喜欢

热点阅读