最近看了一篇推文,以下是我的心得。作者是腾讯的一位大神,辛俊波。对推荐系统做了一个总结!!!!链接:https://mp.weixin.qq.com/s/LEkTcasLGVayJqFcoS4jPQ
1、推荐系统概述
推荐系统就是根据用户的信息来猜测用户感兴趣的物品然后进行推荐。辛俊波总结了一个概念:推荐系统就是一个给 user 匹配 ( match ) 感兴趣的 item 的过程。
在推文中也很详细地提到了推荐和搜索的异同点,主要是意图、时效、实体和相关性要求不同,但是本质上都是两两匹配的过程并且目标是相同的。
2、推荐系统的传统匹配模型
2.1 基于协同过滤的方法
2.1.1 CF模型
协同过滤基于一个最基本的假设:一个用户的行为,可以由和他行为相似的用户进行预测。CF 按照类型可以分为3种,user-based CF、item-based CF 和 model-based CF。
User-base CF:通过对用户喜欢的 item 进行分析,如果用户 a 和用户 b 喜欢过的 item 差不多,那么用户 a 和 b 是相似的。
Item-base CF:item A 和 item B 如果被差不多的人喜欢,认为 item A 和 item B 是相似的。
Model-base CF:也叫基于学习的方法,通过定义一个参数模型来描述用户和物品、用户和用户、物品和物品之间的关系,然后通过已有的用户-物品评分矩阵来优化求解得到参数。
在CF模型中,我们会遇到矩阵中存在未知部分的情况,可以通过SVD(Singular Value Decomposition)解决。
但是用SVD求解会存在以下问题:
(1)、Missing data ( 在数据集占比超过99% ) 和 observe data 权重一样。
(2)、最小化过程没有正则化 ( 只有最小方差 ),容易产生过拟合。
2.1.2 MF矩阵分解模型
矩阵分解模型的核心思想是(1)将打分矩阵分解成user和item的隐向量。(2)然后再求这两个隐向量的点积,可以得到一个value,这个value就是代表user对item的喜好程度。
同时在矩阵模型中还引入了L2正则化来解决过拟合的问题。
2.1.3 FISM模型
Factored Item Similarity Model,简称 FISM,顾名思义,就是将用户喜欢过的 item 作为用户的表达来刻画用户:注意到用户表达不再是独立的隐向量,而是用用户喜欢过的所有 item 的累加求和得到作为 user 的表达
2.1.4 SVD++ 模型
SVD++可以看作是结合MF和FISM的模型。表达式如下:2.2 Generic feature-based 的方法
上述的方法中,无论是 CF,MF,SVD,SVD++,还是 FISM,都只是利用了 user 和 item 的交互信息 ( ratin g data ),而对于大量的 side information 信息没有利用到。例如 user 本身的信息,如年龄,性别、职业;item 本身的 side information,如分类,描述,图文信息;以及 context 上下文信息,如位置,时间,天气等。因此,传统模型要讲的第二部分,是如何利用这些特征,去构造 feature-based 的 model。
2.2.1 FM模型
FM 模型可以看成由两部分组成, LR 线性模型,以及二阶特征组合,对于每个输入特征,模型都需要学习一个低维的隐向量表达 v,也就是在各种 NN 网络里所谓的 embedding 表示。 数学表达式如下:2.2.2 FM 模型和 MF 、FISM的关系
假如只使用 userid 和 itemid,我们可以发现其实 FM 退化成加了 bias 的 MF 模型。
如果输入包含两个变量,① 用户交互过的 item 集合;② itemid 本身,那么,此时的 FM 又将退化成带 bias 的 FISM 模型。
2.3 传统模型总结
上面介绍的模型都是通过打分预测来解决推荐系统的排序问题,这在很多时候一般都不是最优的,原因有如下几个方面:
(1)、预测打分用的 RMSE 拟合的是最小方差 ( 带正则 ),而实际面临的是个排序问题。
(2)、观察数据的差距,用户一般倾向于给自己喜欢的 item 打分,而用户没有打分过的 item 未必就真的是不喜欢,对于未知的打分预测,无法大概率地做到拟合用户的想法。
3、基于 representation learning 的深度匹配模型
深度学习匹配模型从大致方向上可以分为两大类,分别是基于 representation learning 的模型以及 match function learning 的模型。
representation learning,也就是基于表示学习的方法。这种方法会分别学习user的 representation 以及 item 的 representation,然后通过定义 matching score 的函数来得到两者的匹配分数。
基于 representation learning 的深度学习方法,又可以分为两大类,基于 CF 以及 CF + side info 的方法。
3.1 基于 Collaborative Filtering 的方法
3.1.1 CF 模型 ( collaborative filtering )
CF 是 representation learning 最基础的模型3.1.2 DMF模型 ( Deep Matrix Factorization )
DMF 模型也就是深度矩阵分解模型,在传统的 MF 中增加了 MLP 网络。
DMF 深度矩阵分解模型框架
input layer:由两部分组组成,其中 user 由 user 交互过的 item 集合来表示,是个 multi-hot 的打分表示,如 [0 0 4 0 0 … 1 5 …],在矩阵中用行表示;item 也由交互过的 user 集合来表示,也是个 multi-hot 的表示,如 [5 0 0 3 … 1 3],在矩阵中用列表示。
Multi-Layer-Perceptron:也就是经典的全连接网络。
matching function:通过余弦来求相似。
缺点:若user或者item特别大,参数空间将变得非常大。
3.1.3 AutoRec 模型
用user和item的向量投射到低维空间后再投射到正常空间,然后再利用utoencoder 中目标值和输入值相近的特性来重建出用户对于为交互过的item的打分。
item-based 的 autoRec 模型
3.1.4 CDAE模型 ( Collaborative Denoising Auto-Encoders )
CDAE 模型类似 SVD++ 的思想,除了 userid 本身表达用户,也将用户交互过的 item 作为 user 的表达。
CDAE 模型结构
如上图所示的 input layer 节点,绿色节点表示每个用户交互过的 item,最下面的红色节点 user node 表示用户本身的偏好,可以认为是 userid 的表达。
3.1.5 基于 CF 方法的深度模型总结
(1)、User 或者 item 要么由本身 id 表达,要么由其历史交互过的行为来表达
(2)、用历史交互过的行为来作为 user 或者 item 的表达,比用 id 本身表达效果更好,但模型也变得更复杂
(3)、Auto-encoder 本质上等同于 MLP+MF,MLP 用全连接网络做 user 和 item 的 representation 表达
(4)、所有训练数据仅用到 user-item 的交互信息,完全没有引入 user 和 item 的 side info 信息。
3.2 基于 Collaborative Filtering+ side information 的方法
基于 CF 的方法没有引入 side information,因此,对于 representation learning 的第二种方法,是基于 CF + side info,也就是在 CF 的方法上额外引入了 side info。
3.2.1 DCF 模型 ( Deep Collaborative Filtering )
输入的除了用户和物品的交互矩阵,还有用户特征 X 和物品特征 Y。 DCF 模型框架损失函数优化,需要最小化用户侧特征的 reconstruction 和 item 侧的 encoder 部分,以及交互矩阵和预测矩阵的平方差,还有加上 L2 正则。
简单理解,整个模型的学习,既需要保证用户特征 X 和物品特征 Y 本身 encode 尽可能准确 ( auto-encoder 的 reconstruction 误差 ),又需要保证用户对物品的预估和实际观测的尽可能接近 ( 矩阵分解误差 ),同时正则化也约束了模型的复杂度不能太高。
DUIF 模型 ( Deep User and Image Feature Learning )
通过 CNN 网络提取的图片特征作为 item 的表达,然后用一个线性映射可以得到 item 的 embedding 表达。
3.2.3 ACF 模型 ( Attentive Collaborative Filtering )
ACF,就是在传统的 CF 里引入了 attention 机制。这里的 attention 有两层意思,第一层 attention,认为用户历史交互过的 item 的权重是不一样的;另一个 attention 意思是,用户同一个 item 里到的视觉特征的权重也是不一样的。
ACF 模型结构
网友评论