写点什么

从算法到案例:推荐系统必读的 10 篇精选技术文章

  • 2015-12-25
  • 本文字数:3050 字

    阅读完需:约 10 分钟

推荐系统近几年来一直十分火热,目前几乎所有的电子商务系统、社交网络,广告推荐,搜索引擎等等,都不同程度的使用了各种形式的推荐系统。想知道电商如何向你发送广告的?想了解社交网络怎么推荐好友的?想自己搭建一个推荐系统?想了解一些算法或架构从而将自己的推荐系统做得更好?InfoQ 为你整理了一系列的有关推荐系统的算法文章,以及主要从电商和社交网络方面选取了一些优秀的案例,来看看这些关于推荐系统的优秀文章吧。

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

推荐系统在各种系统中广泛使用,推荐算法则是其中最核心的技术点, 为推荐系统选择正确的推荐算法是非常重要的决定。每一种推荐算法都有其优点和缺点,当然也有其限制条件,在作出决定之前,必须要一一考量。在实践中,你可能会测试几种算法,以发现哪一种最适合你的用户,测试中你也会直观地发现它们是什么以及它们的工作原理。

InfoQ 策划了系列文章来为读者深入介绍。推荐算法综述分为五个部分,本文作为第一篇,主要介绍了推荐算法的主要类型。第二篇涵盖了不同类型的协同过滤算法,突出他们之间的一些细微差别。之后的三篇会陆续发表出来。第三篇详细介绍了基于内容的过滤算法。第四篇主要介绍了混合引荐技术和基于流行度的推荐方法。第五篇,在回顾了所有基本的推荐算法之后,介绍了如何选择最合适的推荐算法。这一系列的作者是 Maya Hristakeva Kris Jack ,英国的数据科学家,具有丰富的构建推荐系统的经验,他们共同为世界创建出了一些出色的推荐系统。

虽然也曾从事过技术研发相关的工作,但是对算法这类很“高深”和数学关系又比较紧密的技术来说,要真正地了解起来确实是一个难度很大的动作。但是在笔者参加了一些和算法以及推荐系统相关的活动之后,发现这一高深的学问已经被从事软件开发的朋友应用的非常广泛。特别是在电商火爆的今天,各种和推荐相关的网站风起云涌,算法进入平常百姓家也就是水到渠成了。本文讨论了算法和推荐引起关注的原因,算法、架构、策略、机器学习之间的关系,学习推荐算法的几点经验等。

现在网上到处都有推荐。比如亚马逊、Mint.com 之类的财务规划网站、谷歌这些知名公司使用推荐提供情境化的、有相关性的用户体验,以提高转化率和用户满意度。这些建议原来一般由每天晚上、每周或每月生成新推荐的批处理作业计算提供。然而对于某些类型的推荐,响应时间有必要比批量处理作业所需的时间更短。本文将会介绍如何使用 Kiji 框架,它是一个用来构建大数据应用和实时推荐系统的开源框架。通过这篇文章可以了解到如何用 Kiji 整合数据,模型和算法来开发一个可以实时刷新推荐的推荐系统。

百分点推荐引擎是国内领先的推荐技术平台,专注于为电子商务和资讯网站提供 SaaS 模式的个性化推荐服务,提高网站的整站转化率和用户黏度。本文将从电子商务网站的实际需求出发,介绍百分点推荐引擎架构设计和搭建。百分点的架构设计包含了存储层,算法层,业务层,管理层。算法层里包含在线算法和离线算法。在线算法包括协同过滤(UserBased/ItemBased CF),基于内容的推荐(Content Based),热扩散(Heat Diffusion),用户行为模式分析(Behavior PatterAnalysis)等等。离线算法包括 KNN 聚类,基于 FP Tree 的关联规则挖掘,基于上下文统计的关联规则挖掘,序列模式算法,文档建模算法等等。

Netflix 的推荐和个性化功能向来精准,他们公布了自己的系统架构。主要从在线,接近在线,离线处理三个方面来讲解。

