关联规则
# 关联:把两个或者两个以上在意义上,有密切联系的项组合在一起
# 关联规则: 从大量的数据中挖掘出有价值的数据项之间的相关关系
# 两个不相交的非空集合X、Y,如果有X -> Y,就说明 X -> Y 是一条关联规则,其强度用支持度和自信度来描述,关联规则是否可用,用提升度来描述
# 挖掘定义:给定一个数据集,找出其中所有支持度 support >= min_support,自信度 confidence >= min_confidence 的关联规则
# 协同过滤: 常用户分辨某位特定客户可能感兴趣的东西,这些结论来自于对其他相似客户对那些产品感兴趣的分析
# Apriori 核心思想通过连接产生候选项以及支持度然后通过剪枝生成频繁项集
数据源
"""
交易ID 购买商品
T1 牛奶面包
T2 面包,尿布,啤酒,鸡蛋
T3 牛奶,尿布,啤酒,可乐
T4 面包,牛脑,尿布,啤酒
T5 面包,牛奶,尿布,可乐
"""
原理
# 支持度 support(X -> Y) = 集合X与集合Y中的项在一条记录中_同时出现的次数 / 数据总记录数
# support((啤酒) -> (尿布)) = count(啤酒 and 尿布) / count(*) = 3/5 = 60%
# 支持度 confidence(X->Y) = 集合X与集合Y中的项在一条记录中_同时出现的次数 / 集合X出现的次数
# confidence((啤酒)->(尿布)) = count(啤酒 and 尿布) / count(啤酒) = 3/3 = 100%
# 提升度 度量规则是否可用的指标,描述的是相对于不用规则,使用规则可以提高多少
# lift({A->B}) = confidence({尿布} -> {啤酒}) / support(啤酒) = 0.75/0.6 = 1.25
# ((啤酒 and 尿布) vs 啤酒) VS (啤酒 vs 全部记录))
# 计算步骤:
# 1. 扫描数据集,统计一次候选项集出现的次数
"""
候选项集 次数 支持度
牛奶 4 0.8
面包 4 0.8
尿布 4 0.8
啤酒 3 0.6
鸡蛋 1 0.2
可乐 2 0.4
"""
# 2. 清除不满足条件的候选项(与预先设定的最小支持度阈值对比),得到一级项
"""
候选项集 次数
牛奶 4
面包 4
尿布 4
啤酒 3
"""
# 3. 从一级项集合中,组合二集候选项,统计数据集中他们出现的次数
"""
项集 候选项集 次数
牛奶 牛奶,面包 3
面包 牛奶,尿布 3
尿布 牛奶,啤酒 2
啤酒 面包,尿布 3
面包,啤酒 2
尿布,啤酒 3
"""
# 4. 清除不满足条件的候选项集,得到二级项集
"""
候选项集 次数
牛奶,面包 3
牛奶,尿布 3
面包,尿布 3
尿布,啤酒 3
"""
# 5.从二级项集中,组合三级候选项集,统计数据集它们出现的次数,最后我们发现次数都小于3,算法就可以停止了
"""
候选项数 次数
牛奶,面包,尿布 2
牛奶,面包,啤酒 1
牛奶,尿布,啤酒 2
面包,尿布,啤酒 2
"""
参考文献
作者A:ken