矩阵分解之SVD和SVD++

推荐阅读时间:10min~12min 文章内容:矩阵分解在推荐系统中的应用

前面的内容是关于近邻推荐的相关知识,来看下另外一种推荐方法:矩阵分解。

为什么需要矩阵分解

协同过滤可以解决我们关注的很多问题,但是仍然有一些问题存在,比如:

  • 物品之间存在相关性,信息量并不随着向量维度增加而线性增加
  • 矩阵元素稀疏,计算结果不稳定,增减一个向量维度,导致近邻结果差异很大的情况存在

上述两个问题,在矩阵分解中可以得到解决。原始的矩阵分解只适用于评分预测问题,这里所讨论的也只是针对于评分预测问题。

矩阵分解

矩阵分解简介

矩阵分解,简单来说,就是把原来的大矩阵,近似分解成两个小矩阵的乘积,在实际推荐计算时不再使用大矩阵,而是使用分解得到的两个小矩阵。

具体来说,假设用户物品评分矩阵为 R,形状为 mxn,即 m 个用户, n 个物品。我们选择一个很小的数 k,k 比 m 和 n 都小很多,然后通过算法生成两个矩阵 P 和 Q,这两个矩阵的要求如下:P 的形状是 mxk,Q 的形状是 nxk, P 和 Q 的转置相乘结果为 R。也就是说分解得到的矩阵P和Q可以还原成原始的矩阵R。

用公式来描述就是:

其中 R 表示真实的用户评分矩阵,一般有很多缺失值(缺失值表示用户没有对该物品评分),带尖帽的 R 表示使用分解矩阵预测的用户评分矩阵,它补全了所有的缺失值。

从另一个角度来看,矩阵分解就是把用户和物品都映射到一个 k 维空间中(这里映射后的结果用户用矩阵P表示,物品用矩阵Q表示),这个 k 维空间不是我们直接看得到的,也不一定具有非常好的可解释性,每一个维度也没有名字,所以常常叫做隐因子。

SVD

SVD 全程奇异值分解,原本是是线性代数中的一个知识,在推荐算法中用到的 SVD 并非正统的奇异值分解。

前面已经知道通过矩阵分解,可以得到用户矩阵和物品矩阵。针对每个用户和物品,假设分解后得到的用户 u 的向量为 p_u,物品 i 的向量为 q_i,那么可以得到:

问题关键来了,如何为每个用户和物品生成k维向量呢?这个问题可以转化成机器学习问题,要解决机器学习问题,就需要寻找损失函数以及优化算法。

损失函数如下:

损失函数有两部分,加号前面是控制模型的偏差,加号后面控制模型的方差。控制偏差表示的目的是为了让分解后的矩阵预测分数与实际分数之间的误差越小越好;控制方差表示得到的隐因子越简单越高,这样使得保证模型在预测真正的任务时的效果。

求解损失函数优化算法常用的选择有两个,一个是随机梯度下降(SGD),另一个是交替最小二乘(ALS) 。这里以梯度下降为例。

  1. 准备好用户物品的评分矩阵,每一条评分数据看做一条训练样本;
  2. 给分解后的 U 矩阵和 V 矩阵随机初始化元素值;
  3. 用 U 和 V 计算预测后的分数;
  4. 计算预测的分数和实际的分数误差;
  5. 按照梯度下降的方向更新 U 和 V 中的元素值;
  6. 重复步骤 3 到 5,直到达到停止条件。

增加偏置的SVD

在实际应用中,会存在以下情况:相比于其他用户,有些用户给分就是偏高或偏低。相比于其他物品,有些物品就是能得到偏高的评分。所以使用pu * qiT 来定义评分是有失偏颇的。我们可以认为 评分 = 兴趣 + 偏见。

其中,μ表示全局均值, bu表示用户偏见,bi表示物品偏见。

举例来说,一个电影网站全局评分为 3.5 分,你评分电影时比较严格,一般打分比平均分都要低 0.5,《肖申克的救赎》的平均分比全局平均分要高 1 分。这里 u=3.5,bu=-0.5,bi=1分。

SVD++

实际生产中,用户评分数据很稀少,也就是说显示数据比隐式数据少很多,这些隐式数据能否加入模型呢?

SVD++ 就是在 SVD 模型中融入用户对物品的隐式行为。我们可以认为 评分=显式兴趣 + 隐式兴趣 + 偏见。

那么隐式兴趣如何加入到模型中呢?首先,隐式兴趣对应的向量也是 k 维,它由用户有过评分的物品生成。

其中,|N(u)|表示用户u的行为物品集,yj表示物品j所表达的隐式反馈。

总结

介绍了在评分数据中非常受欢迎 SVD 算法以及改进。比如加入偏置信息,考虑隐式反馈等。

作者:无邪,个人博客:脑洞大开,专注于机器学习研究。

原文发布于微信公众号 - 脑洞科技栈(naodong-open)

原文发表时间:2018-04-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

学界 | 腾讯 AI Lab 详解16篇 ICML 2018 入选论文

7月10日至15日,第 35 届国际机器学习会议(ICML 2018)将在瑞典斯德哥尔摩举行。ICML是机器学习领域最顶级的学术会议,今年共收到2473篇投递论...

1533
来自专栏SIGAI学习与实践平台

【技术短文】基于深度负相关学习的人群计数方法

同时在本微信公众号中,回复“SIGAI”+日期,如“SIGAI0515”,即可获取本期文章的全文下载地址(仅供个人学习使用,未经允许,不得用于商业目的)。

934
来自专栏算法channel

机器学习期望最大算法:实例解析

交流思想,注重分析,更注重通过实例让您通俗易懂。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来! 01 —...

3877
来自专栏AI科技大本营的专栏

ICML2018见闻 | 迁移学习、多任务学习领域的进展

【导读】如今 ICML(International Conference on Machine Learning,国际机器学习大会)已经成为有巨大影响力的会议,...

1842
来自专栏AI科技大本营的专栏

迁移学习到底是什么?让我们来解读一下杨强、Bengio和龙盛明的论文

作者 | 王晋东不在家 《小王爱迁移》之一:迁移成分分析(TCA)方法简介 之前整理总结迁移学习资料的时候有网友评论,大意就是现在的类似资料大全的东西...

1.7K5
来自专栏AI科技大本营的专栏

技术 | 入门机器学习必须知道的6件事,你可未必都了然于心了

翻译 | AI科技大本营(rgznai100) 参与 | shawn 过去两年中,我曾经多次折服于机器学习的魅力。但每当我决定尝试新事物时,经常会不得不重新学习...

3659
来自专栏机器之心

CVPR 2018 | 新研究提出深度残差等价映射:由正脸加强侧脸识别效果

选自arXiv 作者:Kaidi Cao等 机器之心编译 参与:李诗萌、白妤昕、思源 由于类别样本不均衡,人脸检测只在正脸识别上有优秀的表现,它们很难识别侧脸样...

3326
来自专栏机器之心

学界 | 微软&中科大提出新型自动神经架构设计方法NAO

从几十年前 [13, 22] 到现在 [48, 49, 28, 39, 8],无人干预的神经网络架构自动设计一直是机器学习社区的兴趣所在。关于自动架构设计的最新...

1001
来自专栏腾讯高校合作

ICML 2018 | 腾讯AI Lab详解16篇入选论文

1902
来自专栏PPV课数据科学社区

【机器学习】目前机器学习最热门的领域有哪些?

目前机器学习最热门的领域有以下七个: 1.迁移学习Transferlearning 简介:一种学习对另一种学习的影响,它广泛地存在于知识、技能、态度和行为规范的...

3619

扫码关注云+社区