一、推荐系统作用
- 用户:在现在信息爆炸时代,信息及其多,我们在浏览作业时,琳琅满目的。但是推荐系统就可以帮助用户快速发现有用信息的工具
- 商家:通过推荐系统可以提供个性化服务,提高用户信任度和粘性也就是购买性
- 其本质也就是实现将用户-商家-平台之间利益最大化的手段.满足用户,满足商家,满足平台。三方共赢
二、推荐系统应用
推荐系统应用在各种场景中,拥有着广泛案例。比如个性化音乐,电子商务(淘宝),电影视频(抖音),社交网络等等
三、推荐系统的分类
- 根据实时性分类
1)离线推荐
2)实时推荐 - 根据推荐原则分类
1)基于相似度推荐
2)基于知识推荐
3)基于模型推荐 - 根据推荐是否个性化分类
1)基于统计推荐
2)个性化推挤
注:还有其他不同的分类,可以项亮的《推荐系统实践》
四. 常用评测指标
4.1.用户满意度
用户是推荐系统中非常重要的参与者,他们的满意度也直接决定了推荐系统的好坏. 但用户满意度这个指标无法离线计算, 只能通过用户调查或者在线获得. 一般是通过用户的线上行为统计得到的, 比如电商场景中, 用户如果购买了推荐的商品说明一定程度上他们是满意的, 因此可以通过购买率度量用户的满意度,与购买率类似的点击率, 用户停留时间和转化率等指标都可以用来度量用户的满意度.
4.2.预测准确度
预测准确度是用来度量用户的实际行为与推荐系统预测结果的准确度, 该指标是最重要的离线评价指标, 因为可以通过离线计算得到. 下面是预测准确度最常用的两个指标.
- 评分预测
预测用户对物品的评分行为成为评分预测, 通过对用户的历史物品评分记录进行建模, 进而得到用户的兴趣模型, 然后使用该模型预测用户未未见过商品的评分.评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算.对于测试集中的一个用户u uu和物品i ii,令r u i r_{ui}rui是用户u uu对物品i ii的实际评分,而r u i ^ \hat{r_{ui}}rui^是推荐模型预测出的评分,那么RMSE可以定义为:R M S E = ∑ u , i ∈ T ( r u i − r ^ u i ) 2 ∣ T ∣ RMSE = \sqrt{\frac{\sum_{u,i \in T}(r_{ui} - \hat{r}{ui})^2}{|T|}}RMSE=∣T∣∑u,i∈T(rui−r^ui)2MAE定义为:M A E = ∑ u , i ∈ T ∣ r u i − r ^ u i ∣ ∣ T ∣ MAE = \frac{\sum{u,i \in T}|r_{ui} - \hat{r}_{ui}|}{|T|}MAE=∣T∣∑u,i∈T∣rui−r^ui∣RMSE由于存在平方项,使得使得用户真实评分与推荐系统预测评分相差较大的用户加大了惩罚,即该评测指标对系统要求更加的苛刻 - TopN推荐
推荐系统在给用户推荐物品的时候,往往会给用户一个列表的推荐物品,这种场景下的推荐成为是TopN推荐,该推荐方式最常用的预测准确率指标一般是精确率(precision)和召回率(recall),令R ( u ) R(u)R(u)为通过推荐模型得到的推荐列表,T ( u ) T(u)T(u)为用户在实际场景中(测试集)的行为列表.
1)、 精确率(precision): 分类正确的正样本个数占分类器判定为正样本的样本个数比例(这里R ( u ) R(u)R(u)相当于是模型判定的正样本)P r e c i s i o n = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U ∣ R ( u ) ∣ Precision= \frac{\sum_{u \in U}|R(u) \cap T(u)|}{\sum_{u \in U}|R(u)|}Precision=∑u∈U∣R(u)∣∑u∈U∣R(u)∩T(u)∣
2)、召回率(recall): 分类正确的正样本个数占真正的正样本个数的比例
(这里的T ( u ) T(u)T(u)相当于真正的正样本集合)
R e c a l l = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U ∣ T ( u ) ∣ Recall= \frac{\sum_{u \in U}|R(u) \cap T(u)|}{\sum_{u \in U}|T(u)|}Recall=∑u∈U∣T(u)∣∑u∈U∣R(u)∩T(u)∣
有时候为了更加全面的评估TopN推荐,通常会选取不同的推荐列表长度计算多组精确率与召回率然后分别绘制出精确率曲线和召回率曲线,需要注意的是这里并不是PR曲线,感兴趣的可以了解一下PR曲线相关的知识.
4.3 覆盖率
他是用来描述一个推荐系统对物品长尾的发掘能力,一个简单的定义可以是:推荐系统所有推荐出来的商品集合数占总物品集合数的比例.但是对于相同的覆盖率,不同物品的数量分布,或者说是物品的流行度分布是可以不一样的.为了更好的描述推荐系统挖掘长尾的能力,需要统计不同物品出现次数的分布.如果所有的物品都出现在推荐列表中,并且出现的次数都差不多,那么推荐系统发掘长尾的能力就很好.所以可以通过研究物品在推荐列表中出现的次数分布来描述推荐系统挖掘长尾的能力,如果这个分布比较平缓说明推荐系统的覆盖率比较高,而如果分布比较陡说明推荐系统的覆盖率比较低.下面分别使用信息熵和基尼系数来定义覆盖率.
信息熵定义覆盖率: 其中p ( i ) p(i)p(i)是物品i ii的流行度除以所有物品流行度之和H = − ∑ i = 1 n p ( i ) l o g p ( i ) H = -\sum_{i=1}^n p(i) logp(i)H=−i=1∑np(i)logp(i)基尼系数定义覆盖率: 其中i j i_jij是按照物品流行度p从小到大排序的物品列表中第j jj个物品G = 1 n − 1 ∑ j = 1 n ( 2 j − n − 1 ) p ( i j ) G=\frac{1}{n-1} \sum_{j=1}^{n}(2j-n-1)p(i_{j})G=n−11j=1∑n(2j−n−1)p(ij)
4.4、 多样性
人的兴趣爱好是比较广泛的,一个好的推荐系统得到的推荐列表中应该尽可能多的包含用户的兴趣,只有这样才能增加用户找到感兴趣物品的概率.度量推荐列表中物品的多样性换句话说就是度量推荐列表中所有物品之间的不相似性,可以通过不同的相似性函数来度量推荐列表中商品的相似性,比如商品基于内容的相似,基于协同过滤的相似,这样就可以得到不同角度的多样性.令函数s ( i , j ) s(i,j)s(i,j)为物品i ii和物品j jj的相似性,那么用户推荐列表的多样性可以定义为:D i v e r s i t y ( R ( u ) ) = 1 − ∑ i , j ∈ R ( u ) s ( i , j ) 1 2 ∣ R ( u ) ∣ ( ∣ R ( u ) ∣ − 1 ) Diversity(R(u))=1-\frac{\sum_{i,j \in R(u)}s(i,j)}{\frac{1}{2}|R(u)|(|R(u)|-1)}Diversity(R(u))=1−21∣R(u)∣(∣R(u)∣−1)∑i,j∈R(u)s(i,j)推荐系统整体的多样性可以定义为所有用户推荐列表多样性的平均值:D i v e r s i t y = 1 U ∑ u ∈ U D i v e r s i t y ( R ( u ) ) Diversity = \frac{1}{U} \sum_{u\in U}Diversity(R(u))Diversity=U1u∈U∑Diversity(R(u))
4.5、 新颖性
满足推荐的新颖性最简单的方法就是给用户推荐他们之前没有看过的物品,但是每个用户没见过的物品数量是非常庞大的,所以一般会计算推荐物品的平均流行度,流行度越低的物品越有可能让用户觉得新颖,因此,如果推荐结果中的物品平均热门程度比较低说明推荐的结果就可能比较新颖.
4.6、AUC曲线
AUC(Area Under Curve),ROC曲线下与坐标轴围成的面积
在讲AUC前需要理解混淆矩阵,召回率,精确率,ROC曲线等概念
TP:真的真了(真实值是真的,预测也是真)
FN:真的假了(真实值是真的,预测为假了)
FP:假的真了(真实值是假的,预测为真了)
TN:假的假了(真实值是假的,预测也是假)
召回率与准确率(上述已经进行了说明),下面是另一种形势的定义,本质上都是一样的:R e c a l l = T P T P + F N P r e c i s e = T P T P + F P Recall = \frac{TP}{TP+FN}\ Precise=\frac{TP}{TP+FP}Recall=TP+FNTP Precise=TP+FPTPROC曲线:
ROC曲线的横坐标为假阳性率(False Positive Rate, FPR),N是真实负样本的个数, FP是N个负样本中被分类器预测为正样本的个数。纵坐标为真阳性率(True Positive Rate, TPR),P是真实正样本的个数,TP是P个正样本中被分类器预测为正样本的个数。
4.6、商业目标
目标商家想要目的
评价指标有12这样
注:还有其他的评价指标具体可以参考项亮的《推荐系统实践》
五、召回
5.1、召回层在推荐系统架构中的位置及作用
在推荐系统架构中召回层与排序层是推荐系统的核心算法层,而将推荐过程分成召回层与排序层主要是基于工程上的考虑,召回阶段负责将海量的候选集快速缩小为几万到几千的规模;而排序层则负责对缩小后的候选集进行精准排序。所以在召回阶段往往会利用少量的特征和简单的模型对大规模的数据集进行快速的筛选,而在排序层一般会使用更多的特征和更加复杂的模型进行精准的排序。
下面是召回层与排序层的特点
- 召回层
待计算的候选集合大、计算速度快、模型简单、特征较少,尽量让用户感兴趣的物品在这个阶段能够被快速召回,即保证相关物品的召回率 - 排序层
首要目标是得到精准的排序结果。需要处理的物品数量少,可以利用较多的特征,使用比较复杂的模型。
注意:
在设计召回层时,“计算速度”和“召回率”其实是矛盾的两个指标,为提高“计算速度”,需要使召回策略尽量简单一些;而为了提高“召回率”,要求召回策略尽量选出排序模型所需要的候选集,这也就要求召回策略不能过于简单。在权衡计算速度和召回率后,目前工业界主流的召回方法是采用多个简单策略叠加的“多路召回策略”
5.2、多路召回策略
所谓的“多路召回”策略,就是指采用不同的策略、特征或简单模型,分别召回一部分候选集,然后把候选集混合在一起供后续排序模型使用,可以明显的看出,“多路召回策略”是在“计算速度”和“召回率”之间进行权衡的结果。其中,各种简单策略保证候选集的快速召回,从不同角度设计的策略保证召回率接近理想的状态,不至于损伤排序效果。
5.3、 Embedding召回
在当前的主流推荐系统中,Embedding的身影已经无处不在,从一定意义上可以说,把Embedding做好了,整个推荐系统的一个难题就攻克了。
- Embedding是什么?
Embedding其实是一种思想,主要目的是将稀疏的向量(如one-hot编码)表示转换成稠密的向量。 - 常见的Embedding技术有哪些?
目前主流的Embedding技术主要可以分为三大类。
1)text embedding
2)image embedding
3)graph embedding
六、推荐系统核心算法
- 协同过滤算法:
包括基于用户的协同过滤(UserCF)和基于商品的协同过滤(ItemCF),这是入门推荐系统的人必看的内容,因为这些算法可以让初学者更加容易的理解推荐算法的思想。 - 矩阵分解算法:
矩阵分解算法通过引入了隐向量的概念,加强了模型处理稀疏矩阵的能力,也为后续深度学习推荐系统算法中Embedding的使用打下了基础。 - FM(Factorization Machines):
该算法属于对逻辑回归(LR)算法应用在推荐系统上的一个改进,在LR模型的基础上加上了特征交叉项,该思想不仅在传统的推荐算法中继续使用过,在深度学习推荐算法中也对其进行了改进与应用。
GBDT+LR: 该模型仍然是对LR模型的改进,使用树模型做特征交叉,相比于FM的二阶特征交叉,树模型可以对特征进行深度的特征交叉,充分利用了特征之间的相关性。 - Wide&Deep:
该模型在推荐系统发展中的重要地位。该算法模型的思想与实现都比较的简单,非常适合初学深度学习推荐系统的学习者们去学习。
最后。如果文章中有不足之处,请务必指出,一定迅速改正。谢谢