推荐系统初探
首先推荐系统是什么?
推荐系统简单来说就是找出用户当前最感兴趣/想购买的物品/服务。那么如何来找呢?可以根据用户历史行为、社交关系、用户兴趣点、当前上下文环境等方面来进行。
为什么要有推荐系统?
基本上稍微大一点的公司都会有自己的推荐系统,电商推荐用户需要的商品,视频和音乐网站推荐给用户感兴趣的商品,还有像头条这种,如何给用户推送及时的、个性化的、真正感兴趣的新闻消息几乎是头条的核心竞争力了。反正只要是信息/商品的量很多,那么就需要推荐系统来帮助用户进行筛选,展示给用户他们最想要的东西。归根到底,推荐系统为商家增加营收,增加用户粘度;为用户发现新的有趣的东西,帮助用户决策。总结一句话:商家用户都需要推荐系统。
推荐的评价标准
- 计算预测打分和实际评分的RMSE(均方根误差),MAE(平均绝对值误差)。
- 对评分进行top-K选择然后计算预测集合的准确率和召回率。
- 覆盖率(推荐热门商品的同时尽量覆盖到冷门商品)
- 多样性(考虑推荐差异不同种类的商品的差异性)
当然在不同的推荐场景中,还会考虑到新颖度、信任度、惊喜度、实时性等不同要求。
经典推荐算法
基于内容的推荐:
- 直接针对已知的用户感兴趣内容进行推荐,不需要关心其他用户的行为。
- 需要计算和已知内容相似度。
- 需要对推荐的东西进行建模
- 通常用在文本相关领域。
协同过滤:
根据user-item评分矩阵,根据矩阵中已有的一些评分来估计未知的评分。协同过滤分为基于item和基于user的。
基于item的是先在找一些和当前item最相似的item,然后用当前用户已打分的item评分加权平均作为当前用户当前item的评分。例如:
和movies1最相似的是movies3和movies6,于是计算(v_{1,6})的评分为:(v_{1,6}=frac{2 imes 0.41+3 imes 0.59}{0.41+0.59}=2.59)
基于user的是先找到和你兴趣相似的其他用户,然后向你推荐其他用户感兴趣的item。
两种协同过滤的对比:
协同过滤的优点:
- 只需要user-item矩阵,不需要对item进行建模
- 当用户行为丰富时(矩阵不稀疏),效果较好
协同过滤缺点:
- 只取决于历史行为,与当前上下文无关。
- 需要大量的用户行为。
- 矩阵稀疏时效果不好。(此时可以考虑二度关联对矩阵进行填充)
隐语义模型
隐语义模型最早应用在文本中,是为了解决文本数据特征维度高,但样本稀疏的问题的。同样隐语义模型也可以使用在推荐系统中。
直接将user-item矩阵进行矩阵分解(widehat{R}=P imes Q^T),R中的每一个值(widehat{r_{ij}}=p_{i}q_{j}^T=sum_{k=1}^{K}p_{ik}q_{kj})。
为了求解(P,Q),损失函数(e_{ij}=(r_{ij}-widehat{r_{ij}})^2=(r_{ij}-sum_{k=1}^{K}p_{ik}q_{kj})^2)。当然还需要加上正则项控制模型的复杂度,排除掉user和item的bias。于是需要优化的损失函数为:$$C=sum_{i,j}(r_{ij}-(mu+b_{i}+b_{j}+p_{i}q_{j}T))2+lambda_1sum_i{||b_i||2}+lambda_2sum_j{||b_j||2}+lambda_3sum_i{||p_i||2}+lambda_4sum_j{||q_j||2}$$
然后使用梯度下降,求偏导,写出迭代更新公式,求出(P,Q)。
FM(Factorization Machine)
FM和隐语义模型的做法差不多,都是矩阵分解,但是FM主要用在特征组合问题,由于经过One-Hot编码后的特征维度很高,用FM使用隐变量来降低进行特征组合时的复杂度。$$y(mathbf{x}) = w_0+ sum_{i=1}^n w_i x_i + sum_{i=1}^n sum_{j=i+1}^n w_{ij} x_i x_j $$
转换为:
其中(W=V^TV),(v_i)是(k)维向量。
关于FM,这篇博客写的很详细。还有FM的论文,FM在KDD2012中的使用。
FFM(Field-aware Factorization Machine)
FFM是FM的改进版,将特征归为不同的field,同一个特征在对不同field特征进行组合时使用不同的隐向量,因此,FFM的二次参数从FM的(kn)个增加到(kfn)个。可以说FM是FFM的简化版或特例。
FFM的论文,LIBFFM项目主页。
参考:
https://zhuanlan.zhihu.com/p/24202220
http://blog.csdn.net/harryhuang1990/article/details/9924377
http://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html
https://tracholar.github.io/machine-learning/2017/03/10/factorization-machine.html
http://www.meihua.info/a/65329
延伸阅读:
深度学习在推荐系统中的应用
DNN在CTR预估上的应用