- 论文链接: https://datajobs.com/data-science-repo/Recommender-Systems-%5BNetflix%5D.pdf
- 全文由『说文科技』原创出品,文章同步更新于公众号『说文科技』。版权所有,翻版必究。
这一篇由雅虎研究院和AT&T公司联合发表在IEEE的文章,翻开了推荐系统新的篇章。该团队提出使用矩阵分解(Matrix Factoriztion)的技术来实现商品推荐,而帮助MF算法一炮成名的舞台则是Netflix Prize competition,在这届机器学习的江湖大会上,再次证明了江湖上了一个道理:要想成为天下第一,首先得能干掉天下第一。毫无疑问,通过引入各种可以使用的隐式数据后,MF的RMSE降到了0.88以下!自此之后,推荐系统正式进入到矩阵分解时代。
1. 前言
为啥要搞推荐系统:
- 提升用户满意度,提升用户忠诚度。
- 良好的个性化推荐结果会将用户体验提升到另一个层次。
例如:Amazon 和 Netflix 的推荐系统已经是一个非常重要的组成部分了,所以有非常大的必要去搞推荐系统。
2. 背景
推荐系统主要有两种策略:
2.1. content filtering
为每个user 或者产品创建一个profile,目的是为了characterize its nature.
比如:为一个电影可以创建一个包含题材、出演演员、票房人气等特征的简介
优点:
缺点:需要收集外部知识,但是这些知识可能不好获取。
2.2. collaborative filtering
仅仅依赖用户过往的行为,例如之前的交易,或者是产品打分。不要求显式profile的创建。
cf 分析用户之间的关系和产品之间的相互依存关系,用于识别新的user-item 联系。
优点:
- domain free (领域无关),因此可以用于处理那些获取内容属性不太方便的问题
- 比content-based techniques 更加精准,
缺点: - 冷启动问题:对于一名新的用户,或者是新的产品。没法有很充足的交互,所以对于这些user、product,使用content filtering更优。
collaborative filtering 的两个主要领域:(1)neighborhood methods【邻域】;(2)latent factor models【隐式分解】;
-
neighborhood methods:聚焦计算item或者user间的关系。
- the item-oriented approach : 评估用户对一个item 的偏爱,评估的方式是:基于同一个用户给出"相邻近"的item对目标item的评分。 (这个很好理解,比如一个用户有喜欢的A 项目,也有B,这里就判断)
- the user-oriented approach :
-
latent factor models:
这里的隐式分解的纬度只有2个纬度:性别(男or女)和真实程度(严肃or魔幻)
通过隐式分解得到的因子可能会衡量明显的纬度,比如喜剧 vs 戏剧,动作量、对儿童的取向。
3. 方法
Some of the most successful realizations of latent factor models are based on matrix factorization.
3.1. matrix factorization methods
优势:
- 模型可以方便地聚合数据的关键方面,如多种形式的反馈,时序动态,和置信水平。
3.2. 显式反馈指的就是ratings
最方便的数据就是高质量的显式反馈。
显式反馈通常是一个稀疏矩阵,原因很好理解:用户只会对极少部分的item进行打分。
3.3. 隐式反馈
- 用户的历史购买行为,浏览历史,搜索模式,甚至是鼠标移动记录。
隐式反馈拿到的数据通常就是一个稠密矩阵了。
3.4. 基础的矩阵分解模型
每个item 由一个 f 维向量表示,qiq_iqi;每个用户也由f维向量表示,pup_upu。向量各维度上的值表示这个item拥有这个因子的程度,或正或负。
那么用户对这个item的打分就是使用两个向量之间的点积来估算:
那么主要的问题就在于『如何获取表示用户、item的向量了』。
之前的工作做法:『直接建模用户的打分,同时使用正则化的方法避免过拟合』
The system learns the model by fitting the previously observed ratings.
通过参数 λ\lambdaλ控制正则化程度,这个参数可以通过交叉验证来控制(取多少)。
优点:
(1)灵活性:可以用于处理各种不同的数据,同时可以保证其它的具体应用的要求。
3.5. SVD(singular value decomposition)
- SVD 难以处理矩阵是不完整的情况(稀疏矩阵)
- Conventional SVD is undefined when knowledge about the matrix is incomplete. (当矩阵缺失很多元素时,传统的SVD在这方面没有充分的研究)
- 容易过拟合
处理稀疏矩阵:
- 补充值:成本很高;同时填充的数据不置信。
3.6. adding biases
思考:为啥要加这个呢?
(1)很多ratings 与 (user和item间的交互)无关;仅仅受item自身的影响。
用原文的话,就是这么说的:
同时上文还给出了一个例子:典型的协同过滤数据展现出来的一个巨大特点就是:一些user倾向给出比其他人更高的分数,而一些item倾向获得比其他item更高的分数。正是由于这个原因,所以作者说:需要对上面的这个交互值加上一个bias。因为本系统有两个变量,分别是user和item,那么就设置了两个偏置,分别是bib_ibi, bub_ubu。
intercepts:截距
加上偏置之后的评分则是:
那么得到损失公式是:
3.7. 添加额外的信息以解决冷启动问题
冷启动问题:(系统刚开始启动时,用户信息很少,交互信息也很少)
可以尝试的方法有:
- 加入用户额外的资源、信息
比如一个在线零售商可以使用用户的历史购买数据、浏览数据。
从两个角度考虑了这个引入额外数据的问题:
- 从item的角度考虑:
将用户曾经表示过的隐式偏好的数据集合 N(u)N(u)N(u),对其中的每一个iii都做处理,那么用户的一个隐式偏好数据就可以用下式表达:
∑i∈N(u)xi\sum_{i\in N(u)} x_i∑i∈N(u)xi
一般而言,对求和取一个Normalize是合适的,所以这里使用一个归一化措施:
不清楚这里的 ∣N(u)∣|N(u)|∣N(u)∣该怎么计算?
- 从user的角度考虑:
用户有很多属性,比如:性别、年龄分布、邮政编码等等。其中每个特征都可以用一个向量进行表示,那么表示一个用户的隐式特征就可以通过这些属性来做到:
奇怪的是,为啥没有对这个 yay_aya的求和进行归一化?
通过利用隐式数据,那么就可以得到:
3.8. 考虑时间因素
一个人的爱好是随着时间改变的,一个系统(无论是user、还是item)的整体偏差也会随着时间而改变。例如:当一个新的产品出现的时候,旧产品的感知度和流行度就会在不断改变。
下面这些变量是经常受时间改变的:
- item biases
- user biases
- user preference
所以可以将这类变量视作是时间相关的变量。所以上式(6)就可以变成下面这个样子:
3.9. 考虑置信因素
原因很直接:
In several setups, not all observed ratings deserve the same weight or confidence. 比如有很多广告,很多打分都不置信。
Similarly, a system might face adversarial users that try to tilt the ratings of certain items. 也有一些用户是敌意用户,他们企图扰乱一些评分。
Confidence can stem from available numerical values that describe the frequency of actions. 这表示可以用用户的一些行为去获取置信分数。
对于矩阵分解这个技术,很好利用置信度参数:
这里的cuic_{ui}cui就是对ruir_{ui}rui这个评分的一个置信度估计。
讲了这么多,那么最后肯定得做个实验对比一下这些零零散散加起来的东西有没有用,于是文章给出了一个实验结果:
这个实验的参数和配置是这样的:
(1)横坐标代表的是参数量
(2)纵坐标代表的是衡量目标——RMSE(root mean square error)。
这个实验结果主要说明了两点:
(1)参数量越大,效果越好(这个在当今这个时代也是一样的道理)
(2)对于同一个模型,其向量纬度越大,参数越多,效果也会越好
(3)引入各种外部的变量会对模型有效果(with biases + implicit feedback + temporal dynamic)
4. 问题
4.1. 为啥仅仅使用点积的方式计算得分是不合适的?为啥要加一个bias?
这个见上述分析。
5. 经验
5.1. 模型越复杂,效果越好
The more complex factor models, whose descriptions involve more distinct sets of parameters, are more accurate.
5.2. 时间因素很关键
6. 好句分享
Recommender systems can use implicit feedback to gain insight into user preferences.
这里使用 gain insight into表示深入了解
While the previous examples deal with enhancing user representation—where lack of data is more common— items can get a similar treatment when necessary.
when necessary后置,意为:当必要时……
这句话的意思就是说:前面给出的案例都是针对user的,如果在数据缺失非常严重的情况下,如有必要,也可以考虑对item做同样的操作。
The matrix factorization approach lends itself well to modeling temporal effects, which can significantly improve accuracy.
矩阵分解技术很好地适用于建模temporal effects,这可以显著提升精确度。
这里的lends itself to 值得学习一下。
Another example is systems build around implicit feedback. In such systems, which interpret ongoing user behaviour, a user’s exact preference level is hard to quantify.
这句话的意思是说:系统很基本上都是根据隐式反馈构建而成的。