写点什么

推荐算法综述(三)

2016 年 1 月 14 日

【编者的话】近年来社交媒体已经越来越流行,可以从中获得大量丰富多彩的信息的同时,也给我们带来了严重的“信息过载”问题。推荐系统作为缓解信息过载的最有效方法之一,在社交媒体中的作用日趋重要。区别于传统的推荐方法,社交媒体中包含大量的用户产生内容,因此在社交媒体中,通过结合传统的个性化的推荐方法,集成各类新的数据、元数据和清晰的用户关系,产生了各种新的推荐技术。本文总结了推荐系统中的几个关键研究领域,进行综述介绍。这是推荐算法综述的第三部分。第一部分主要介绍了推荐算法的主要类型。第二部分,主要涵盖了不同类型的协同过滤算法,突出他们之间的一些细微差别。在本文中,主要详细介绍基于内容的过滤算法的工作原理,以及它的优点和缺点,从而让读者对其有更深的理解。

注:本文翻译自 Building Recommenders ,InfoQ 中文站在获得作者授权的基础上对文章进行了翻译。

正文

本文是推荐算法综述的第三部分。第一部分主要介绍了推荐算法的主要类型。第二部分,主要涵盖了不同类型的协同过滤算法,突出他们之间的一些细微差别。在这篇博客中,主要详细介绍基于内容的过滤算法的工作原理,以及它的优点和缺点,从而让读者对其有更深的理解。

基于内容的推荐算法总是为用户推荐那些与用户过去喜欢的 item 类似的 item。它不同于协同过滤,它是基于 item 的内容(例如标题、年份、描述)比较 item 之间的相似度。并没有考虑用户过去如何使用 item 的情况。例如,如果一个用户喜欢电影“指环王:魔戒再现”和“指环王:双塔奇兵”,然后使用电影的标题信息,推荐系统可以向用户推荐电影“指环王:王者无敌”。在基于内容的推荐中,假设可以获取到 item 的描述信息,并将其作为 item 的特征向量(例如标题、年份、描述)。这些特征向量被用于创建一个反映用户偏好的模型。各种信息检索(例如 TF-IDF)和机器学习技术(例如朴素贝叶斯、支持向量机、决策树等)可被用于创建用户模型,从而为用户产生推荐。

举个例子,假设有一些用户表达过对于一系列书籍的偏好。他们越喜欢一本书,他们对书籍的评分就会越高,通常划分为从 1 到 5 的 5 个等级。可以将用户对于书籍的偏好表示为一个矩阵,其中行代表用,列表示书籍,如图 1 所示。

图 1:用户对书籍的偏好。所有的偏好都分为 5 个等级,5 表示最喜欢的。第一个用户(行 1)对于第一本书的偏好给出了一个 4 分的评分。如果一个单元格是空的,表示用户对于该书籍的偏好没有给出。

在基于内容的推荐中,我们想要做的第一件事是基于内容计算书籍之间的相似度。在这个例子中仅仅使用了书籍标题中的词汇,这是为了将例子进行简化,以方便理解基于内容的推荐算法的工作原理,如图 2 所示。在实际应用中,可以使用更多的属性。

图 2:用户已经评分过的书籍的标题。

首先,从内容中删除停止词(例如语法词语、常见的词语)是非常普遍的,然后将书籍用一个向量表示(或数组),代表使用了哪些词,这被称为矢量空间表示,如下图 3 所示。

图 3:使用书籍标题中词汇作为描述书籍的向量表示。当相应的词汇在标题中,对应的单元格中标注 1,否则为空白。

给定每本书的表示之后,使用一系列的相似度度量来对书籍进行比较就变得非常简单了。在这个例子中,我们选择了余弦相似性度量。当我们把第一本书与五本其他的书进行比较时,就能得到这本书与其他书之间的相似程度,如下图 4 所示。如同大多数相似度度量一样,向量之间的相似性度量值越高,表明两个对象之间越相似。在这种情况下,第一本书与其中三本书非常类似,因为它们的表示之间有两个词汇相同(recommender 和 systems),但是其中一本书的描述的词汇最少,它与第一本书最相似,因为它有最少的多余的词汇。而与剩下两本书之间因为没有共同的描述词汇,因此可以当做一点都不相似。

(点击放大图像)

图4:第一本书与其他书籍之间的相似度。能够使用余弦相似性度量进行计算。

更进一步,就可以在一个相似度矩阵中显示所有书籍之间的相似程度,如下图5 所示。单元格的背景颜色表示两本书之间的相似程度,红颜色越深,它们之间越相似。

图5:书籍之间的相似度矩阵。每个相似度是基于书籍的词汇向量表示用余弦相似性度量进行计算的。

