InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

推荐算法综述(三)

  • 2016-01-14
  • 本文字数:2494 字

    阅读完需:约 8 分钟

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

注:本文翻译自 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))。

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2016-01-14 17:348991
用户头像

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

关注

评论

发布
暂无评论
发现更多内容

ZK(ZooKeeper)分布式锁实现

Java 程序员 后端

《Spring实战》读书笔记-第4章 面向切面的Spring(1)

Java 程序员 后端

基于Fiber的React Diff算法源码分析

贝壳大前端技术团队

Fiber React Diff

Tomcat性能调优

Java 程序员 后端

volatile关键字的原理和要避免的误区

Java 程序员 后端

智能边缘框架Baetyl,为各行业落地实践提供安全机制

百度大脑

人工智能 百度

两强联手,百度智能云和中电互联打造自主可控工业互联网联合实验室

百度大脑

人工智能 百度

Zookeeper(从7个方面来了解Zookeeper基础概念)

Java 程序员 后端

WPF学习——依赖项属性(2)(1)

Java 程序员 后端

营口市广东商会成立

江湖老铁

[译] 微服务的设计模式

Java 程序员 后端

全面通透深入剖析工厂方法模式

Tom弹架构

Java 架构 设计模式

“抽象类”到底抽不抽象?实例对比一看便知!

Java 程序员 后端

Tomcat 多端口,多虚拟主机配置方法

Java 程序员 后端

Vim,人类史上最好用的文本编辑器!从此以后你就是一个善良的极客!

Java 程序员 后端

windows7 本地搭建ELK 收集项目运行日志

Java 程序员 后端

ZooKeeper分布式配置——看这篇就够了

Java 程序员 后端

官宣!Apache ShardingSphere 5.0.0 正式发布

SphereEx

Java 数据库 Apache ShardingSphere

Volatile:内存屏障原理应该没有比这篇文章讲的更清楚了

Java 程序员 后端

windows 下JDK12的安装过程

Java 程序员 后端

WPF学习——依赖项属性(1)

Java 程序员 后端

YGC问题排查,又让我涨姿势了!

Java 程序员 后端

《JVM系列》 第六章 -- 对象的实例化与内存布局

Java 程序员 后端

Ubuntu16安装Nvidia驱动(GTX1060显卡)

Java 程序员 后端

Win10安装Tomcat服务器与配置环境变量

Java 程序员 后端

Worktile、Teambition与Tower项目管理软件对比

Java 程序员 后端

WPF学习——依赖项属性(2)

Java 程序员 后端

Vue学习之基础入门

Java 程序员 后端

tomcat的maxThreads、acceptCount,对高并发的影响

Java 程序员 后端

架构实战营-模块三作业

随风King

「架构实战营」

《JVM系列》 第六章 -- 对象的实例化与内存布局(1)

Java 程序员 后端

  • 扫码添加小助手
    领取最新资料包
推荐算法综述(三)_语言 & 开发_张天雷_InfoQ精选文章