商品推荐方案讨论、E&&E算法以及deep learning如何作用于推荐系统中的排序
-
经常用于冷启动的bandit算法
-
推荐系统和计算广告中经常会碰到某些长尾广告或长尾item从来没有机会或者很少机会的展示,
导致CTR预估非常不准,需要探索性地创造机会给它们一定的展示量,但又不能带来太大的损失。
这种问题一般称作Explore and Exploit问题。
在学术界经常把它描述成为一个多臂**机问题(multi-armed bandit problem, MAB),若干台**机,
每次可以选择一台机器摇一下,有一定概率会吐钱出来,但各台机器吐钱概率不一致且未知,
那么赌徒每次该如何选择来最大化收益?
每个**机相当于一个item,吐钱:item的质量(简单的看作点击率)赌徒:推荐算法,这样就把我们的推荐系统映射到bandit算法了 -
探索和利用(Explore and Exploit):概念介绍
exploit-explore问题,
exploit意思就是:对用户来说,是比较确定的用户兴趣,对item来说,系统知道这个item的质量(丰富行为产生的历史ctr)
explore意思就是:不断探索用户新的兴趣才行,不然很快就会出现一模一样的反复推荐。对item来说,
针对新出现的item,要给一定的概率进行推荐试错。 -
用bandit算法解决冷启动的思路
用圈定的推荐候选item表示每个用户不同兴趣,也就是MAB问题中的臂(Arm),通过几次试验,
来刻画出新用户心目中对每个item的感兴趣概率。
如果用户对某个item感兴趣(提供了显式反馈或隐式反馈),就表示得到了收益,ctr
如果推给了它不感兴趣的item,推荐系统就表示无收益。无点击
如此经历“选择-观察-更新-选择”的循环,理论上是越来越逼近用户真正感兴趣的item。
这里介绍一下UCB算法,UCB算法全称是Upper Confidence Bound(置信区间上界):
代表第轮时第个item的平均点击率,其中加号前面是这个item到目前为止的收益均值(平均点击率),后面的叫bonus,是这个item被展示次数。
关于UCB的计算公式,可以这么理解:
公式右边的第一项,可以称之为“Exploitation Term”; 第二项,可以称之为“Exploration Term”。 为什么? 首先,如果一个臂,到t时刻为止,已经尝试了很多次。那收益(UCB公式右边第一项)越高,越会继续采用。这就是Exploit; 此外,如果一个臂尝试的次数很少,那么UCB右边第二项就会比较高。也就是相对尝试的机会更高。这也就是Exploration。也就是相应也会鼓励去尝试哪些之前尝试的少的臂。
举个例子:
池子是1000个新item,展现1万次以上,默认展现充分,剔除这个池子,新来的item进入这个池子,(使用队列,pop,push的思路操作)
实验思路:先对每一个item都试一遍,之后,每次选择UCB值最大的那个item,其中加号前面是这个item到目前为止的收益均值(平均点击率),后面的叫bonus,t是目前1000个item的总的试验次数,是这个item被展示次数。
这个公式反映:收益均值ctr越大,bonus越小,被选中的概率会越来越大,同时那些被选次数较少的item也会得到试验机会。
获取这个item的实时点击率 -
Epsilon-Greedy算法:
选一个(0,1)之间较小的数epsilon,每次以概率epsilon(产生一个[0,1]之间的随机数,比epsilon小)做一件事:所有圈定的1000个item中随机选一个。否则,选择截止当前,选择平均ctr最大的那个item进行展现。(每次以 Epsilon 的概率在 N 臂老虎机中随机选择一个拉杆,否则就选择目前为止平均收益最大的那个拉杆)
这种算法简单粗暴,epsilon的值可以控制对探索和利用的偏好程度。 -
Thompson sampling算法(汤普森采样):
- 假设1000个当中,每个item是否产生ctr,其背后都服从一个概率分布(分布),产生收益的概率为p。
- 我们不断地试验,去估计出一个置信度较高的“概率p的概率分布”近似解决这个问题。
- 怎么能估计“概率p的概率分布”呢?
答案是假设概率p的概率分布符合beta(clk, no clk)分布,它有两个参数: clk, no clk。 - 每个item都维护一个beta分布的参数。每次试验后,选中一个item,展示一下,有clk则该item的clk增加1,否则该item的no clk增加1。
- 每次选择item的方式是:
用每个item现有的beta分布产生一个随机数b,选择所有item产生的随机数中最大的那个item去展现。
choice = numpy.argmax(pymc.rbeta(1 + self.clk, 1 + self.noclk - self.clk))
GMV,QPS,RT是什么?
GMV:电商里面经常会用的一定时间内的商品成交总额
QPS:
对于特定的server,在一定时间内处理的流量
举个例子:假设server1每秒1000qps(query per second,每秒处理1000次请求)
RT
server1对每次请求的评价响应时间
用户不至于产生厌恶情绪要求要求RT<100ms
优化性能:
1.减少排序候选的数量,1000-》100
卡召回的阈值
2.
一次request
response流程:解析请求(获取user id),去索引里拉取倒排,进行召回的阈值过滤,进排序模型进行排序
优化排序:
裁剪模型:让模型参数变得更少,在AUC(效果)和RT(效率)之间进行tradeoff
-
对推荐系统的理解
推荐系统有什么作用?
1.提升用户体验,帮助用户节省时间,优化用户体验
搜索和推荐有什么关系,推荐的效果越好,用户主动搜索的意愿越小
用户对app,网站也好,熟悉感更好,好感,长期来看,对提升用户留存越高
提升GMV
我们对推荐系统的理解是什么?
第一阶段:根据用户兴趣,分析出下一次希望获取的信息,然后推荐给用户
第二阶段:对用户进行引导,培养,让用户按照我们设定的路线去使用我们的产品
靠技术
靠提升效率的技术
靠推荐的更好
怎么推荐的更好,靠兄弟们设计的算法,设计的item embedding,user embedding,排序算法更加精确
电影推荐系统和电商推荐系统有什么区别?
y(clk,no clk)=model(user,item,context)
举个例子:
user:对于电影来讲,用户喜欢武打片(用户观看过武打片)大概率一直喜欢武打片
对于电商来讲,用户喜欢某一品牌的电视,下次推电视就是不合理的
item:对于全世界的电影来讲,几十万部
对于商品来讲,商品会下线,保守估计百万两级
假设item要embedding成100维的向量,对于商品来说,纸巾,衣服,裤子,鞋子…
对于电影来讲,成龙电影和ab的电影,区别不是很大,即电商推荐系统的难度还是要大一些的。实际业务场景数据量最大的两个场景
首页:猜你喜欢
详情页:相关推荐推荐系统其实是诸多互联网公司的重要业务
理解推荐系统要必须从业务角度,用户视角出发,而不是从算法 视角
推荐论文:Neural Collaborative Filtering