NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

推荐算法综述(一)

  • 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:1943765
用户头像

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

关注

评论

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

一图讲清楚公众号扫码关注绑定手机号自动登录

越长大越悲伤

微信 公众号接入

程序员用哪一种IDE写代码比较好?

没有用户名丶

构建系列之新一代利器Esbuild(下)

江湖修行

前端 cli 构建 #web esbuild

直播系统源码知识分享:解你忧愁!降低直播延迟的实现

山东布谷科技

软件开发 源码搭建 直播系统源码 直播源码

强化学习从基础到进阶-常见问题和面试必知必答[7]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 DDPG算法

CSS中常用的颜色格式

南城FE

CSS css3 前端 设计

图文结合带你搞懂GreatSQL体系架构

GreatSQL

greatsql greatsql社区

Spring Boot配置文件加载顺序详解

2756

BI分析能力:当今企业必备核心竞争力

夜雨微澜

大语言模型的开发利器langchain

程序那些事

程序那些事 AIGC ChatGPT 大语言模型

HTML5 游戏开发实战 | 黑白棋

TiAmo

html html5 6 月 优质更文活动

推荐几款可以大幅提高开发效率的vscode插件 | 京东云技术团队

京东科技开发者

Vue 前端 vscode

强化学习从基础到进阶--案例与实践[7.1]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解项目实战

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 DDPG算法

STC89C52+AT24C02实现设备开机次数记录

DS小龙哥

6 月 优质更文活动

Intellij IDEA 插件开发 | 京东云技术团队

京东科技开发者

Java IntelliJ IDEA 企业号 6 月 PK 榜 插件工程

【网络安全】堡垒机对于企业的重要性你知道吗?

行云管家

云计算 运维 网络安全 堡垒机

快上车,搭乘HUAWEI HiCar驶向未来

HMS Core

HMS Core

瓴羊Quick BI四度入选魔力象限报告,标志着BI系统的国产化进程加速

对不起该用户已成仙‖

再见Navicat,dbeaver才是真香

程序员小毕

Java 数据库 程序员 后端 架构师

Redis跳跃表是如何添加元素的?

小小怪下士

Java redis 面试

【直播预告】HarmonyOS极客松赋能直播第三期:一次开发多端部署与ArkTS卡片开发

HarmonyOS开发者

HarmonyOS

NineData入驻华为云“联营联运”商品,为企业数据提供安全保障

平平无奇爱好科技

强化学习从基础到进阶--案例与实践[7]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 DDPG算法

华为云专家出品《从零到一•Python图像处理入门》电子书

华为云PaaS服务小智

Python 华为 华为云 华为开发者大会2023

安全专家们看过来,易安联EnSRC第二期众测启动

权说安全

强渡大渡河!华为云GaussDB成功支撑华为MetaERP系统全面替换

平平无奇爱好科技

C++的重载运算符和重载函数

智趣匠

SQL 优化(二):避免隐式转换

hungxy

MaxCompute湖仓一体近实时增量处理技术架构揭秘

阿里云大数据AI技术

sql 大数据 分布式计算 数据处理 企业号 6 月 PK 榜

再获殊荣!华为云GaussDB喜提“科技进步一等奖”

平平无奇爱好科技

重磅新品全球公测!华为云数据库又有大动作

平平无奇爱好科技

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