推荐系统介绍
推荐系统工业界主流落地场景
- 信息流
- 电商
- o2o的LBS
主流架构
架构简图:
Recall架构简图
Collaborative Filtering
协同过滤分为基于用户和基于物品的协同过滤。
背景
- 信息过载,用户实际却求不明确
- 强依赖于用户行为
基于物品的协同过滤
基于物品的协同过滤就是给用户推荐它之前喜欢的物品相似的物品,物品间的相似度和预测的用户对物品i的评分为,每个用户对物品相似度的贡献权重都为1:
公式升级1
理论意义:活跃用户应该被降低在相似度公式中的贡献度,分母不变,分子惩罚了用户评价物品的数量,数量越多对相似度的贡献就越低。
公式升级2
理论意义:用户在不同时间对Item的操作应给予时间衰减惩罚,delta_t代表用户对Item_i与Item_j行为的时间差,如果差距越小,f(delta_t)就越趋近于1.
基于用户的协同过滤
- 给用户推荐相似兴趣用户感兴趣的物品
- 如何评价相似兴趣用户集合:基于用户行为重复度,两个用户行为重合度高,相似度就高
- 找到集合用户感兴趣的而目标用户没行为过的Item
分子N(u)代表用户u有过行为的item集合,N(v)代表用户v有过行为的item集合,分子是item的重合程度,分母是归一化,惩罚了操作过多用户的权重
公式升级1
理论意义:降低那些异常活跃物品对与用户相似度的贡献,分母不变,分子上如果一个item被越多的用户共同行为过,则其对用户重合度的贡献就越底。
公式升级2
理论意义,不同用户对同一个item行为时间段不同应该给予时间惩罚,一个用户A是近期点击,一个用户B是好几个月前的点击,可以推测用户B兴趣已经产生了变化,用户A更能反应近期的兴趣。
与基础版本相比,分母不变,分子中每一个用户重合度的贡献受到时间差影响,如果两个用户对同一个物品的操作时间差越短,对f(delta_t)就越大,可以理解为这两个用户越当前的兴趣相似,反之,时间差越大,则越不可能相似。
Usercf vs Itemcf
- 推荐实时性
- Usercf: 用户新行为不会直接造成自己推荐改变,点击新物品,并不会立马改变其他用户的物品,即自己的推荐结果也不会直接改变
- Itemcf:用户的新行为会直接改变自己的推荐结果,点击新物品,会立马推荐相似的其他物品
- 新用户/新物品的推荐
- Itemcf无法及时将新物品推荐出去,需要等到新物品与其他物品在相似度矩阵中同时出现才行;新用户点击了某个物品,即可推荐该物品的相似物品给新用户
- Usercf无法及时为新用户推荐物品,需要等用户有一定的行为和得到与其他用户的相似度矩阵之后才能推荐;新物品上架被用户点击后,Usercf可以马上将该物品推荐给相似的用户
- 推荐理由可解释性
- Itemcf是通过用户的历史点击行为产生的推荐,结果有可解释性
- Usercf是根据相似用户群体产生的推荐,结果难以直接解释
使用场景
- 性能层面考量
- Usercf需要计算用户相似度矩阵,对于用户数过大的系统,不适合
- Itemcf需要计算物品相似度矩阵,对于物品种类过大的系统,不适合
- 由于实战中的推荐系统用户量远远大于物品的数量级,因此经常采用Itemcf
- 个性化场面考量
- Usercf适用于物品需要及时推荐下发且个性化需求不太强烈的领域
- Itemcf适用于长尾物品丰富,并且个性化需求强烈的领域
- 真实推荐系统中往往利用多种召回算法解决及时下发问题,因此为了追求个性化推荐系统,常常倾向于采用Itemcf
评价算法评价指标
- 业务指标
- Item推荐覆盖率
- Offline评价方法:评价模型推荐结果在测试集上的表现
- Online评价方法:定义指标,在生成环境中进行ABTest
总结
- 推荐引擎主体架构,工业界推荐系统落地场景
- 协同过滤算法的落地实战
- 推荐系统在不同业务下的评价指标
Note: Cover Picture