You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
9.5 KiB
Markdown

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 06 | 超越标签的内容推荐系统
我曾在不同公司里都听到过,他们的产品经理或者大佬问过这样的问题:我们的推荐系统标签够不够?
相信你也遇到过类似的问题。这其实是一个很大的误区:基于内容的推荐系统,标签只是很小一部分。
而且就算是标签,衡量质量的方式也不是数目够不够;所以,今天我要讲的内容,就是说一说脱离标签定式思维的内容推荐。
## 为什么要做好内容推荐
所谓的基于内容推荐,通俗一点来讲,就是一个包装成推荐系统的信息检索系统。这听上去有点残酷,但通常一个复杂的推荐系统很可能是从基于内容推荐成长起来的。
可以说,基于内容的推荐系统是一个推荐系统的孩童时代,所以,我们不能让自己的推荐系统输在起跑线上,得富养才行。那么,首先我就来讲一讲如何养成一个基于内容的推荐系统。
为什么基于内容的推荐系统这么重要呢?因为内容数据非常易得,哪怕是在一个产品刚刚上线,用心找的话总能找到一些可以使用的内容,不需要有用户行为数据就能够做出推荐系统的第一版。
内容数据尤其是文本,只要深入挖掘,就可以挖掘出一些很有用的信息供推荐系统使用。
另外,著名的流媒体音乐网站 Pandora其音乐推荐系统背后的“音乐基因工程”实质上就是人工为音乐标注了各种维度的属性这样即便使用基于内容推荐的方式也做出了很好的推荐效果。
听上去,上面这段话特别像是在安慰还处在冷启动阶段的你,事实上呢,其实并不全是,内容推荐的方式还有它的必要性。推荐系统总是需要接入新的物品,这些新的物品在一开始没有任何展示机会,显然就没有用户反馈,这时候只有内容能帮它。
基于内容的推荐能把这些新物品找机会推荐出去,从而获得一些展示机会,积累用户反馈、走上巅峰、占据热门排行榜。
要把基于内容的推荐做好,需要做好“抓、洗、挖、算”四门功课。它们分别是对应了下面的内容。
1. 抓:大厂们从来不公开说的一件事是,他们一直在持续抓数据丰富自己的内容,所以做好一个基于内容的推荐,抓取数据补充内容源,增加分析的维度,两者必不可少。
2. 洗:抓来的数据,相当于捡别人掉地上的东西吃,我们也得注意卫生,洗洗更健康,数据也一样,冗余的内容、垃圾内容、政治色情等敏感内容等等都需要被洗出去。
3. 挖:不管是抓来的数据,还是自家的数据,如果不深入挖掘,那就和捧着金饭碗去要饭一样,浪费了大好资源。可以说,很多推荐系统提升效果并不是用了更复杂的推荐算法,而是对内容的挖掘做得更加深入。
4. 算:匹配用户的兴趣和物品的属性,计算出更合理的相关性,这是推荐系统本身的使命,不仅仅是基于内容的推荐才要做的。
**那么,这四门功课到底如何分布在基于内容的推荐系统中呢?**
下面我和你一起来看看,基于内容推荐的框架
在文稿中,我放了一张图,一个典型基于内容推荐的框架图是下面这样的:
![](https://static001.geekbang.org/resource/image/c4/d8/c4b73865fed32f9f95a1b56802827dd8.png)
简要介绍一下这张图的流程和基本元素。
内容这一端:内容源经过内容分析,得到结构化的内容库和内容模型,也就是物品画像。用户这一端:用户看过推荐列表后,会产生用户行为数据,结合物品画像,经过用户分析得到用户画像。
以后对于那些没有给用户推荐过的新内容,经过相同的内容分析过程后就可以经过推荐算法匹配,计算得到新的推荐列表给用户。如此周而复始,永不停息。
## 内容源
在互联网中,抓数据是一件可做不可说的事情,哪怕是市值几千亿的大厂,也有专门的小分队抓数据,补充推荐系统每天的内容消耗。因为,只有当内容有多样性了,一个推荐系统才有存在的合法性,所以大厂职工们抓数据也是为了保住自己的饭碗。
爬虫技术本身非常复杂、非常有学问,比推荐算法难多了,这里就不展开讲了。
不论是抓来的数据还是自家用户产生的数据,都离不开清洗数据。由于各家都在相互借鉴来借鉴去,所以抓到重复的内容也是很有可能的,去重与识别垃圾内容、色情内容、政治敏感内容等都是必修课。
关于这个环节的边角算法,我们在后面的文章中会专门花一些篇幅来讲。
## 内容分析和用户分析
基于内容的推荐,最重要的不是推荐算法,而是内容挖掘和分析。内容挖掘越深入,哪怕早期推荐算法仅仅是非常硬的规则,也能取得不俗的效果。举个例子,如果推荐物品是短视频,我们分几种情况看:
1. 如果短视频本身没有任何结构化信息,如果不挖掘内容,那么除了强推或者随机小流量,没有别的合理曝光逻辑了;
2. 如果对视频的文本描述,比如标题等能够有内容分类,比如是娱乐类,那么对于喜欢娱乐的用户来说就很合理;
3. 如果能够进一步分析文本的主题,那么对于类似主题感兴趣的用户就可能得到展示;
4. 如果还能识别出内容中主角是吴亦凡,那就更精准锁定一部分用户了;
5. 如果再对内容本身做到嵌入分析,那么潜藏的语义信息也全部抓住,更能表达内容了。
举这个例子是为了说明:随着内容分析的深入,能抓住的用户群体就越细致,推荐的转化率就越高,用户对产品的好感度也就增加了。上一篇中我列举了文本数据——这也是内容数据最常见形式的分析方法。
内容分析的产出有两个:
1. 结构化内容库;
2. 内容分析模型。
结构化的内容库,最重要的用途是结合用户反馈行为去学习用户画像,具体的方法在上一篇中已经介绍了。容易被忽略的是第二个用途,在内容分析过程中得到的模型,比如说:
1. 分类器模型;
2. 主题模型;
3. 实体识别模型;
4. 嵌入模型。
这些模型主要用在:当新的物品刚刚进入时,需要实时地被推荐出去,这时候对内容的实时分析,提取结构化内容,再于用户画像匹配。
## 内容推荐算法
对于基于内容的推荐系统,最简单的推荐算法当然是计算相似性即可,用户的画像内容就表示为稀疏的向量,同时内容端也有对应的稀疏向量,两者之间计算余弦相似度,根据相似度对推荐物品排序。
你别嫌糙,如果你内容分析做得深入的话,通常效果还不错,而且基于内容的推荐天然有一个优点:可解释性非常强。
如果再进一步,要更好地利用内容中的结构化信息,因为一个直观的认识是:不同字段的重要性不同。
比如说,一篇新闻,正文和标题中分析出一个人物名,评论中也分析出其他用户讨论提及的一些人物名,都可以用于推荐。直观上新闻的正文和标题中更重要。
那么我们可以借鉴信息检索中的相关性计算方法来做推荐匹配计算BM25F算法。常用的开源搜索引擎如Lucene中已经实现了经典的BM25F算法直接拿来使用即可。
前面提到的两种办法虽然可以做到快速实现、快速上线,但实际上都不属于机器学习方法,因为没有考虑推荐的目标,而我们在之前的专栏中就专门强调了目标思维,那么,按照机器学习思路该怎么做呢?
一种最典型的场景:提高某种行为的转化率,如点击、收藏、转发等。那么标准的做法是:收集这类行为的日志数据,转换成训练样本,训练预估模型。
每一条样本由两部分构成:一部分是特征,包含用户端的画像内容,物品端的结构化内容,可选的还有日志记录时一些上下文场景信息,如时间、地理位置、设备等等,另一部分就是用户行为,作为标注信息,包含“有反馈”和“无反馈”两类。
用这样的样本训练一个二分类器常用模型是逻辑回归Logistic Regression和梯度提升树GBDT或者两者的结合。在推荐匹配时预估用户行为发生的概率按照概率排序。这样更合理更科学而且这一条路可以一直迭代优化下去。
## 总结
基于内容的推荐一般是推荐系统的起步阶段,而且会持续存在,它的重要性不可取代。因为:
1. 内容数据始终存在并且蕴含丰富的信息量,不好好利用就可惜了;
2. 产品冷启动阶段,没有用户行为,别无选择;
3. 新的物品要被推荐出去,首选内容推荐。
基于内容的整体框架也是很清晰的,其中对内容的分析最为重要,推荐算法这一款可以考虑先使用糙快猛的相似度计算,也可以采用机器学习思路训练预估模型,当然这必须得有大量的用户行为做保证。
好的,今天的内容就到这里,你可以在留言中谈一谈你对整个内容推荐链条各个环节的理解吗?欢迎和我一起讨论,感谢你的收听,我们下期再见。
# 本周知识要点
![](https://static001.geekbang.org/resource/image/46/ef/4691f5de66ed4778449e0498bca8a5ef.jpg)