bandit EE的算法网上有很多文章介绍,这里就不再赘述了。本文主要介绍EE UCB算法在推荐召回中的实际应用。
UCB的公式如下:
:topic点击次数; :topic展示次数; t:该用户展现总次数 。
该公式前半部分计算topic的实际点击率;后半部分计算探索概率。
在topic展现次数较大时,主要依赖前半部分的值,即实际点击率的置信度较高。
在topic展现次数较小时,点击率的置信度较低,此时对该topic主要靠探索值来排名。
在推荐召回中,根据上述公式计算用户对每个topic的score,然后根据score取topK个topic,最后召回topK topic下的热门feed。
在实际使用中,有如下两个trickle
- 对于从未展示过的topic,T的初始值设为多少比较合适
需要根据业务中的探索需求大小来设定,假设用户总展现次数t=10,可以通过下表来选择T的初始值
展现次数 | 点击次数 | score |
---|---|---|
1 | 1 | 1+=3.14 |
1 | 0 | =2.14 |
2 | 1 | 0.5+=2.017 |
2 | 0 | =1.517 |
3 | 1 | 0.33+=1.569 |
3 | 0 | =1.239 |
4 | 1 | 0.25+=1.323 |
4 | 0 | =1.073 |
从表中可以看出,如果将未展示过的topic T初始值设为2,则未展示过的topic score会大于展示过3次未点击的topic以及展示过4次只点击1次的topic。 即T的初始值越小,探索概率越大;反之探索概率变小。
-
所有未展示过的topic中优先选择哪些topic做推荐
一般有类似linucb算法来根据用户meta特征选取匹配的topic
截图.png
然而在实际推荐系统中,除了EE召回,还有其他各种召回,最后通过排序模型来选择展示给用户的内容。因此所有展现给用户的topic都是已经与用户特征做过匹配的了。基于以上想法,可以不用实现linucb这类复杂的算法,直接分别计算未展示topic与所有已展示topic的距离和,对未展示的topic按距离和做倒序排序选取即可。
网友评论