每日一句正能量
别把自己看得太高,这个世界离开谁都行;别把自己看得太低,这世上你独一无二。每个人的一生都有自己的使命,不用和别人比,好好活自己。
前言
推荐系统中的冷启动分为物料冷启动和用户冷启动。用户冷启动主要是针对新用户,但有时候也用于低活用户拉活。物料冷启动主要是让优质物料得到快速下发,让模型可以迅速捕获到用户对该物料的关注。本文将详细讲解用户冷启动和物料冷启动。
1、用户冷启动
用户冷启动就是通过物料钩子、注册信息、多域信息、联邦学习等各种技巧去迅速获取用户的兴趣点实现个性化推荐,激发用户的留存。此外针对新用户还需要考虑定期刺激用户兴趣,不断用优质物料去试探用户,甚至做到兴趣的流转和承接,迅速抓住用户的兴趣,提高用户黏性。比如,针对信息流推送业务的用户进行冷启动,当一个新用户点击某条推送物料后,用户会迅速进入信息流的某个业务界面(如图文或者视频界面),这时候,对应的业务界面也要做好对应的承接推荐,继续给用户优质的物料,让用户深入地使用该产品,而不是用户点完一个物料以后就完毕了。因此,对承接页的物料展示位的填充就很讲究了,首先,基于推送的I2I物料肯定是要有的;其次,用户的其他兴趣点物料和高热度物料也要着重考虑。同时,对于相同的用户冷启动“打法”,除了针对新用户,也可以定期针对低活用户进行拉活冷启动。用户流失其实是一个常见的问题,关键还是要分析用户为什么流失的问题,比如用户物料兴趣得不到满足,有违规内容,App的生态运转不良,竞品用其他手段拉走了用户等。通过分析得到问题后,就要针对这部分低活用户进行类似冷启动的“打法”,并且做好一系列的兴趣承接工作让用户重新回到App里面。
2、物料冷启动
物料冷启动主要是针对新入库不久的物料,让其得到迅速下发,从而筛选出好的物料,产生流量的“滚雪球”效应。物料冷启动方法很多,主要包括用户粉丝冷启动、物料基础信息冷启动、物料相似性冷启动和物料进退场机制(具体请阅读《推荐系统全链路设计:原理解读与业务实践》一书)。
现在的主流“打法”是物料进退场机制(也称作爬坡机制)。物料进退场机制主要是为每个物料设置一级级的限制,然后就是设置物料爬坡的限制,之后再根据各个业务情况去设置更进一步的流量筛选条件,直到最后物料流入正常流量库。下图展现了整个冷启动物料到正常物料的流程。
图11-1 冷启动物料到自然流量物料库的转换
冷启动流量需要考虑流量放量的速度和物料、用户的基础特征,相比自然流量的模型,冷启动环节的模型需要忽略反馈数据,如点击、下发、点赞、评论等。3、PID算法
在流量分发的过程中,肯定不可能一次性爆发式地分发下去,而是间隔式地均匀分发。因为,流量在不同时段的量都是不同的,而且物料肯定不应该被集中式下发,应该在各个时段都有分发。所以,为了合理的分发物料,需要对物料流量进行合理的控制,PID(Proportion Integration Differentiation,比例-积分-微分控制器 )就是流量控制的典型算法。
PID算法分为比例、积分和微分三部分,是控制领域的常见稳定控制算法。具体公式如下:
其中:
图11-2 PID流程
其实,PID操作类似于对热水器的水进行加热到固定水温。比如要将水温加热到40℃,一开始肯定要迅速升温,但是到35℃的时候就要减缓加温力度,到40℃就不再进行加温,只需要维持即可。怎么合理的将水温加到40℃,并且维持在40℃,就是PID需要做的事情。
PID的核心就是 Kp 、Ki、Kd
- Kp :控制当前主要误差的系数,图片越大,调节的力度越大,越激进; 图片越小,调节力度越保守。例如,假设某个物料需要发100条,要发10h,则每小时发10条(记为图片)。通过计算当前真实要发的量,图片越大,达到预期总发放量的速度越快。
- Ki:如果仅仅用比例,假设我们计划发10条,但是只发了4条,这样实际发放和计划发放就存在暂态误差。如果暂态误差拉长就会变为稳态误差,所以,我们再引入一个分量,该分量和误差的积分是正比关系。由于这个积分项会将前面若干次的误差进行累计,所以可以很好地消除稳态误差。该值不宜太大,一般取0.8-2之间。
- Kd:一般指t时刻和t-1时刻的误差值,即调节控制中的振荡,通常,微分环节相当于放大了反馈信号中的高频信号。系数取得不好会,就会引起高频震荡。
PID算法在实际的应用中就是模拟线上环境,然后对图片进行调参,让整个分发系统达到一个稳定的状态。
下面给出将某个物料在8h内分发100条的PID算法代码:
T= 100 #总共需要分发100条
Tn= 10 #最开始的1h发10条
error=100- 10
kp=1,ki=0。,kd=0.
extra_ drop = 5
sum_ error = 0
d_ error = 0
error_ n = 0
error_ b= 0
for t in range(1,8) :
error_ b = error_ n
error_ n = error
# print(error_ b1, error_ b2)
a_ error = error_ n - error_ b if t >=2 else 0
sum_ error += error
U =kp * error + ki*sum_ error+ kd* a_ error
Tn +=U - extra_ drop
error = T- Tn
print(f't= {t} | add {U: .5f} => Tn= {Tn: .5f} error= {error: .5f} I d_ error:
实现了以上代码后,绘制时间和物料每小时的下发关系图。
图11-3 Kp 、Ki和Kd调参示例1
图11-4 Kp 、Ki和Kd调参示例1
图11-5 Kp 、Ki和Kd调参示例1
作者:唐楠烊
来源:IT阅读排行榜
本文摘编自《推荐系统全链路设计:原理解读与业务实践》,机械工业出版社出版,经出版方授权发布,转载请标明文章来源。
延伸阅读
《推荐系统全链路设计:原理解读与业务实践》
唐楠烊 著
一套基于业务场景的个性化精准推荐系统解决方案
推荐系统、NLP技术专家撰写
深度解读多层推荐系统构建和优化的原理和核心技术
内容简介
这是一本指导中高级从业者高质量落地现代推荐系统,围绕现代推荐系统核心技术展开深度解读的专业工具书,又是一套完整的推荐系统高质量落地解决方案。本书基于推荐算法工程师实际工作场景规划内容,融合了作者在阿里巴巴、58同城等多家大厂做推荐系统设计和优化的经验,是一本方法和实践兼具的好书。
本书不针对零基础从业者,而是以帮助初级算法工程师向中高级进阶为目标。书中从底层剖析推荐系统在实际业务场景中可能出现的各种问题,直指问题的本质,并按照推荐系统工作流程逐一破解。
赠书活动
🎁本次送书1~4本,【取决于阅读量,阅读量越多,送的越多】👈
⌛️活动时间:截止到2024年7月10日
✳️参与方式:关注博主+三连(点赞、收藏、评论)
转载自:https://blog.csdn.net/u014727709/article/details/140062122
欢迎 👍点赞✍评论⭐收藏,欢迎指正