作者 | gongyouliu
编辑 | auroral-L
大家好,我是强哥。一个热爱暴走、读书、写作的人!
我后面不定期对粉丝、朋友的一些推荐系统相关的问题做解答,给大家作为一个参考。这是第一期,是一个做推荐系统的同学向我提的问题,我分享给大家,希望对大家有所启发和帮助。
粉丝问题及解答
Q1
推荐系统的召回模型一般使用 用户消费序列+上下文 表示用户向量,使用用户下一个点击的 物品 作为label 。这样的设计导致的结果是 热门物品 或经常出现的物品 会经常出现在label位置,而较少人关注的物品则没有这样的机会。如果将召回视作多分类问题的话,这样的后果是各分类样本的严重不平衡。对于这样的问题,有什么好的解决方法?如果使用类似smote或分类聚类再随机生成样本的方式,那么如何去消除对样本分布的改变?
答复:
热门物品经常被推荐,这很正常,也是满足客观规律的,因为确实是绝大多数人都会看比较火的视频,这个本身就是由人的从众心理决定的。推荐系统需要做的不是避免这种情况,而是尽量弱化热门商品,提升长尾物品的分发与转化。
具体的解决方案有如下几种思路:
1) 可以选择更多样的召回策略,比如基于标签召回、基于编辑精选召回、基于文本相似召回等。有些召回策略是不太受热门影响的。
2) 在排序阶段,增加一个物品热门度的特征,对热门的物品做适当的惩罚。
3) 在筛选训练集的时候,可以做适当的选择(欠采样),控制热门物品作为label的比例在一定范围。你上面说的smote等过采样方法也是类似的。具体怎么控制,这个也没有什么好的方法,只能多尝试,看看在测试集上的表现及上线看真实效果,及时优化调整。
Q2
ctr预估为目标的排序模型,一般将曝光点击事件设计成pairwise的二分类模型。同样存在大量负例和很少的正例。这样的情况是否需要处理?该如何处理?
答复:
应该pointwise用的比较多吧?处理方法跟上面一样的思路。
Q3
通常认为3层的全连接会 比2层全连接有效果的提升,这个是否有理论根据?还是经验总结?
答复:
3层模型更复杂一点,模型有更强的表现力,如果训练数据量比较多,采用3层应该会更好一点。否则可能是2层更好。这也没啥严格的数学理论证明,可能更多是经验吧。
Q4
如果希望解决各分类样本数量不平衡的问题,应该从修改样本入手还是从对损失函数加入惩罚入手?是否有什么经验或论文可以参考?
答复:
修改样本(过采样、欠采样)是可以的,对损失函数惩罚也是可以的。这两个方法也是比较主流的经常使用的方法。都可以尝试的。我手头没找到合适的论文,建议可以搜索一下关于类不平衡问题的文章和论文应该比较多的。我这里提供几篇文章及文中的参考论文:
(1)https://mp.weixin.qq.com/s/cDd18V_7VXjjVitbCMPr1g
(2)https://mp.weixin.qq.com/s/NE4JLEGjyCYh7nqYK8W1IQ
你再基于上面两篇文章去百度、知乎或者微信搜一搜找一下类不平衡问的处理方法,非常多的。
Q5
对于ctr预估模型的评估,使用AUC和gAUC那个更符合实际情况?是否有其他更合适的指标来衡量模型的训练效果?除了针对模型训练效果的评估,是否有其他方式来衡量实际的推荐效果?
答复:
对于推荐系统、广告、搜索等看点击的业务,gauc可能比较合适一点,参考这篇:https://zhuanlan.zhihu.com/p/84350940
点击率只是其中一个指标,对于视频可能人均播放时长更好一点,电商也可能考虑加购物车、购买等更商业化的指标。
评估一般可以分为离线评估,在线评估、主观评估3大类。
离线评估就是我们说的AUC、RMSE等等,只能衡量在测试集上的效果,但是不一定在真实场景中保证效果一样好。
在线评估就是一些商业化的指标,就是模型上线后评估效果,比如点击率、购买转化、人均播放时长等。我们还会评估某个产品在大盘中的表现,具体你可以参考我书中推荐系统的商业价值那章。
主观评估就是自己在使用产品的过程中,根据自己的使用历史,直观感受推荐的效果,可以请一些比较专业的人看或者对用户做问卷调查,我一般都是自己会经常关注给自己的推荐效果,如果很差或者很好是可以直观感受的到的。
更多评估指标的介绍可以参考我书(点击下面链接可以购买,目前半价)中推荐系统的评估那一章。