OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

推荐算法综述(一)

  • 2015-12-22
  • 本文字数:2172 字

    阅读完需:约 7 分钟

【编者按】推荐系统在各种系统中广泛使用,推荐算法则是其中最核心的技术点,InfoQ 接下来将会策划系列文章来为读者深入介绍。推荐算法综述分文五个部分,本文作为第一篇,将会简要介绍推荐系统算法的主要种类。其中包括算法的简要描述、典型的输入、不同的细分类型以及其优点和缺点。在第二和第三篇中,我们将会详细介绍这些算法的区别,让你能够深入理解他们的工作原理。

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

为推荐系统选择正确的推荐算法是非常重要的决定。目前为止,已经有许多推荐算法可供选择,但为你需要解决的特定问题选择一种特定的算法仍然很困难。每一种推荐算法都有其优点和缺点,当然也有其限制条件,在作出决定之前,你必须要一一考量。在实践中,你可能会测试几种算法,以发现哪一种最适合你的用户,测试中你也会直观地发现它们是什么以及它们的工作原理。

另外,想迅速了解并掌握推荐系统的同学,可以购买极客时间出品的『推荐系统三十六式』专栏,作者在推荐系统方面有 8 年的经验,为推荐系统学习者架构起整体的知识脉络,并在此基础上补充实践案例与经验,力图解决系统起步阶段 80% 的问题。

推荐系统算法通常是某类推荐模型的实现,它负责获取数据,例如用户的喜好和可推荐项的描述,以及预测给定的用户组会对哪些选项感兴趣。

推荐算法通常被分为四大类(1-4):

  • 协同过滤推荐算法
  • 基于内容的推荐算法
  • 混合推荐算法
  • 流行度推荐算法

除了这些种类以外,还有一些高级非传统的推荐算法(5)。

推荐算法综述是分文五个部分的系列文章,本文作为第一篇,将会简要介绍推荐系统算法的主要种类。其中包括算法的简要描述、典型的输入、不同的细分类型以及其优点和缺点。在第二和第三篇中,我们将会详细介绍这些算法的区别,让你能够深入理解他们的工作原理。系列文章中的一些内容参考了一篇来自 RecSys 2014 tutorial 的文章:由 Xavier Amatriain 编写的 The Recommender Problem Revisited

1. 协同过滤推荐算法

  • 简介:通过在用户的一系列行为中寻找特定模式来产生用户特殊推荐

  • 输入:仅仅依赖于惯用数据(例如评价、购买、下载等用户偏好行为)

  • 类型:

    • 基于邻域的协同过滤(基于用户和基于项)
    • 基于模型的协同过滤(矩阵因子分解、受限玻尔兹曼机、贝叶斯网络等等)
  • 优点:

    • 需要最小域
    • 不需要用户和项
    • 大部分场景中能够产生足够好的结果
  • 缺点:

    • 冷启动问题
    • 需要标准化产品
    • 需要很高的用户和项的比例(1:10)
    • 流行度偏见(有长尾的时候表现不够好)
    • 难于提供解释

2. 基于内容的推荐算法

  • 简介:向用户推荐和其过去喜欢项的内容(例如元数据、描述、话题等等)相似的项

  • 输入:仅仅依赖于项和用户的内容 / 描述(除了惯用数据)

  • 类型:

    • 信息检索(例如 tf-idf 和 Okapi BM25)
    • 机器学习(例如朴素贝叶斯、支持向量机、决策树等等)
  • 优点:

    • 没有冷启动问题
    • 不需要惯用数据
    • 没有流行度偏见,可以推荐有罕见特性的项
    • 可以使用用户内容特性来提供解释
  • 缺点:

    • 项内容必须是机器可读的和有意义的
    • 容易归档用户
    • 很难有意外,缺少多样性
    • 很难联合多个项的特性

3. 混合推荐算法

  • 简介:综合利用协同过滤推荐算法和基于内容的推荐算法各自的优点同时抵消各自的缺点

  • 输入:同时使用用户和项的内容特性与惯用数据,同时从两种输入类型中获益

  • 类型:

    • 加权
    • 交换
    • 混合
    • 特性组合
    • 案列
    • 特征增强
    • 元层次
  • 优点:

    • 由于单独使用协同过滤推荐算法和基于内容的推荐算法
    • 没有冷启动问题
    • 没有流行度偏见,可推荐有罕见特性的项
    • 可产生意外,实现多样性
  • 缺点:

    • 需要通过大量的工作才能得到正确的平衡

4. 流行度推荐算法

  • 简介:这是一种推荐流行项的方法 (例如最多下载、最多看过、最大影响的项)

  • 输入:使用惯用数据和项的内容(例如类目)

  • 优点:

    • 相对容易实现
    • 良好的基准算法
    • 有助于解决新用户冷启动问题
  • 缺点:

    • 需要标准化产品
    • 经常需要一些项的类型进行分类
    • 不会推荐新项(很少有机会被观测到)
    • 推荐列表不会改变太大

