作者 | K. Delphino

译者 | Linstancy

编辑 | Rachel

出品 | AI科技大本营(id:rgznai100)

【导读】在推荐系统的相关研究中,我们常常用到两个相关概念:矩阵分解和奇异值分解。这两个概念是同一种算法吗?两者到底有什么差别?在本文中,作者梳理了两种算法的概念、来源和内容,并进行了比较。通过对相关内容的梳理,作者提出,矩阵分解是推荐系统中最初使用的概念,奇异值分解是对该方法的进一步发展。在现在的讨论中,一般将两种方法统一成为奇异值分解。

在 Andrew Ng 教授的机器学习课程中,介绍推荐系统时经常涉及矩阵分解、奇异值分解等数学知识,这些概念并不是很好理解。在 Andrew Ng 教授的课程提到了一种称为称为 (低因子) 矩阵分解的方法,而在 Google 搜索会得到另一个名称:奇异值分解。网络资源中对于该算法的解释和 Andrew Ng 教授存在差异,但很多人都认为这两个名称指的是同一种算法。为了更好的梳理这两个概念,在本文中,我对两者进行了分别介绍,并对比了它们的不同。


推荐系统

推荐系统 (Recommender Systems, RS) 是一种自动化的针对用户的内容推荐方式,被广泛用于电子商务公司,流媒体服务 (streaming services) 和新闻网站等系统。根据用户的喜好,推荐系统能够投其所好,为用户推荐一些合适的内容,以便减少用户筛选过程中一些不必要的麻烦。

推荐系统并不是一种全新的技术,相关概念最晚在1990年就出现了。事实上,当前的机器学习热潮,一部分要归因于人们对 RS 的广泛关注。 在2006年,Netflix 赞助了一场为电影寻找最佳推荐系统的竞赛,在当时引起了一片轰动,也让推荐系统再次得到了广泛的关注。

矩阵表示

我们可以有很多种方式来向别人推荐一部电影。其中一种效果较好的策略,是将用户对电影的评分看做一个用户 x 电影矩阵,如下所示:

在该矩阵中,问号代表用户未评分的电影。随后,只需要以某种方式预测来用户对电影评分,并向用户推荐他们可能喜欢的电影。

矩阵分解

在 Netflix 举办的比赛上,参赛者 Simon Funk 提出了一个很好的想法,即用户对电影的评分不是随给出的。用户会基于一定的逻辑,针对电影中他所所喜欢的部分 (如特定的女演员或类型) 和不喜欢的情节 (长时间或糟糕的笑话) 赋予不同的权重,并进行加权计算,最后得到一个分数作为该电影的评分。这个过程可以用如下公式表示:

其中 xm 是电影 m 特征值的一个列向量,而 θᵤ 是另一个列向量,表示用户 u 赋予每个电影特征的权重。每个用户都有不同的权重集合,而每个电影的特征也对应不同的特征集合。

事实证明,如果能够任意地修改特征的数量并忽略所缺失的那部分电影评分,那么就可以找到一组权重和特征值,依据这些值所创建新矩阵与原始的评分矩阵是很接近的。这一过程可以通过梯度下降来实现,且类似于线性回归中所使用的梯度下降,只不过我们需要同时优化权重和特征这两组参数。以上文提供的用户-电影矩阵为例,优化后得到的结果将生成如下新的矩阵:

值得注意的是,在大多数真实数据集中,生成的结果矩阵并不会精确地与原始矩阵保持一致。因为在现实生活中,用户不会对通过矩阵乘法和求和等操作对电影进行评分。大多数情况下,用户对电影进行评分只是一种主观性的行为,且可能受到各种外部因素的影响。尽管如此,这里所介绍的方法还是希望通过数学公式来表达用户在电影评分时的主要逻辑。

通过上面的计算,现在我们已经得到了一个近似矩阵,那该如何来预测缺失的电影评级呢?通过回顾上面的计算过程,我们可以发现,为了构建这个新矩阵,这里定义了一个公式来填充矩阵中的所有值,包括原始矩阵中的缺失值。因此,如果想要预测缺失的用户电影评分,这里只需获取该缺失电影的所有特征值,再乘以该用户的所有权重并将所有内容相加,就能得到用户对该电影的评分。因此在这里,如果想要预测用户2对电影1的评级,可以通过以下计算:

