推荐系统整体知识体系梳理
一、推荐系统的名词解释
推荐系统就是根据用户的历史行为、社交关系、兴趣点、所处上下文环境等信息去判断用户当前需要或感兴趣的物品/服务的一类应用。
二、核心业务目标及价值
随着信息技术和互联网的发展,人类从信息匮乏时代走向了信息过载(Information Overload)时代。
而如何从海量信息中迅速筛选得到对自己有用或者感兴趣的信息则变得尤为重要。
我理解的推荐系统则是在海量的数据生产者与消费者之间扮演着“数据掮客”的作用,这个是推荐系统存在的核心意义及商业价值。
以下则是一些知名网站中推荐系统的商家价值的量化指标数据:
Netflix:2/3 被观看的电影来自推荐
Google新闻:38%的点击量来自推荐
Amazon:35%的销量来自推荐
三、应用场景
1.电商、电影、视频
2.社交、个性化阅读
3.LBS延伸服务
4.个性化广告
举个栗子,以某宝为例:
女主登陆后:
男主登录后:
这个就是传说中的千人千面了
四、推荐系统相关指标
1.用户满意度
首当其冲的,推荐系统主要就是为了满足用户的需求,因此准确率是评判一个推荐系统好坏的最关键指标。通常使用auc或者roc指标进行表示
2.多样性
虽然推荐系统最主要还是满足用户的兴趣,但是也要兼顾内容的多样性,对于权重不同的兴趣都要做到兼顾。
3.新颖性
用户看到的内容是那些他们之前没有听说过的物品。简单的做法就是在推荐列表去掉用户之前有过行为的那些内容。
4.惊喜度
和新颖性类似,但新颖性只是用户没看到过的但是确实是和他行为是相关的,而惊喜度是用户既没有看过和他之前的行为也不相关,但用户看到后的确是喜欢的。
5.实时性
推荐系统要根据用户的上下文来实时更新推荐内容,用户的兴趣也是随着时间而改变的,需要实时更新。
6.推荐透明度
对于用户看到的最终结果,要让用户知道推荐此内容的原因。比如,“买过这本书的人同时也买过”、”你购买过的xx和此商品类似”。
7.覆盖率
挖掘长尾内容也是推荐系统很重要的目标。因此,推荐的内容覆盖到的内容越多越好。
四、技术整体架构
online架构
核心模块
-
业务网关,推荐服务的入口,负责推荐请求的合法性检查,组装请求响应的结果。
-
推荐引擎,推荐系统核心,包括online逻辑,召回、过滤、特征计算、排序、 多样化等处理过程。
数据路径
1、请求的刷新从gateway,经过流量分配模块,传到业务gateway,业务gateway支持http,tcp(使用thirtf协议或者protobuf 协议)等多种类型接口;
2、用户行为数据,从gateway到Flume agent,然后到kafka,为后面online,realtime userprofile部分的提供实时数据,也为offline部分的数据存储系统提供数据。
offline架构
从框架的角度看,推荐系统基本可以分为数据层、召回层、排序层。
数据层包括数据生成和数据存储,主要是利用各种数据处理工具对原始日志进行清洗,处理成格式化的数据,落地到不同类型的存储系统中,供下游的算法和模型使用。
sessionlog:对原始数据进行清洗合并,sessionlog一般就是清洗合并后的数据,后续的算法和统计都是根据sessionlog进行再加工。
userprofile:对用户属性和行为等信息进行采集和统计,为后续算法提供特征支持。
itemDoc:对视频、商品等属性、曝光、点击等字段进行统计, 为后续算法提供特征支持。
召回层主要是从用户的历史行为、实时行为等角度利用各种触发策略产生推荐的候选集,对不同的策略和算法产生的候选集进行融合并按照产品规则进行过滤,一般融合和过滤后的候选集还是比较多的,一次线上请求过来之后线上系统无法对那么多的候选集进行排序,所以在召回层一般还会有粗排序,对融合的候选集进行一次粗排序,过滤掉粗排分数较低的候选集。
排序层主要是利用机器学习的模型对召回层筛选出来的候选集进行精排序。
五、相关算法详解