背景:
- 一般会使用多个召回策略,互相弥补不足之处,效果也更好。
- 每个策略之间毫不相关,一般可以编写并发多线程同时进行
问题:怎样将多个召回列表融合成一个有序的列表?
- 召回策略
实时召回-U2I2I(Online):几秒钟之内根据你的行为更新推荐列表,U2I即根据用户对Item的实时行为列表,然后对Item进行拓展推荐即2I
基于内容-U2Tag2I(Outline):离线算好用户偏好的tag,然后根据tag算相似度,推荐你可能感兴趣的Item。
矩阵分解-U2I(Outline):协同过滤的一种
聚类推荐-U2U2I(Outline):根据用户的行为对用户进行聚类。 - 粗排
- 精排(非必要)
精排是非常耗时的,如果在召回步骤中找回了数千条或是数万条,进行精排的耗时较大,成本较高。可以通过粗排进行截断来降低精排的成本。
举例:几种召回策略返回的列表(Item-ID,权重)分别为
召回策略x | A:0.9 | B:0.8 | C:0.7 |
召回策略y | B:0.6 | c:0.5 | D:0.4 |
召回策略z | C:0.3 | D:0.2 | E:0.1 |
补充知识:CTR(点击率)的计算方法:
展现日志-带召回源:X,Y,Z,X,Z,Y
点击日志-带召回源:点击X
每种找回的点击数/展现数=CTR
解决方法:
- 按照顺序展示:比如策略x—>策略y—>策略z,则直接展示A、B、C、D、E(里面包含去重)
- 平均法:分母为召回策略个数,分子为权重加和,C为(0.7+0.5+0.3)/3,B为(0.6+0.8)/3
- 加权平均:比如为三种策略自己指定权重分别为:0.5,0.3,0.2,那么B的权重为(0.5*0.8+0.3*0.6+0.2*0)/(0.5+0.3+0.2)
- 动态加权法:计算X/Y/Z三种召回策略的CTR,作为每天更新的动态加权
- 机器学习权重法:逻辑回归LR分类模型预先离线算好各种召回权重,然后做加权召回。
上面的各种方法从上到下效果依次变好,但是成本依次变大。