惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
I
InfoQ
N
Netflix TechBlog - Medium
T
Tailwind CSS Blog
量子位
博客园 - 叶小钗
月光博客
月光博客
IT之家
IT之家
G
Google Developers Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
从零开始,设计一套最基础的推荐系统 - 少数派
2021-04-04 · via 少数派

无论是在淘宝购物、在饿了么点外卖,还是在网易云音乐听歌、在抖音刷小视频,甚至是在招聘网站求职,我们总是避不开一个词语:猜你喜欢。

有时候,它叫「每日推荐」;有时候,它成了「综合排序」中的组成部分;有时候,它可能明确称为「广告」;也有时候,它就是你的列表中普通、平凡、毫无标识的一项;还有时候,它是通知栏推送过来的一条小提示。

今日头条和微博会直接把你最关心的新闻推送到你的时间流,让你不再需要从每天的报纸中翻找;淘宝和京东在你搜索商品后直接推荐给你最适合的价位、品牌,大大降低了购物的门槛;下午闲暇时光,豆瓣给你推送了书和电影,再和着网易云推送的几首小歌——科技给我们带来了慵懒的快乐,将选择强迫症们解放出来,真是令人心醉。

这样的推荐是如何做出的?为什么它们能够知道我所喜欢?以听歌为例,我们来尝试着设计一个最基础的推荐系统,为我们的听歌人兰兰推荐几首她可能喜欢的歌。

偏好收集

显式的偏好收集

巧妇难为无米之炊,如果没有对兰兰的基础认识,那么给她推荐歌曲就是盲人摸象、大海捞针。于是我们在歌曲推荐的伊始,就试着向兰兰提出几个问题:

  • 你是男生还是女生?
  • 你在哪个城市?
  • 你比较喜欢听下述哪几种音乐类型?
  • 你喜欢下面哪几首歌?

这些问题,有的比较直白,有的相对隐晦,但都是为了分析兰兰可能的喜好。这种直接的问询,可以称为「显式的偏好收集」。

隐式的偏好收集

相对的,当我们根据隐私政策,记录下兰兰在听歌过程中的操作:

  • 快速地切换下一首
  • 听完了整首歌曲
  • 手动点击「喜爱」
  • 分享给了微信朋友

这些行为被我们转译成兰兰对这首歌的喜好程度,从而完善了兰兰的听歌兴趣。相应的,我们把这个过程称为「隐式的偏好收集」。

两种方式各有利弊。显式的方式需要兰兰手动填写,兰兰会嫌麻烦,而且打扰了她听歌的心情,但是体现了兰兰自己的想法,更加准确、快速。而隐式的方式会自动收集数据,但是过度跟踪可能让兰兰比较反感,分析也容易产生比较大的噪音。

基于内容的推荐

现在,我们可以尝试给兰兰推荐音乐了。

基于内容的推荐策略十分简洁。我们假定已经对音乐库中的每一首歌充分解析,并给每一首歌打上了标签。那么,当兰兰听了一首歌,并对它表现出极大的兴趣,我们就从音乐库中寻找和这首歌标签相似的其他歌曲,推荐给兰兰。

举个例子,如果兰兰听了一首《两只老虎》,还加入了收藏夹。我们的系统记录下了这样一条:

  • 兰兰喜欢听「儿歌」

于是,我们继续为她推送其他包含「儿歌」标签的歌曲,例如《小星星》。

整个过程完全依赖于歌曲之间的相似度,以及兰兰的偏好和歌曲之间的匹配程度。这还远远不够。

协同过滤

基于听歌人的协同过滤

为了给兰兰推荐更多好听的歌,我们又邀请了两个听歌人,小明和小玲。

这一次,小明、小玲、兰兰分别在自己的房里听歌。在听完《星星点灯》、《给自己的歌》之后,小明和兰兰都对这两首歌十分喜欢,而小玲却丝毫不感兴趣。那么,我们的系统记录下了这样一条:

  • 小明和兰兰的听歌兴趣相似

我们挖了挖小明以前听过的歌,发现他也很喜欢《南方姑娘》。既然我们的系统认为小明和兰兰的爱好相近,于是我们尝试给兰兰推荐了这首《南方姑娘》。

因为这种方式是对听歌人进行分析,所以我们不妨把它称为「基于听歌人的协同过滤」。

基于歌曲的协同过滤

我们继续邀请其他听歌人进来为我们提供兴趣数据。这次,我们邀请到了小红和小白。

我们依然让他们各自在房里听歌。听了《梦醒时分》和《大海》之后,小红、小白不约而同地对它们表现出了极大的喜爱。这一次,我们的系统是这样记录的:

  • 《梦醒时分》和《大海》具有相似的听众

当我们惊喜地发现兰兰也喜欢《梦醒时分》的时候,我们觉得她很可能也喜欢《大海》,于是就为她推送了这首歌。

这种方式的分析对象从听歌人换成了歌曲本身,我们可以称之为「基于歌曲的协同过滤」。

非个性化的推荐

前面介绍的几种方式,都可以使得每个人收到的歌单各不相同,称为「个性化推荐」。最后,我们还需要加入一些非个性化的推荐技术,来让我们的推荐系统更加实用。

我们首先加入「新歌榜」,这是对「新增内容」的一种优先策略。由于新歌刚刚加入曲库,数据还不足以支撑起推荐给大量听歌人,对新歌的优先策略可以给它们提供一定的冷启动过程。

我们还要加入「热歌榜」,这是对「热点内容」的优先策略。一首歌之所以会成为热门歌曲,大概就是符合大部分人的审美。虽然许多人通过个性化推荐的策略并没有匹配到这首歌,但是既然符合大部分人的审美,说不定他们也会喜欢这首热门歌曲,不妨一试。

这些个性化或者非个性化的推荐分别得到了一系列歌单,将它们按一定比例交替出现,亦或在不同的区域中分别展示,就成了我们为听歌人们推荐各自推荐的「猜你喜欢」啦。