第一章 推荐系统算法简介(共九章)
参考书籍《互联网大厂推荐算法实践》首先要有全局视角而不是只停留在模型算法上因为参与推荐系统的除了算法工程师之外还要前端、后端、产品、运营等多个团队的通力合作。现代推荐系统影响着我们生活的方方面面它的作用就是在信息过载的情况下主动在人和信息之间建立高效的连接。1.1 推荐系统的运行方式以一个简化的推荐系统为例其中有两个角色一个是用户(User)一个是物料(Item)。用户是推荐系统服务的对象也是推荐系统的重要贡献者用户的行为为推荐系统提供数据支持。物料是被推荐的信息和内容比如商品视频等。建立推荐系统的步骤如下1给物料打标签标签可以人工生成也可以由算法生成比如b站上随便一个视频点开就可以看到它的标签2建立倒排索引类似一个hashmap键是标签值是列表包含所有被打上这个标签的视频。比如我们点击上面的‘经典老歌’标签3推荐系统接受一个用户的推荐请求提取出用户ID后从数据库中检索出该用户的兴趣爱好。比如该用户的兴趣爱好是{‘经典老歌’0.7‘喜剧’0.3}4召回实现方式之一使用用户的感兴趣的标签在倒排索引中检索5排序系统猜测用户对召回的视频的喜爱程度并将最可能喜欢的视频排在最显眼的位置6截断只保留前端界面能够显示的视频7用户交互用户看到了视频界面并进行观看点赞等行为推荐系统将用户行为计入日志8系统更新推荐系统根据日志更新用户的兴趣爱好和视频质量未来推荐别的用户的可能性1.2 推荐系统架构1.2.1 功能架构1. 召回召回的候选集非常大可以达到百万级规模所以召回要‘快’只要能找到和用户兴趣比较匹配的物料就可以。召回主要依赖‘离线计算在线缓存’的模式物料在离线状态下已处理好处理结果被存入数据库并建立好索引但是离线处理时用户信息和物料信息不能出现交叉。在线缓存时只需花费在索引中的检索时间时间开销非常小。为了弥补离线处理时信息不能交叉的问题召回模块一般采用多路召回的方式每路召回关注其中的一个侧面。2. 粗排粗排的目标是过滤召回结果的90%。一方面可以使用更复杂的模型一方面用户信息和物料信息仍然不能出现交叉主流的模型仍然依赖‘离线计算在线缓存’的模式。3. 精排精排的目标是精挑细选几十个物料重点是提升预测精度要让物料信息和用户信息充分的交叉。精排是研究的重点。4. 重排重排是不可或缺的目标是调整精排结果的顺序确保推荐结果丰富多样。1.2.2 数据架构上图为Lambda架构将数据请求拆分为冷、热数据两个子请求冷数据已经存储在hadoop分布式文件系统上的数据热数据还未来得及落盘在hadoop分布式文件系统上的数据针对冷数据的子请求由离线层定时扫描日志批量完成计算其结果由近线层快速查询缓存并快速查询针对热数据的子请求由在线层实时分析计算基于流式算法进行处理汇总冷热数据分别获得的子结果得到最终的计算结果1.3 搜广推的区别和联系联系都遵循召回粗排精排重排都遵循Lambda架构很多算法通用区别搜索场景会显式表达意图而推荐由系统观察用户意图搜索对结果准确性的要求更加严格广告对结果的准确性要求最高而推荐的结果发散性更高广告的转化链条最长从点击到下单才算一次完整的转化建模难度最高。但是广告的候选集规模很小降低了一些系统复杂度。