【经典论文阅读2】MF算法——推荐系统里的远古巨兽

  • 论文链接: 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_ibibub_ubu
intercepts:截距

加上偏置之后的评分则是:
在这里插入图片描述

那么得到损失公式是:
在这里插入图片描述

3.7. 添加额外的信息以解决冷启动问题

冷启动问题:(系统刚开始启动时,用户信息很少,交互信息也很少)
在这里插入图片描述

可以尝试的方法有:

  • 加入用户额外的资源、信息
    在这里插入图片描述

比如一个在线零售商可以使用用户的历史购买数据、浏览数据。

从两个角度考虑了这个引入额外数据的问题:

  • 从item的角度考虑:
    将用户曾经表示过的隐式偏好的数据集合 N(u)N(u)N(u),对其中的每一个iii都做处理,那么用户的一个隐式偏好数据就可以用下式表达:
    ∑i∈N(u)xi\sum_{i\in N(u)} x_iiN(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.
这句话的意思是说:系统很基本上都是根据隐式反馈构建而成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

说文科技

看书人不妨赏个酒钱?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值