在知道书籍之间有多相似之后,我们就可以对用户推荐书籍了。类似于我们在第二部分所介绍的基于item 的协同过滤方法,我们选取一个用户此前评分过的书籍,并推荐与它们最相似的书籍。与协同过滤方法不同的是,这里的相似性度量是基于书籍的内容,在这个例子中,准确来说是标题,而不是使用用户过去的行为数据。在我们的例子中,第一个用户将会被推荐第四本书,之后是第六本书,如下图6 所示。再次,我们仅仅选取了最相似的两本书。

(点击放大图像)

图6:针对一个具体的用户产生的推荐。我们选择用户已经评分过的书籍,然后找到两本与它们最相似的书,推荐给用户未评分过的书籍。

基于内容的方法克服了协同过滤方法的很多不足。具体来说,基于内容的推荐算法可以克服流行度偏离和新item 的冷启动问题,这些问题在第二部分介绍协同过滤的时候已经讨论过。然而,值得注意的是,纯粹基于内容的推荐算法的性能通常不如协同过滤算法。基于内容的推荐算法通常还存在过度专业化(over-specialisation)的问题,即用户可能会得到过多相同类型的item(如推荐所有的“指环王”系列电影),而不会推荐其他不同的、但用户可能感兴趣的item。最后是,基于内容的推荐算法中,仅仅使用了包含在item 元数据中的词汇(如标题、描述年份),这限制了推荐算法的实用性,不能帮助用户探索和发现词汇之外的内容。

本文是一篇翻译稿,读者也可以参考英文原文

编后语

《他山之石》是InfoQ 中文站新推出的一个专栏,精选来自国内外技术社区和个人博客上的技术文章,让更多的读者朋友受益,本栏目转载的内容都经过原作者授权。文章推荐可以发送邮件到editors@cn.infoq.com。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2016 年 1 月 14 日 17:348481
用户头像

发布了 268 篇内容, 共 101.3 次阅读, 收获喜欢 17 次。

关注

评论

发布
暂无评论
  • 结合上下文信息的 Bandit 算法

    Bandit 算法用的是一种“走一步看一步”的思路,这一点看上去非常佛系,似乎一点都不如机器学习深度学习那样厚德载物。

    2018 年 4 月 11 日

  • 推荐系统(上):如何实现基于相似度的协同过滤?

    今天我通过一个常用的实验数据,设计并实现最简单的基于用户的协同过滤。

    2019 年 4 月 8 日

  • 区块链 + 版权 - 助力电子微版权保护

    伴随产业升级,中国内容产业迎来黄金发展时期。内容产业的迅速繁荣也伴随着侵权问题。尽管国家先后出台知识产权保护的政策与法律法规,但盗版侵权现象仍屡禁不止。盗版作品为产权方带来巨大经济损失。

    2021 年 3 月 9 日

  • 热门微博:AI 时代精准的个性化推荐

    本次分享介绍如何打造适合自己产品的推荐系统。

  • 博客推荐系统: 基于内容相似性的推荐 ( 第二部分)

    本文是博客推荐系统系列文章的第二篇。主要介绍了度量推荐结果相似度的两种方法,包括欧几里德距离和余弦相似法。还详细介绍了计算博客相似度时对博客文章向量化的三个步骤:分词、词频统计、加权。直接在这个向量化后的高维度空间中进行推荐效果不一定是最优的,通过使用SVD或PCA降维算法可以得到更好的推荐效果。文章的最后给出了推荐系统的实际运行效果的例子。

  • 推荐算法综述(五)

    近年来社交媒体已经越来越流行,可以从中获得大量丰富多彩的信息的同时,也给我们带来了严重的“信息过载”问题。推荐系统作为缓解信息过载的最有效方法之一,在社交媒体中的作用日趋重要。区别于传统的推荐方法,社交媒体中包含大量的用户产生内容,因此在社交媒体中,通过结合传统的个性化的推荐方法,集成各类新的数据、元数据和清晰的用户关系,产生了各种新的推荐技术。本文总结了推荐系统中的几个关键研究领域,进行综述介绍。本文是推荐算法综述的最后一部分。第一部分主要介绍了推荐算法的主要类型。第二部分,主要涵盖了不同类型的协同过滤算法,突出他们之间的一些细微差别。第三部分详细介绍了基于内容的过滤算法。第四部分主要介绍了混合引荐技术和基于流行度的推荐方法。在这篇文章中,我们在回顾了所有基本的推荐算法之后,介绍了如何选择最合适的推荐算法。

  • 基于行列式点过程的推荐多样性提升算法

    本文介绍基于行列式点过程的推荐多样性提升算法。

  • 矩阵(下):如何使用矩阵操作进行协同过滤推荐?

    协同过滤分为基于用户的过滤和基于物品的过滤两种,它们的核心思想是相同的,因此矩阵操作也是类似的。

    2019 年 3 月 13 日

  • “查询关键字理解”三部曲之解析

    查询关键字解析是对查询关键字的微观分析,今天将重点介绍查询关键字分割和查询关键字标注两个模块。

    2017 年 11 月 29 日

  • 人以群分,你是什么人就看到什么世界

    把用户按照兴趣口味聚类成不同的群体,给用户产生的推荐就来自这个群体的平均值。

    2018 年 3 月 19 日

  • 协同过滤:最经典的推荐模型,我们应该掌握什么?

    协同过滤算法可能是推荐系统自诞生以来最经典的算法。这节课,我就带你聊聊经典协同过滤及其衍生模型矩阵分解的原理。

    2020 年 11 月 9 日

  • 如何在 Python 中使用 LightFM 构建可扩展的电子商务推荐系统?

    在我国,电商非常发达。今年双 11 的成交额仅仅过了 12 小时就达到了惊人的 1491.6 亿元!电商在我国的火爆程度由此可见一斑。不知你们有没有发现,在网店浏览商品时,它们好像能读懂你的内心,推荐的几乎都是你想找的宝贝?其实,这背后的功臣就是人工智能的应用之一——推荐系统。今天,我们分享了一篇在 Python 中使用 LightFM 构建可扩展的电子商务推荐系统的文章,以飨读者。

  • 推荐算法综述(二)

    推荐系统在各种系统中广泛使用,推荐算法则是其中最核心的技术点,InfoQ接下来将会策划系列文章来为读者深入介绍。推荐算法综述分文五个部分,本文我们将会详细介绍这些算法的区别,让你能够深入理解他们的工作原理。

  • 一文讲解联邦学习与推荐系统是什么关系?

    无论我们是否意识到,我们都正在使用推荐系统。

  • 推荐算法综述(一)

    推荐系统在各种系统中广泛使用,推荐算法则是其中最核心的技术点,InfoQ接下来将会策划系列文章来为读者深入介绍。推荐算法综述分文五个部分,本文作为第一篇,将会简要介绍推荐系统算法的主要种类。其中包括算法的简要描述、典型的输入、不同的细分类型以及其优点和缺点。