并且他们指出构建一个好的推荐系统需要具备使用复杂机器学习算法的能力,这些算法要可以适应高度复杂性,可以处理大量数据。还要能够提供灵活、敏捷创新的架构,新的方法可以很容易在其基础上开发和插入。而且,需要推荐结果足够新,能快速响应新的数据和用户行为。找到这些要求之间恰当的平衡并不容易,需要深思熟虑的需求分析,细心的技术选择,战略性的推荐算法分解,最终才能为客户达成最佳的结果。

个性化推荐引擎已经在雅虎的首页、新闻、体育、财经等很多频道,以及雅虎的 Email、用户订阅的邮件内容等方面使用。个性化推荐引擎推荐的内容有雅虎编辑原创的内容,也有雅虎购买版权的内容,还有从 Web 上抓取的内容,包括新闻、图片、博客、轻博客等形式。现在已经在欧洲等地方做全球化的推广,并且统计发现个性化推荐引擎对于用户粘性的提升已经超过了 100%。本文从数据收集,新模型 / 算法的评估上线,关于用户粘度三个方面讲解了雅虎推荐引擎的系统架构。

与传统的推荐引擎不同,人人网的社会化推荐考虑了人与人之间的关系,通过真实的人际关系,提高推荐结果的精准度。例如,好友推荐的目的是帮助用户找到好友,迅速构建用户社交图谱,形成可持续发展的网络生态圈。社会化推荐对传统的推荐引擎提出了新的需求和挑战,具体体现在其个性化和复杂性上。本文从社交图谱的建立和社会化过滤方法的应用两个方面讲解了人人网社会化推荐框架。

为了保证用户体验和使用效果,推荐系统中的机器学习算法一般都是针对完整的数据集进行的。然而,随着推荐系统输入数据量的飞速增长,传统的集中式机器学习算法越来越难以满足应用需求。因此,分布式机器学习算法被提出用来大规模数据集的分析。作为全球排名第一的社交网站,Facebook 就需要利用分布式推荐系统来帮助用户找到他们可能感兴趣的页面、组、事件或者游戏等。Facebook 就在其官网公布了其推荐系统的原理、性能及使用情况。在工作原理方面,Facebook 推荐系统采用的是流行的协同过滤(Collaborative filtering,CF)技术。具体读者可以自行看看文中的叙述。

微博(Weibo)是一种通过关注机制分享简短实时信息的广播式社交网络平台。微博用户通过关注来订阅内容,在这种场景下,推荐系统可以很好地和订阅分发体系进行融合,相互促进。微博两个核心基础点:一是用户关系构建,二是内容传播,微博推荐一直致力于优化这两点,促进微博发展。

在微博推荐发展的过程中遇到体系方向的变化、业务的不断更迭、目标的重新树立,其产品思路、架构以及算法也随之进行变迁。本文讲了微博推荐架构的演进过程:独立式的 1.0 版本,分层式的 2.0 版本和平台式的 3.0,架构组成分为应用层,计算层,数据层和基础服务,并在 3.0 中解决了推荐候选/排序/训练的算法最重要的问题。具体可以点击链接阅读。

随着移动互联网迅速发展,大数据技术为企业带来了前所未有的发展机遇,然而中小企业和传统行业由于其数据量缺乏且单一,技术投入不足的劣势,面对大数据技术发展带来的红利只能望洋兴叹。本文介绍微信即将推出的微信斑马系统,该系统旨在为中小企业和传统行业提供基于微信大数据分析技术的受众分析,精准推广,激活留存和商业智能决策的全套解决方案。

  1. 推荐系统算法综述
  2. 一次算法的普及型讨论
  3. 用 Kiji 构建实时、个性化推荐系统
  4. 百分点推荐引擎–从需求到架构
  5. Netflix 公布个性化和推荐系统架构
  6. 雅虎个性化推荐引擎的工程实践
  7. 社会化推荐在人人网的应用
  8. Facebook 如何向十亿人推荐东西
  9. 微博推荐架构演进
  10. 微信斑马系统:微信朋友圈广告背后的利器

