CTR预估,难在几个点上:1. 观察到的是点击或没点击的二元数据,但是要预估的是一个[0,1]上的点击概率,换句话说就是没有绝对的ground truth;2. 各种机器学习模型训练完以后出来的分数,即使是LR,也不见得就是一个好的可以直接拿来当预估结果的概率;3. 观察数据往往是有偏的,比如在RTB里面,观察到的广告展现和点击数据都是赢得竞价的那些。
评价CTR预估效果来说,假设给了你一个CTR预估模型,logloss和AUC是两个比较常用的评价指标。logloss更关注和观察数据的吻合程度,AUC更关注rank order。举个例子:三个观察样本标签{0,1,1},一个CTR预估是{0.49, 0.5, 0.51}, 另一个CTR预估是{0.91, 0.9, 1.0}, 可以算一下两个的logloss和AUC感受一下。这里AUC一般是指AUC of ROC如何计算这些指标这里就不多说了,很容易一次搜索就找到,这些指标的计算不要求模型给出是否点击。
上述两个指标适合线下评估,线上其实有更简单直接的评价方式:把线上的impression log按照预测的CTR从小到大排序,然后按照某个特点流量步长(比如每10000个impression)分桶,统计每个分桶的平均预估CTR (pCTR)和实际CTR(aCTR),把他两的对比关系画出来就行了,理想状态下应该是一条斜率为1的线。
这里要特别强调一下用线上的其它业务指标如点击率、营收、利润、eCPC等等是不能给出CTR预估效果评价的。这些业务指标,受到整个广告系统其它模块如bid optimization,budget pacing等和外部竞价环境的综合影响,它的变化或者AB test中观察到的不同,不是简单地由于CTR预估变化带来的。换句话说,如果上了一个新的CTR预估模型的实验,发现业务指标变好了,这不等于说CTR预估更准了。一个简单的例子:如果一个CTR预估模型给出的预估总是比上帝视角的完美预估在低CTR区域低估,在高CTR区域高估,那么假设bid是base_bid*pCTR的话,相比完美预估,这个模型会赢得更多的高CTR区域的竞价,输掉更多在低CTR区域的竞价,最后会观察到实验组的CTR反而比完美预估的试验组更高。
CTR预估本身,需要解决1. rank order, 2. calibration, 3. sample distribution reconstruction 三个问题,有机会再分享。
登录 | 立即注册