Community post
推荐系统入门
说起推荐系统,好像总是算法人员应该考虑的事情,不过作为产品🐱(或🐶),了解一些基本的原理和设计理念还是很有必要的。
今天我们先搞清楚关于推荐系统的两个基本问题: 何时用 以及 如何用
When
推荐系统的定义
在互联网时代,搜索、推荐和广告三种是我们获取信息的三种主要途径,从用户角度来看,搜索属于主动式的信息获取,而推荐和广告则属于被动式。
推荐系统的本质是一个信息检索系统,利用上下文,根据当前用户所处的环境,根据信息的特点来决定推荐内容。
常见的推荐有人工推荐(例如编辑精选)和机器推荐(例如广告)两种方式,这里我们讨论的推荐系统范指机器推荐。
推荐系统的特征和场景
内容时效性低
没有或低时效性的内容(比如图书、电影、唱片),推荐系统可以基于推荐方法及模型完成推荐,而对于新闻这样时效性较高的内容,除了基于用户偏好进行推荐以外,还需要考虑时效性的权重,因为新闻是更侧重即时性的一种消费内容(当然不是说它不能做推荐)。
容易深度参与
没有依据,就无法进行所谓的精准推荐,一个真正可用的推荐系统需要用户深度的参与进来,以便于系统针对性的构建基于用户的特征体系,在推荐系统中这一类特征经常用来描述用户画像,包括用户的基本属性、消费内容、行为特征等。
千人千面的场景
用户对产品内容有很强的个人口味也可以考虑使用推荐系统,一些常见的购物网站是该场景的典型例子。
用户和内容多样化
如果用户和推荐内容比较单一,那么系统恐怕也推不出什么惊喜(哎呀,这些东西你全都看过了)。
How
协同过滤
用户画像是很多人都比较熟悉的一种推荐系统,实现起来相对简单,也比较精准,但对数据采集的成本要求很高,而且时间久了很难有惊喜(你不就长这样嘛)。
协同过滤(Collaborative Filtering)通过考虑用户(User)与用户之间、物品(Item)与物品之间的相似度(Similarity),来向用户进行产品或内容推荐。
说白了,就是找出跟你品味差不多的用户,把你们拉成一个帮派,他们喜欢的东西,系统排个序然后按推荐值也推荐给你啦。
常见的有以下两种:
- 基于用户的协同过滤推荐
- 基于物品(内容)的协同过滤推荐
基于用户的协同过滤推荐
假设我们有三个用户A、B、C,喜欢的部分书籍如下:
A:岛上书店,小岛经济学,白夜行
B:小岛经济学,智能时代
C:岛上书店,白夜行,达芬奇密码
可以看到A和C都同时喜欢「岛上书店」和「白夜行」这两本书,那么我们可以大致推断A和C的口味比较相似,所以可以把C喜欢的「达芬奇密码」也推荐给A。
这就是基于用户的协同过滤,基于用户的相似性进行匹配。
基于物品(内容)的协同过滤推荐
还是上面的例子,我们来看基于物品的协同过滤
A:岛上书店(小说),小岛经济学(经济),白夜行(小说)
B:小岛经济学(经济),智能时代(科技)
C:岛上书店(小说),白夜行(小说),达芬奇密码(小说)
是否可以把达芬奇密码推荐给A呢?首先看A偏爱的书籍类型,其中有两本是小说类,那么A很大程度上喜欢读小说,而达芬奇密码也是一部小说,因此很大程度上我们可以推荐给A。
那么其他书籍有没有被推荐的可能性呢?
从另一种角度看,岛上书店、小岛经济学、白夜行这三本书都各有2/3的人喜欢,也就是说这三本书容易被大众喜欢的概率较高,我们也可以考虑推荐给其他人。
基于物品的协同过滤,我们需要对物品的特征进行分析。
实际当中选择的时候,基于计算量的考量,一般会在用户和物品(内容)两者中选择体量较小的一方作为标准,即:
- 用户多物品少,选物品
- 物品多用户少,选用户
当然这只是一个基本的考虑标准,实际情况还需要具体情况具体分析。
Edgerank
Edgerank是外界对Facebook Newsfeed上新鲜事的排序算法的称呼,Newsfeed是一个兴趣Feed。这个排序算法基于三个因素进行考量:
亲密度:用户和内容创作者的亲密程度,取决于两者互动的频繁程度
权重:Feed流上的信息内容多种多样,比如文本、照片、视频等等,每一种类型出现在timeline上的权重都不完全一样,Facebook会根据一定时间的监测数据进行评级划分
时间衰减:同新闻类似,用户一般倾向于看更新鲜的内容,因而随着时间推移,某项话题的热度就会减少,排名降低
目标及优化
推荐系统不是万能的,我们应该利用已有资源尽可能的去解决更多问题,同时在系统运行的过程中,解决问题明显的一些典型的Bad Case,对于初期数据或者内容较少的情况下,可以尽量基于大众口味做一些普适推荐,后期再依据行为数据调整相应权重,提高千人千面的推荐效果。
Replies (3)
✅ @abbysue, I gave you an upvote on your first post! Please give me a follow and I will give you a follow in return!
Please also take a moment to read this post regarding bad behavior on Steemit.
Congratulations @abbysue! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word
STOPCongratulations @abbysue! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!