一、支持度、置信度和提升度
支持度:是个百分比,指的是某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的频率越大。
“牛奶”的支持度=4/5=0.8
“牛奶+面包”的支持度=3/5=0.6。
订单编号 | 购买的商品 |
1 | 牛奶、面包、尿布 |
2 | 可乐、面包、尿布、啤酒 |
3 | 牛奶、尿布、啤酒、鸡蛋 |
4 | 面包、牛奶、尿布、啤酒 |
5 | 面包、牛奶、尿布、可乐 |
二、Apriori算法原理
1、Apriori算法就是查找频繁项集(frequent itemset)的过程
频繁项集:支持度大于等于最小支持度(Min Support)阈值的项集。
非频繁项集:支持度小于最小支持度的项集
2、Apriori算法的流程:
Step1,K=1,计算K项集的支持度;
Step2,筛选掉小于最小支持度的项集;
Step3,如果项集为空,则对应K-1项集的结果为最终结果。 否则K=K+1,重复1-3步。
使用工具包: from efficient_apriori import apriori
或者: from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
三、关联规则与协同过滤的区别
1、关联规则是基于transaction,而协同过滤基于用户偏好(评分) 商品组合使用的是购物篮分析,也就是Apriori算法,协同过滤计算的是相似度
关联规则没有利用“用户偏好”,而是基于购物订单进行的频繁项集挖掘
2、推荐使用场景:
当下的需求: 推荐的基础是且只是当前一次的购买/点击
长期偏好: 基于用户历史的行为进行分析,建立一定时间内的偏好排序
两种推荐算法的思考维度不同,很多时候,我们需要把多种推荐方法的结果综合起来做一个混合的推荐
四、关联规则的视角
不需要考虑用户一定时期内的偏好,而是基于Transaction 只要能将数据转换成Transaction,就可以做购物篮分析:
Step1、把数据整理成id=>item形式,转换成transaction
Step2、设定关联规则的参数(support、confident)挖掘关联规则
Step3、按某个指标(lift、support等)对以关联规则排序
五、关联规则中的最小支持度、最小置信度该如何确定
最小支持度,最小置信度是实验出来的
最小支持度:
不同的数据集,最小值支持度差别较大。可能是0.01到0.5之间 可以从高到低输出前20个项集的支持度作为参考
最小置信度:可能是0.5到1之间
提升度:表示使用关联规则可以提升的倍数,是置信度与期望置信度的比值 提升度至少要大于1
六、关联规则算法
基于关联规则的推荐算法:
Apriori算法
FPGrowth算法
PrefixSpan算法