感谢魏星对本文的审校。

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

2015-12-25 18:0036059
用户头像
Tina InfoQ高级编辑

发布了 1412 篇内容, 共 1007.7 次阅读, 收获喜欢 3744 次。

关注

评论

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

MYSQL最朴素的监控方式

京东科技开发者

MySQL 数据库 数据 监控数据

Python也许很友好,但它也容易弄得一团槽

梦想橡皮擦

Python 爬虫 8月月更

云原生事件驱动引擎(RocketMQ-EventBridge)应用场景与技术解析

阿里巴巴云原生

阿里云 RocketMQ 云原生

面试官怒了:多级缓存不了解怎么行,那可是数量级的提升?

知识浅谈

缓存 8月月更

zzcase&接口自动化-质&效的探索

转转技术团队

测试工具 用例设计平台开发

5 个 JavaScript “罕见”原生的 API

掘金安东尼

JavaScript 前端 8月月更

Kyligence 连续三年入选 Gartner 增强数据分析推荐厂商

Kyligence

数据分析 Gartner

编译调试插件功能总结

乌龟哥哥

8月月更

第一个spark应用开发详解(java版)

程序员欣宸

Java spark 8月月更

极狐GitLab冷知识:使用 Gitlab Webhook 触发 Pipeline

郭旭东

极狐GitLab JIHULAB 101

C++运算符重载(四)之赋值运算符重载

CtrlX

c++ C# 后端 函数重载 8月月更

Synchronized锁升级原理与过程深入剖析:无锁>偏向锁>轻量级锁>重量级锁

Java全栈架构师

Java 程序员 面试 程序人生 多线程

slb与nat及eip的相关联

肖飞码字

负载均衡 NAT 弹性公网IP

RocketMQ顺序消息

急需上岸的小谢

8月月更

shell脚本之格式化输出

Albert Edison

Linux centos 运维 shell脚本编程 8月月更

北京JAVA开发3年,拿到美团35K的offer面试心得(全干货)

程序知音

Java 程序员 java面试 后端技术 Java面试八股文

vue高频面试题合集(四)附答案

helloworld1024fd

Vue

浅谈-大数据工程师面临的困境和要学习的技术

Geek_c8a6a0

JavaScript Promise 的使用技巧

汪子熙

JavaScript Promise 异步编程 await 8月月更

视频1对1源代码——简单的搭建方式也有技术要求

开源直播系统源码

软件开发 直播系统源码 语音直播系统源码 语音直播

架构实战营模块四作业

zhihai.tu

Android进阶(十一)Android系统架构讲解

No Silver Bullet

android 系统架构 8月月更

软银从阿里套现340亿美元,阿里、腾讯为何纷纷被大股东撤仓?

雨果

阿里云 软银 DaaS数据即服务

版本管理工具git的使用总结

TimeFriends

8月月更

STM32入门开发 NEC红外线协议解码(超低成本无线传输方案)

DS小龙哥

8月月更

用好JAVA中的函数式接口,轻松从通用代码中剥离掉业务定制逻辑

程序知音

Java 编程 程序员 后端

云原生(十四) | Kubernetes篇之深入万物基础-容器

Lansonli

云原生 8月月更

万丈高楼平地起--java基础语法

Geek_ba5ac7

Java core

vue高频面试题合集(三)附答案

helloworld1024fd

快的不止一点点!阿里强推的“Redis速成手册”也太香了吧

程序知音

Java 数据库 redis 程序员 后端技术

最佳实践|Apache Doris 在小米数据场景的应用实践与优化

SelectDB

数据库 数据分析 小米 Doris OLAP 场景实践

从算法到案例:推荐系统必读的10篇精选技术文章_语言 & 开发_Tina_InfoQ精选文章