为了简化表达式,在这里可以对 θ 和 x 进行分离,并将它们放入各自的矩阵(比如 P 和 Q)。

以上就是 Funk 所提出的矩阵分解方法,也是 Andrew Ng 教授在课上所提到的矩阵分解。该方法在当时 Netflix 竞赛中获得第三名,引起了广泛的关注,并在当前许多应用中仍被使用。

奇异值分解

下面介绍奇异值分解 (Singular Value Decomposition, SVD)。SVD 方法是将一个矩阵分解为三个矩阵的矩阵分解方法,即 A =UΣVᵀ,且三个分解矩阵会具有一些较好的数学特性。

SVD 方法具有广泛的应用,其中之一就是主成分分析(Principal Component Analysis, PCA) ,该方法能够将维度 n 的数据集减少到 k 个维度 (k <n)。

这里不再展开介绍 SVD 方法的详细信息。我们只需要记住,奇异值分解与矩阵分解的处理方式不同。使用SVD 方法会得到三个分解矩阵,而 Funk 提出的矩阵分解方式只创建了两个矩阵。

那为什么在每次搜索推荐系统时总会弹出 SVD 的相关内容呢? Luis Argerich 认为原因在于:

事实上,矩阵分解是推荐系统中首先使用的方法,而 SVD++ 可视为是对它的一种扩展形式。正如 Xavier Amatriain 所说的那样:

而 Wikipedia 在对矩阵分解(推荐系统)的相关条目中也有类似的表述:

最后,简单进行一下总结:

  • 奇异值分解(SVD)是一种相对复杂的数学技术,它将矩阵分解为三个新的矩阵,并广泛应用于当前许多的应用中,包括主成分分析(PCA)和推荐系统(RS)。

  • Simon Funk 在2006年的 Netflix 竞赛中提出并使用了一个非常好的策略,改方法将矩阵分解为两个权重矩阵,并使用梯度下降来找到特征和权重所对应的的最优值。实质上,这是不同于 SVD 方法的另一种技术,将其称为矩阵分解更为合适。

  • 随着这两种方法的广泛应用,研究者并没有严谨地在术语上区分这两种方法,而是统一将其称为 SVD。

原文链接:

https://medium.freecodecamp.org/singular-value-decomposition-vs-matrix-factoring-in-recommender-systems-b1e99bc73599

(本文为AI科技大本营整理文章,转载请微信联系 1092722531)

CTA核心技术及应用峰会

5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开,峰会将围绕人工智能领域,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。

更多重磅嘉宾请识别海报二维码查看,目前会议早鸟票发售中(原票价1099元),点击阅读原文即刻抢购。添加小助手微信15101014297,备注“CTA”,了解票务以及会务详情。

推荐阅读

  • 他25岁进贝尔实验室,32岁提信息论,40岁办达特茅斯会议,晚年患上阿兹海默 | 人物志

  • 硬核粉丝 | 清华双胞胎“YCY Dance Now”杀进超越杯编程大赛决赛

  • 小样,加张图你就不认识我了?“补丁”模型骗你没商量!| 技术头条

  • 东大漆桂林、清华李涓子、复旦肖仰华等大牛确认出席CTA峰会!5月一起打卡杭州

  • 京东 60 天哗变!CTO 成优化第一人 | 畅言

  • 异构计算=未来?一文带你秒懂3大主流异构

  • 《互联网人叹气图鉴》

  • 回报率29%! 大神用情感分析创建一个比特币交易算法, 原来交易玩的是心理战

  • 她说:为啥程序员都特想要机械键盘?这答案我服!

