AUC与GAUC
在推荐系统中,一般会用AUC指标来离线评价模型效果的好坏,AUC值的物理意义为模型把正样本排在负样本前面的概率,所以AUC=0.5时模型类似随机排序模型。AUC统计的是全体样本上的概率(正样本排在负样本前面),在一些情况下,AUC指标会失真。这主要出现在用户点击概率偏差很大的数据集上,模型的高AUC只是在学习那些用户点击率高,那些用户点击率低,用户具体喜欢哪个item,并没有学到。GAUC主要用来解决这个问题,每个用户单独计算AUC,再将所有用户的AUC进行加权求和。
一些细节
在单个用户维度计算AUC时,经常会出现一个用户全部全部为正样本或负样本,这是需要定义AUC的值,全负样本AUC=0,全正样本AUC=1。由于大部分情况下全负样本的用户较多,直接求和得到的gauc会接近样本点击率,因此会剔除全负样本的用户,使用有过点击的用户数据进行计算。
特殊情况
在使用有点击用户的数据计算GAUC后,还是可能出现GAUC指标失真的情况。考虑下这种数据分布,全负样本的用户占90%,1次曝光1次点击的用户占9%,多次曝光有过点击的用户占1%。这种情况下,模型可能简单学习到了两类用户,90%的全负样本用户,9%的全正样本用户,剩下1%可以忽略了。
这种情况下,按上述GAUC计算方法,剔除90%的全负样本用户,剩下9%的1曝光1点击用户和1%的多次曝光且有点击用户,9%的用户AUC都为1。剩下1%的用户,即是AUC为0,整体的GAUC仍然有0.9。针对这种情况,则需要再将全正样本的用户剔除,这样计算出来的GAUC才能衡量模型的真实效果。
如何训练
上面提到的数据集,直接进行训练,模型大概率是学不到有效排序的。简单粗暴的办法是,剔除全正、全负样本后再训练。这样能模型能学到有效果信息,不过数据量急剧减少,很多id类的参数都没有训练过,会影响模型的泛化效果。另一个方法是对样本的权重进行调整,比如全负样本的权重为0.01,1曝光1点击的样本权重为0.1,其他样本权重为1。这样既能保证学到有效排序信息,模型也见过了所有样本,增强模型的泛化能力。