发现更多内容

IO和NIO的对比篇

Java架构师迁哥

JavaScript02 - js的引入方式

桃夭十一里

JavaScript

日语复习 Day02【~あっての】

Tango

七日更 日语语法 程序员日语

CMS系统——登录功能

程序员的时光

程序员 七日更 28天写作

五种IO模型

懒AI患者

io nio AIo bio IO多路复用

从硅谷到小米,崔宝秋的25年开源人生

李忠良

28天写作

【计算机组成原理】04 - 中央处理器

brave heart

计算机组成原理 28天写作

胆大无险,脚踏实地

.

28天写作

像用户一样测试:别掉链子

QualityFocus

软件测试 用户体验 回归测试

项目管理系列(3)-如何开好一个项目启动会

Ian哥

项目管理 28天写作

JavaScript01 - 基础

桃夭十一里

JavaScript

一文带你学会AQS和并发工具类的关系

比伯

Java 编程 架构 面试 计算机

JavaScript05 - JavaScript数据类型

桃夭十一里

JavaScript

坚持写作靠什么?

石君

输入 输出 28天写作

读书笔记:《激荡三十年》下

lidaobing

28天写作 激荡三十年

Java并发编程实战(4)- 死锁

技术修行者

Java 并发编程 多线程 死锁

精选算法面试-数组III

李孟

面试 算法 数组 28天写作

28天瞎写的第二百一九天:包辆三轮车上班的日子

树上

28天写作

正则表达式匹配ini文件的section

老王同学

想象力,科幻与其他「关于科幻 8/28」

道伟

28天写作

Soul 网关实践 03|http 请求接入网关

哼干嘛

Java 探索与实践 Soul网关

低代码是在炒概念,炒得不错

Justin

低代码 28天写作

Soul 网关实践 02|选择器&规则介绍

哼干嘛

Java 探索与实践 Soul网关

自动驾驶分级,小白能理解的那种(28天写作 Day8/28)

mtfelix

自动驾驶 28天写作

聚焦目标,团队工作不再一盘散沙(下)

一笑

管理 目标管理 复盘 28天写作

生产环境全链路压测建设历程 29:FAQ 之 评估方法论、改造、痛点

数列科技杨德华

28天写作

JavaScript04 - JavaScript语法

桃夭十一里

JavaScript

【Mysql-InnoDB 系列】事务提交过程

程序员架构进阶

MySQL 架构 innodb 事务 28天写作

JavaScript03 - window对象的方法

桃夭十一里

JavaScript

保姆级 tomcat 快速入门

田维常

tomcat源码解读

创业失败启示录|校园微生活之留学生面对面

青城

28天写作 创业失败启示录 青城

4月17日 HarmonyOS 开发者日·上海站

4月17日 HarmonyOS 开发者日·上海站

推荐算法综述(三)-InfoQ