一文帮你梳理清楚:奇异值分解和矩阵分解 | 技术头条相关推荐

  1. 用于文档上下文感知推荐的卷积矩阵分解

    论文:Kim D H, Park C, Oh J, et al. Convolutional Matrix Factorization for Document Context-Aware Recom ...

  2. 矩阵奇异值分解特征值分解_推荐系统中的奇异值分解与矩阵分解

    矩阵奇异值分解特征值分解 Recently, after watching the Recommender Systems class of Prof. Andrew Ng's Machine Lea ...

  3. c++怎么将两个类的方法集合成一个类的方法_一文帮你梳理 Java 集合

    集合在我们日常开发使用的次数数不胜数,ArrayList/LinkedList/HashMap/HashSet······信手拈来,抬手就拿来用,在 IDE 上龙飞凤舞,但是作为一名合格的优雅的程序猿 ...

  4. 到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】

    前言 有粉丝问我到底什么是ARM,搞不清楚Cortex.arm内核.arm架构.ARM指令集.soc这些概念都是什么关系,下面一口君给大家整理一下关于ARM相关的一些概念. 1.ARM既可以认为是一个 ...

  5. 一文揭秘知乎是如何搞 AI 的 | 技术头条

    作者 | 雅各布 责编 | 仲培艺 "我们相信,在垃圾泛滥的互联网海洋中,真正有价值的信息是绝对的稀缺品."知乎 CTO 李大海曾在全球移动互联网大会提到知乎诞生的初心,而这位 C ...

  6. 一文让你通俗理解奇异值分解

    导读:今天,小编和大家分享一道关于推荐系统相关的面试题,如何通俗理解奇异值分解?让我们一起来看看如何解析这道题吧. 特征值和奇异值在大部分人的印象中,往往是停留在纯粹的数学计算中.而且线性代数或者矩阵 ...

  7. 矩阵分解之: 特征值分解(EVD)、奇异值分解(SVD)、SVD++

    目录: 1.矩阵分解 1.1 矩阵分解的产生原因 1.2 矩阵分解作用 1.3 矩阵分解的方法 1.4 推荐学习的经典矩阵分解算法 2. 特征值分解(EVD) 3. 奇异值分解(SVD) 4. SVD ...

  8. 推荐系统知识梳理——矩阵分解

    隐语义模型与矩阵分解 协同过滤算法的特点就是完全没有利用到物品本身或者是用户自身的属性, 仅仅利用了用户与物品的交互信息就可以实现推荐,是一个可解释性很强, 非常直观的模型, 但是也存在一些问题, 第 ...

  9. 推荐系统中的矩阵分解| 奇异值分解及改进、因子分解机

    网络中的信息量呈现指数式增长,随之带来了信息过载问题.推荐系统是大数据时代下应运而生的产物,目前已广泛应用于电商.社交.短视频等领域.本文将针对推荐系统中基于隐语义模型的矩阵分解技术来进行讨论. 目录 ...

最新文章

  1. “华为云杯”2020深圳开放数据应用创新大赛线上推介会成功举办,让深圳大数据在全球“跑”起来...
  2. HP380G7服务器安装fedaro16的问题解决
  3. oracle 常用sql
  4. 请教提高代码编写组织能力代码优化、精明
  5. 多线程之失败自动重试机制
  6. halcon知识:共生矩阵
  7. windows上运行MapReduce出错(Failed to set permissions of path)
  8. cv resource
  9. 大数据之-Hadoop3.x_MapReduce_官方WordCount源码和序列化类型---大数据之hadoop3.x工作笔记0085
  10. 虚拟主机搬迁服务器要重新备案吗,域名更换虚拟主机要重新备案吗
  11. php 伪造微信浏览器头信息,php使用curl伪造浏览器访问操作示例
  12. java阶乘实现_Java 实现阶乘算法
  13. html未点击背景 点击背景,vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)...
  14. Java高手速成│编写你第一个数据库程序
  15. 全国各地市统计年鉴汇总2021
  16. 安装phantomjs、使用phantomjs以及时遇到问题时的解决方法
  17. intel wifi 5100agn linux驱动,intel5100agn驱动
  18. R语言混合线性模型包代码演示
  19. Android MD5加密
  20. 谨防企业管理者察人不慎,满盘皆输

热门文章

  1. cheat engine lua
  2. cisco设备常用命令
  3. 暑期集训2:ACM基础算法 练习题A:CF-1008C
  4. 洛谷 P1966 火柴排队
  5. vi 环境,跳转函数定义
  6. stm32 flash和sram
  7. 个人前端学习路线图与github优秀前端开发者的路线图推荐
  8. 二叉树的镜像(数组,前后 遍历重建二叉树)
  9. ssh远程操作服务器
  10. Java线程安全 关于原子性与volatile的试验