推荐系统中的几种常用算法
• 基于内容的推荐
ü 内容特征表示,特征学习,推荐列表
• 基于协同过滤的推荐
ü 群体智能,用户历史行为
• 基于关联规则的推荐
ü Transaction,频繁项集和关联规则挖掘
• 基于效用的推荐
ü 效用函数的定义
• 基于知识的推荐
ü 知识图谱的创建
• 组合推荐
ü 实际工作中经常采用
ü 每种推荐算法都有自己的使用场景,可以综合考虑
基于关联规则的推荐算法:
Apriori算法
FPGrowth算法
PrefixSpan算法
什么是关联规则
关联规则:Association Rules,或者是 Basket Analysis
解释了:如果一个消费者购买了产品A,那么他有多大几率会购买产品B?
关联规则是基于transaction,而协同过滤基于用户偏好(评分)
商品组合使用的是购物篮分析,也就是Apriori算法,协同过滤计算的是相似度
关联规则没有利用“用户偏好”,而是基于购物订单进行的频繁项集挖掘
Apriori算法的流程是怎样的
Apriori算法的流程:
Step1,K=1,计算K项集的支持度;
Step2,筛选掉小于最小支持度的项集;
Step3,如果项集为空,则对应K-1项集的结果为最终结果。
否则K=K+1,重复1-3步。
Apriori算法存在哪些不足
Apriori在计算的过程中存在的不足:
可能产生大量的候选集。因为采用排列组合的方式,把可能的项集都组合出来了
每次计算都需要重新扫描数据集,计算每个项集的支持度:浪费了计算空间和时间
相关性分析与回归分析
相关性分析:
如果有一定的相关性了,然后再通过回归分析进一步验证他们之间的准确关系
通过相关分析求得相关系数没有回归分析的准确
相关分析是一种描述性的分析,而回归分析得到的结果更为重要和准确
使用DataFrame显示各元素间的相关性:
DataFrame.corr(method=’pearson’, min_periods=1)
method参数
pearson,衡量两个数据集合是否在一条线上面,针对线性数据的相关系数计算,对于非线性数据有误差
kendall,反映分类变量相关性的指标,通常用于评分数据一致性水平研究,比如评委打分,数据排名等
spearman:非线性的,非正太分布的数据的相关系数
pearson系数,使用最广泛的相关性统计量,用于测量两组连续变量之间的线性关联程度
回归分析:
回归分析(Regression) :
确定两种或两种以上变量之间相互依赖的定量关系的统计方法,使用非常广泛
按照涉及的变量的多少,分为一元分析和多元回归分析
按照因变量的多少,分为简单回归分析和多重回归分析
按照自变量和因变量之间的关系类型,分为线性回归分析和非线性回归分析
线性回归模型
损失函数
损失函数可以衡量模型的好坏
MSE,均方误差,是在回归问题中比较常用的损失函数
clf = linear_model.LinearRegression()
fit(X,y),训练,拟合参数
predict(X) ,预测
coef_ ,存放回归系数
intercept_,存放截距
score(X,y), 得到评分结果,R方(确定系数)
R方(r-squared):
R方也叫确定系数(coefficient of determination),表示模型对现实数据拟合的程度,评估预测效果
R方计算,等于1减去y对回归方程的方差(未解释离差)与y的总方差的比值
一元线性回归中R方等于皮尔逊积矩相关系
比如,R平方=0.8,表示回归关系可以解释因变量80%的变异。换句话说,如果我们能控制自变量x不变,那么因变量y的变异程度会减少80%
在sklearn计算中,相关系数有正负
关联规则中的支持度、置信度和提升度代表的什么,如何计算
支持度:是个百分比,指的是某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的频率越大。
“牛奶”的支持度=4/5=0.8
“牛奶+面包”的支持度=3/5=0.6。
置信度:是个条件概念
指的是当你购买了商品A,会有多大的概率购买商品B
置信度(牛奶→啤酒)=2/4=0.5
置信度(啤酒→牛奶)=2/3=0.67
提升度:商品A的出现,对商品B的出现概率提升的程度
提升度(A→B)=置信度(A→B)/支持度(B)
提升度的三种可能:
提升度(A→B)>1:代表有提升;
提升度(A→B)=1:代表有没有提升,也没有下降;
提升度(A→B)<1:代表有下降。
订单编号
购买的商品
1
牛奶、面包、尿布
2
可乐、面包、尿布、啤酒
3
牛奶、尿布、啤酒、鸡蛋
4
面包、牛奶、尿布、啤酒
5
面包、牛奶、尿布、可乐
关联规则与协同过滤的区别
关联规则是基于transaction,而协同过滤基于用户偏好(评分)
商品组合使用的是购物篮分析,也就是Apriori算法,协同过滤计算的是相似度
关联规则没有利用“用户偏好”,而是基于购物订单进行的频繁项集挖掘
当下的需求:
推荐的基础是且只是当前一次的购买/点击 (关联规则)
长期偏好:
基于用户历史的行为进行分析,建立一定时间内的偏好排序(协同过滤)
两种推荐算法的思考维度不同,很多时候,我们需要把多种推荐方法的结果综合起来做一个混合的推荐。
关联规则中的最小支持度、最小置信度该如何确定
最小支持度,最小置信度是实验出来的
最小支持度:
不同的数据集,最小值支持度差别较大。可能是0.01到0.5之间
可以从高到低输出前20个项集的支持度作为参考
最小置信度:可能是0.5到1之间
提升度:表示使用关联规则可以提升的倍数,是置信度与期望置信度的比值
提升度至少要大于1