推荐系统小记

2020-08-05  本文已影响0人  wantRich

数据

对于推荐系统甚至所有的机器学习模型,数据都是特别重要的,包括数据的分布,大小。

线上训练数据的产生

线上推荐系统的训练数据主要由两部分产生,一部分提供用户的feature,一部分提供用户的action,这个是需要一个时间窗口的,时间窗口过短,我们会失去很多正样本,时间窗口过长,会导致训练数据不那么freash,从而导致了模型学不到最新的信息。

真实的数据分布

线上的数据中往往负样本的数量远远多于正样本的数量,如果直接使用的原来的数据,可能回使模型倾向于生成负判断。此时我们需要负采样和过采样,一般公司常用的是负采样,采样比列可以制定为1:10,当然这会造成数据的bias问题,比如在ctr预估时,会使得ctr的值过高。此时我们一般会对结果进行bais纠偏。

特征

    构建一个好的模型特征无疑是非常重要的一部分,目前大型公司都会将特征embedding化,然后送往深度学习的模型中去学习,很少去做一些特征工程的工作,一个是因为大公司的数据量比较大,可以将embedding训练的很好,这比人工去定义特征是好很多的,当然一些必要的简单工作也是要做的,比如对于特征进行特征淘汰从而保证模型不至于过大,限定特征作为embedding的最少出现次数(实际的效果线上其实是比较存疑的,因为训练了总比不训练好)。

特征分类大概可以分为以下几类:

    用户特征

    物品特征

    用户与物品的交互特征

模型

    模型的进步。最开始各大公司用的lr模型,简单线性可解释,到后面复杂些的FM、FFM DEEPFM模型再到后面的cross 、autoincoder模型比较重要的点主要是以下几个把

    batch normalization

    embedding 预训练可以加快训练速度

    梯度裁减

    对于dense feature可以进行梯度drop,大大加快训练速度

    多目标训练loss差异不要过大(比如不要把时长模型和分类模型一起训练)

    对于较大型的应用,其训练的embedding可以引入到较小app中,提供额外信息 

    使用relu激活函数,但要注意避免神经元死亡

目标的确定

目标的实际含义,比如在视频推荐中(时长,pct和 finish)

评价标准

线下指标

    training阶段和serving阶段的auc和calibration

线上指标

    留存,时长,动作率

非模型步骤

    打散、规则过滤、强插

    打散:避免同一类型的物品出的太多

    规则过滤:可以尝试用模型替代

    强插:插播一些非常重要的信息,一般不使用

    我们的原则一般是能不用规则就不用规则,比如我们发现女性用户总是对衣服类视频有很大的偏好,这时候正确的做法是什么呢,是对对女性用户boost这类信息吗,不是的,最合适的做法加入性别特征,模型会根据item的id embdding和性别信息学到这些有用的信息。



上一篇 下一篇

猜你喜欢

热点阅读