5. 高级非传统推荐算法

  • 类型:

    • 深度学习
    • 学习等级
    • Multi-armed bandits(探索 / 开发)
    • 上下文感知推荐
    • 张量分解
    • 分解机
    • 社会推荐
  • 优点:

    • 利于勉强维持最终性能百分点
    • 你可以说你正在使用渐进的方式
  • 缺点:

    • 难于理解
    • 缺乏推荐工具支持
    • 没有为你的首个推荐系统提供推荐的方式

查看英文原文: Overview of Recommender Algorithms – Part 1

关于作者

Maya Hristakeva 是 Mendeley 和 RELX 团队的首席数据科学家,致力于创建能够帮助研究者连接他们的研究和合作者的工具。她本人的研究领域是可扩展的机器学习、推荐系统和优化算法。她也对端对端的构建数据产品过程感兴趣:从算法到好的用户体验。

Kris Jack 是 Mendeley 的首席数据科学家,同时也是 RELX 团队的数据科学家的负责人。他热衷于创造能够帮助人们理解和传达复杂信息以及做出新发现的软件。他的主要研究兴趣在于推荐系统、信息检索、信息抽取、机器学习、人工智能等等。他还热衷于将技术转化为真正对用户有用的产品以及参与能够创造奇迹的团队。

Maya 和 Kris 共同为世界创建出了一些出色的推荐系统。他们最新的产品是给研究员使用的推荐系统:Mendeley Suggest。


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

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

2015-12-22 17:1943745
用户头像

发布了 32 篇内容, 共 18.5 次阅读, 收获喜欢 8 次。

关注

评论

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

2022年11月《中国数据库行业分析报告》重磅发布!精彩抢先看

墨天轮

人工智能 数据库 dba 智能运维 国产数据库

EMR-StarRocks 与 Flink 在汇量实时写入场景的最佳实践

阿里云大数据AI技术

数据库 flink EMR 十一月月更

Baklib知识库|为什么知识共享工具对减少内部知识缺口至关重要

Baklib

知识

超详细图文保姆级教程:App开发新手入门(一)

YonBuilder低代码开发平台

开发者 App 新手入门

HDC 2022 开发者主题演讲与技术分论坛干货分享(附课件)

HarmonyOS开发者

HarmonyOS

2022最新整理上千道Java面试攻略,近500页PDF文档

钟奕礼

Java Java 面试 java程序员 java编程

测试自动化中遵循的最佳实践

禅道项目管理

自动化测试

阿里P8大佬总结的Nacos入门笔记,从安装到进阶小白也能轻松学会

小二,上酒上酒

Java 编程 程序员 nacos

这份1658页的Java面试核心突击讲,成功让我上岸阿里

小二,上酒上酒

Java 程序员 面试 阿里 大厂面试

自学 UI 设计有哪些书籍推荐

千锋IT教育

提升汽车APP用户体验,火山引擎APMPlus的“独家秘笈”

字节跳动终端技术

性能监控 APP开发 应用性能 火山引擎 APMPlus

手把手教你成为荣耀开发者:商户服务开通指南

荣耀开发者服务平台

android 开发者 手机 荣耀 honor

完全解析大数据的高可用集群部署

好程序员IT教育

大数据

CSS 基础属性篇组成及作用

千锋IT教育

ShareSDK for Flutter

MobTech袤博科技

个推TechDay治数训练营直播预告 | 从方法论到落地应用,详解企业标签体系建设要点

个推

标签 用户画像 标签体系

个推发布《Android13适配指南》,解读Android13新特性

个推

android 安卓 安卓开发

数据治理必读|基于Dataphin,快速建设高质量数据支撑业务发展

瓴羊企业智能服务

阿里大牛纯手写的微服务入门笔记,从基础到进阶直接封神

小二,上酒上酒

Java 编程 程序员 架构 微服务

Java岗史上最全八股文面试真题汇总,堪称2022年面试天花板

小二,上酒上酒

Java 程序员 面试 八股文

小伙伴面经分享京东+面试八股文整套面试真题(含答案)

钟奕礼

Java 程序员 java面试 java编程

工业物联网DCS和SCADA的区别

2D3D前端可视化开发

物联网 DCS web组态软件 SCADA 工业组态

助力教育信创快速发展,统信软件与山东四所高校建立信创应用重点实验室

统信软件

软件 操作系统 教育 信创产业 教育新创

阿里云液冷技术荣获CDCC数据中心科技成果一等奖

云布道师

阿里云 基础设施建设

微服务调用的正确打开方式

Java全栈架构师

Java 程序员 面试 微服务 后端

解密金融行业数据云平台建设密码

数造万象

LigaAI X 猴子无限 | AIGC火了,人类又得到了什么?

LigaAI

分布式 大模型训练 研发协作平台 AIGC 大规模离散模型

推荐5款IDEA插件,堪称代码质量检查利器!

程序员小毕

Java 程序员 程序人生 后端 IDEA

在线电子表格,助力数据分析人员高效办公

流量猫猫头

大数据

破坏系统是为了更稳定?混沌工程在去哪儿的4个阶段实践

TakinTalks稳定性社区

混沌工程 故障治理

案例 | 九科信息为某大型企业设计社保公积金自动缴存解决方案

九科Ninetech

推荐算法综述(一)_语言 & 开发_百占辉_InfoQ精选文章