特征哈希后的碰撞冲突如何解决;如何保证均匀打散的;
答:可以分组,把数量多的特征多给位数,数量少的特征少给位数;
可以预留1~2位,用来处理冲突,遇到冲突就0~3编号;
离线模型,线上模型;
答:离线模型是daily更新到online,online是在这个基础上把当天最新的点击反馈实时训练至模型里;daily模型也是在老模型的基础上,加入最近N天时间窗口的训练数据,"添油战";
效果:
线下AUC绝对提升0.5%;线上点击率相对提升4%;
FTRL为什么比GBDT效果好;
答:online训练, 稀疏性,允许更多的特征,便于新加特征,可解释,训练/预测速度快;
缺点:无法直接拟合高阶特征(需要自己做交叉特征)
线上的曝光日志,和线上的点击日志,可能是不同时刻到达的后台存储,那如何确保特征的计算用到这两者时能保证正确性?
答:每下拉刷新一次,就统计上一批里有哪些点击了/有哪些没点击(上拉挖坟那种,等于把以前的负例再当正例训练一次,因为负例样本权重低,所以正例样本影响更大);离线训练比近线训练更准,因为离线时间窗口更大,盖棺定论,数据更可靠;
有时从头训练输入是embedding的神经网络,收敛效果差;可以尝试预训练好的embedding,输入神经网络,站在巨人的肩膀上,收敛速度会更快,效果更好;(例子:使用召回阶段的UserCF训练embedding,然后输入deep&wide,效果提升明显;如果直接从头训练embedding,效果提升不上去(会不会是训练迭代次数不够?);搜狗的RankNet,也是用预训练好的word-embedding进来,在训练中更新embedding,效果会比固定word-embedding不动,要好)
推荐模型类别:
– 协同:我的朋友喜欢什么 (User-CF,根据共同的物品来串起来; Item-CF,根据共同的人来串起来;和物品或人的特征无关)
– 内容:喜欢A所以喜欢B (根据物品内容,即物品特征,来计算物品之间的相似度)
– 知识:根据我的需要推荐
基于热点,基于本地位置,{天气/股票/小说}等,有固定的槽位(游离于大模型之外的部分)
兴趣图谱:“王宝强离婚”是个人工编辑加进去的“兴趣点”,属于这个类别的文章会加进去;兴趣点之间可以有树形的包含关系(编辑人工做的)
本地位置:根据GPS,判断其是学生/非学生;上班族的判断较难;App打开时才能拿到GPS定位;所属商圈;会推内容是当地附近的文章;会推当地附近人们爱看的文章;
用户画像:点一下军事频道,对用户画像的加权,相当于点了2篇军事频道的文章;归一化到所有人的平均点击率作为mean的0;短期画像是线上实时统计的,小时为单位,不断滚动;
训练数据里,加上position和第几刷,目的是为了降低位置造成的bias;训练时AUC会很高;预测的时候实际效果只比不用该特征提高一点点;(预测时无法得到这个position信息,所以不加进去;而且对同一个用户的所有候选文章而言,这个position应该都是相同的,去掉不影响排序)
用户画像decay: 每过一天,画像权重*0.98(包括postive和negative)
首页推荐:
视频推荐和图文推荐是独立开的;
标签召回+ 热点召回+ 本地召回 + 算法召回(主要是cf + word2vec)
精细化运营:比如再建立一个"精品池", 直接从里面取topN去个性化排序
标签召回:用户画像标签去匹配物品的标签;用户点击过具有这个标签的文章,且点击率大于平均点击率阈值,则在该标签上具有正向权重;
用户画像:长期画像,短期画像;
对首页内容推荐,做了缓存,下次下拉刷新可能还是用的上次缓存里的内容列表;对广告推荐,太金贵了,所以每次下拉刷新都要再做一次召回+精排,增强实时性,使得刚刚的用户行为能影响到本次推荐结果;
每种召回方式会固定一个最大个数,保证每种召回方式都会召回一些回来。然后统一CTR模型排序
排序之后还要有打散策略(即人工调整,照顾多样性等指标)