架构
由基础到高层的层级(参考达观数据):
基础层:
运算和存储
组件:
机器学习基础组件
模型层
更像是业务的数据结构。
比如用户画像就是对一个用户有全方位的刻画。
算法
构建在模型和组件之上。更接近与推荐。
算法组合层
把各种算法组合在一起
应用层
更接近于产品的业务
这里主要给出一个解耦,分的比较细,中小公司实际的架构可能不用分这么细。
推荐系统搭建流程
内容数据处理
以文本内容举例:需要内容分类、主题提取、关键词提取、打标签等。
内容标签的权重
一篇文本可以有多个标签,每个标签的权重是不同的,表示如下:
[{tag:tag1,weight:weight1},{tag:tag2,weight:weight2}.....]
用户数据处理
基础数据收集
收集包括行为数据、位置数据、用户属性数据。
用户特征挖掘,结合自己的业务,挖掘业务领域内需要的特征。
还可以根据用户的所有数据挖掘用户的兴趣点。
兴趣数据更新
生成推荐数据
根据内容数据和用户特征数据进行预测。
效果验证
产品设计之初,就要有对比测试的思路(业界称为ABTest)。
算法优化的过程是:“数据分析发现问题、合理假设、设计实验、实现、数据分析、得出结论或新的假设”,不断循环反复。
特征工程
基本思路
几个方面去考虑:
基本特征,
文本中标题,摘要,作者等
复杂特征
统计特征
主题提取
文本特征提取中的tdidf
自然特征
感官可以感受到的特征
经验,bad_case,容易做并且可以批量做。
如何提取内容特征
算法
工具包
常规tdidf
Gensim
如何应对大的数据集
当有非常非常多篇文章时,有些算法的效率很低。
所以必须考虑使用大数据的方式分布式计算或者算法做一些优化。
三层标签体系
分类-主题-关键词
用户画像
如何给用户打标签
我们可以根据用户行为(比如,点击),计算用户对分类、主题、关键词的兴趣。
用户标签的权重
我们可以根据用户行为的次数得到用户兴趣标签的权重。
最简单的计数方法是用户点击一篇新闻,就把用户对该篇新闻的所有标签在用户兴趣上加一。
可以用内容标签权重相同的表示方法。
权重计算
流程:
分别记录对用户曝光和用户点击的历史。
提取内容相关的标签。
降权:
曝光未点击的降权
热门内容降权
按照时间衰减
加权:
曝光且点击的加权
归一化
使用TD-IDF算法:
把用户看成一篇文档,所有用户看成文档集合。
一个用户下有很多标签,对一篇带有某个标签的的文章发生行为,
标签+1(可以看成一个用户有很多标签组成,每个标签的次数都不相同)。
P表示用户,T表示标签,
w(P , T)表示一个标签T被用于标记用户P的次数。
某个标签占用户比重公式:
分母表示所有标签求和。
某个标签在全部用户中的独特性(稀少性):
IDF在文档应用的含义:
某个词出现的文章范围越大,这个词越常见,越不能代表在文章中的独特性。
IDF用出现范围的导数表示Log N/df : 表示某个词语独特性程度。
df t: 某个t在出现t的所有文档数目。
IDF 在标签在用户稀有程度的公式(值越大越稀有):
分子表示全部用户全部标签之和。
分母表示全部用户某个标签之和。
与广泛程度成反比。
用户标签如何生成
这里主要讨论用户行为产生的标签。
用户标签根据用户行为涉及的内容标签加权得出。
举例:用户阅读了包含标签tag1的某篇文章,则用户获得了该标签,用户tag1标签的权重则由用户行为包含tag1的次数,以及
tag1在内容中的权重同时决定。
用户兴趣衰减
根据次数衰减
引入次数衰减的必要性:
用户的兴趣累加是线性的,数值会非常大,老的兴趣权重会特别高;
用户的兴趣有很强的时效性,昨天的点击要比一个月之前的点击重要的多,线性叠加无法突出近期兴趣。
可以用衰减函数来控制次数不能无线线性增大,而是最大趋近于某个值。
根据时间衰减
时间衰减保证时间较早的兴趣会在一段时间以后变的非常弱,同时近期的兴趣会有更大的权重。
todo
用户标签体系
标签的分类
第一类是**人口属性**,这一类标签比较稳定,一旦建立很长一段时间基本不用更新,标签体系也比较固定;
第二类是**兴趣属性**,这类标签随时间变化很快,标签有很强的时效性,标签体系也不固定;
第三类是**地理属性**,这一类标签的时效性跨度很大,如GPS轨迹标签需要做到实时更新,而常住地标签一般可以几个月不用更新,挖掘的方法和前面两类也大有不同
召回和排序
推荐系统整个流程可以分为召回、排序、重排序这三个阶段。
召回
就是找到用户可能喜欢的几百条资讯,
排序
就是对这几百条资讯利用机器学习的方法,预估用户对每条资讯的偏好程度。
一般以点击率衡量,也就是点击率预估问题。
召回中的数据哪些才是用户更喜欢的?
是对多路召回的 item进行排序的一个过程。
排序模型
训练集一般是所有用户的全量曝光数据(分为点击未点击)
train_y,train_x =(是否点击,(用户特征,内容特征))。
预测集一般是待召回的一批数据:
与搜索排序类似,是预测这一批数据点击的概率,并且按照概率从大到小排序后展示给用户。
LTR 排序学习
排序学习在推荐领域主要用于排序阶段。
LTR(Learning torank)学习排序是一种监督学习(Supervised Learning)的排序方法。
优点:
1. 可以根据反馈自动学习并调整参数
2. 可以融合多方面的排序影响因素
3. 避免过拟合(通过正则项)
4. 实现个性化需求(推荐)
5. 多种召回策略的融合排序推荐(推荐)
6. 多目标学习(推荐)
特征抽取:
搜索引擎根据用户点击。
如果没有用户搜索的过程,之后点击的过程,是不是可以忽略搜索特征呢?
todo
排序学习设计思想:
单点法(Pointwise Approach)
配对法(Pairwise Approach)
列表法(Listwise Approach)
todo
多路召回
统一召回探索
多路召回:
缺点:
- 各个召回模型之间的得分不可比较
- 需要对每个模型的召回个数设置超参数K(增加了试验的复杂度)
- 与排序阶段存在协同。排序可能要修改特征
优点:
- 上线一个新召回方式比较灵活,。但是如果采用统一召回,当想新增一种召回方式的时候,表现为新增一种或者几种特征,可能需要完全重新训练一个新的FM模型,整个召回系统重新部署上线,灵活性比多路召回要差。
FM统一召回:
优点:
- 评分统一
- 与排序协同性减少
缺点:
- 上线新召回不灵活。新增一种或者几种特征,可能需要完全重新训练FM模型、部署上线。
其它
冷启动
可以给出一些热门,大众普遍喜欢的内容。
用概率解决大多数新用户的问题。
如何做效果验证
对比测试A/B Test
召回率准确率
准确率: 在一次推荐过程中,表示用户点击数/推荐总数。
如果计算全平台的准确率,需要所有过程的平均。
例如我们给用户推荐了100条新闻,其中10条用户产生了点击,那么准确率为10/100 = 0.1
召回率: 某个用户在平台上一共点击了200条。我们某次推荐用户点击了3条。那么本次推荐召回率是3/200。
还有一种说法是用户喜欢的条数作为分子,用户喜欢这个具有主观性,所有我们直接使用用户点击比较直接。
我们统计的维度可以发生变化,这个指标口径我们内部保持一致就可以,方便我们对比推荐算法的提升。
评测指标
用户满意度
可以定性或者定量来度量该指标。
直接沟通或者调查问卷。
推荐结果满意或者不满意的反馈按钮,通过统计两种按钮的单击情况就可以度量系统的用户满意度。
更一般的情况下,我们可以用点击率、用户停留时间和转化率等指标度量用户的满意度。
预测准确度
这是一个离线评测指标。
计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录,
把数据分成训练集和测试集,在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,
并计算预测行为和测试集上实际行为的重合度作为预测准确度。
评分预测
基于用户历史评分,预测新物品评分。
计算公式:均方根误差(RMSE root-mean-square error)
或者平均绝对误差(MAE Mean Absolute error)。
TopN预测
TopN预测的准确度一般通过两个指标度量:准确率,召回率。
通过训练集预测用户的推荐列表R(u),测试集中有实际的用户数据T(u)。
准确率= 二者交集/R(u) , 召回率= 二者交集/T(u)
关于评分预测和TopN推荐的讨论
预测用户是否会看一部电影, 应该比预测用户看了电影后会给它什么评分更加重要。
属于目的性的区别。
覆盖率
覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。
推荐出来的物品占所有物品的比例。
可以这么理解:是不是所有物品都被曝光过,如果物品对用户有价值,
曝光是必须的,如果物品没有价值,曝光再多也没用。
更加细致的描述覆盖率,流行度分布: 统计推荐列表中不同物品出现次数的分布,
如果所有物品出现次数差不多,那么推荐系统发掘长尾能力较好。
分布平均好过分布比较陡峭。
信息论描述: 信息熵,(流行度的信息量)
经济学描述: 基尼系数(流行度的均衡程度)
社会学:搜索引擎的马太效应与推荐系统的长尾原理。
如何评判推荐系统是否有马太效应:
可以比较基尼系数:
用户初始物品流行度的基尼系数,推荐列表计算出的基尼系数,
如果后者大于前者,则说明有马太效应。
物品流行度
多样性
与相似度是对应的。
公式定义:与物品两两相似成反比。
通俗的解释多样性:既能满足用户主要兴趣,又能兼顾次要兴趣。
新颖性
新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。
做用户调查可能是比较靠谱的方式。
有一种思路是,越不热门的物品往往越具有新颖性。
比较困难的是不牺牲精度的情况下保持新颖性。
惊喜度
如果推荐结果和用户的历史兴趣不相似,但却让用户觉 得满意,那么就可以说推荐结果的惊喜度很高。
信任度
用户信任推荐系统,那就会增加用户和推荐系统的交互。
信任不太容易度量。
提高的方法:
提供推荐解释或者基于社交推荐或者从系统层面解决。
实时性
多网站中,因为物品(新闻、微博等)具有很强的时效性,所以需要在物品还具有时效 性时就将它们推荐给用户。
用户推荐列表中有多大比例的物品是当天新加 的来评测。
健壮性
衡量了一个推荐系统抗击作弊的能力。
通过比较攻击前后推荐列表的相似度评测推荐的健壮性。
设计推荐系统时尽量使用代价比较高的用户行为,比如购买比浏览代价高。
使用数据前,进行攻击检测,从而对数据进行清理。
总结
在给定覆盖率、多样性、新颖性等限制条件下,尽量优化预测准确度。
评测维度
上一节说的评测指标,整体性能不好,但是某种特定场景下性能比较好。
增加评测维度的目的就是知道一个算法 在什么情况下性能最好或者最不好,
让我们更了解算法的优缺点。
评测维度分为如下3种:
用户维度
主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
物品维度
包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
时间维度
包括季节,是工作日还是周末,是白天还是晚上等
参考
[如何成为一名推荐系统工程师(推荐系统需要掌握的知识体系)](https://cloud.tencent.com/developer/article/1143135)
[如何搭建一套个性化推荐系统?(理论步骤,不包含实操)](https://blog.csdn.net/lsj960922/article/details/79229937)
[文本聚类(特征提取)](https://www.jianshu.com/p/2aaf1a94b7d6)
[文本标签提取算法](https://blog.csdn.net/lb521200200/article/details/53648879)
[文本特征提取方法研究](https://cloud.tencent.com/developer/article/1057788)
[如何设计用户画像的标签体系?](https://www.shujike.com/blog/2599)
[如何从文本中构建用户画像](https://cloud.tencent.com/developer/article/1092075)
[干货请收好:终于有人把用户画像的流程、方法讲明白了](https://mp.weixin.qq.com/s/dBrksCqoftlm0Zy_5ATvtg)
[用户画像之标签权重算法](https://zhuanlan.zhihu.com/p/27828271)
[推荐系统中的召回率与准确率](https://www.imooc.com/article/37726)
[个性化推荐系统实践应用 (达观数据架构等)](https://www.jiqizhixin.com/articles/2019-02-11-6)
[用户画像之标签权重算法](https://mp.weixin.qq.com/s?__biz=MzI0OTQyNzEzMQ==&mid=2247487211&idx=1&sn=848069327f8c778e42427158f20f9b36&chksm=e990eb3fdee7622915479093a8f43f61dc8772cc681498f95dbde6960f11c5ed8f75bde29a8e&scene=21#wechat_redirect)
[Learning to rank的讲解,单文档方法(Pointwise),文档对方法(Pairwise),文档列表方法(Listwise)](https://blog.csdn.net/yuhushangwei/article/details/48547151)
[学习排序LTR](https://blog.csdn.net/weilianyishi/article/details/48805695)
[个性化推荐系统--学习排序综述(7-1)](https://blog.csdn.net/weixin_41640583/article/details/89073524)
[推荐系统中的排序学习](https://lumingdong.cn/learning-to-rank-in-recommendation-system.html)
[数据预处理之独热编码(One-Hot):为什么要使用one-hot编码?](http://www.likecs.com/show-64021.html)
[如何提取特征?(第一版)](https://zhuanlan.zhihu.com/p/25743799)
[文本特征抽取](https://blog.csdn.net/qll125596718/article/details/8306767)