机器学习之CTR预估评价指标

一 离线、在线评价指标

1.1 LogLoss对数损失


  • 熵的主要作用是告诉我们 最优编码信息方案的理论下界(存储空间),以及度量数据的信息量的一种方式。理解了熵,我们就知道有多少信息蕴含在数据之中,现在我们就可以计算当我们 用一个带参数的概率分布来近似替代原始数据分布的时候,到底损失了多少信息。

  • 交叉熵

  • KL散度(相对熵)


    上式中 代表观察样本的真实分布概率, 代表对观察样本的一种近似分布。  
    那么 KL散度描述的就是当用近似分布Q拟合真实分布P时的信息损失大小。KL散度的值越大,代表真实分布和近似分布的差异越大,反之越小。

为了使得近似分布和真实分布之间的差异越小,我们就需要令KL散度的值越来越小,那么对公式(3)做转换后,可发现:


Constant表示一个常数,因为当我们确定真实样本的分布后, 会是一个常数,不会影响训练KL散度值减小的过程。  
所以 最小化KL散度变转换为最小化真实分布和近似分布的交叉熵

  • Log Loss 
    CTR预估问题本质是个二分类问题,真实分布中单个样本标签的分布为。模型预测单个样本标签分布为。那么单个样本的交叉熵为: 


    那么当我们有N个样本的训练集,则整体交叉熵为:  


    公式(7)和逻辑回归二分类的整体损失函数Log Loss Function一致。  
    那么我们就可以用 KL散度的值评价CTR预估值和真实样本标签值之间的差异。又因为公式(4),则我们只需要求取整个样本集预测前后的交叉熵的值即可  
    故在CTR预估中,二分类问题,则Log Loss的求解步骤如下:  
    机器学习之CTR预估评价指标_第1张图片  
    当面对的是多分类问题时,由公式(2)详细展开等价于:  

    N代表样本数,M代表类别数


1.2 AUC

1.2.1 二分类的常用评价指标
  • FP rate
  • TP rate
  • 精确率precision
  • 召回率recall
  • 准确率accuracy

分别定义如下:

机器学习之CTR预估评价指标_第2张图片


该指标反映 真实正样本中被预测为正样本的比例,此值越大越好


该指标反映 真实负样本中被预测为正样本的比例,此值越小越好  

该指标反映 所有预测正样本中包含真实正样本的比例,此值越大越好  

该指标反映 真实正样本中被预测为正样本的比例,此值越大越好  

1.2.2 ROC曲线和AUC值
  • ROC曲线 
    机器学习之CTR预估评价指标_第3张图片

    如上图所示,ROC曲线以FPR(False Positive Rate)为横坐标,以TPR(True Positive Rate)为纵坐标。对于二分类器,可以通过ROC曲线评判优劣。若FPR越小,TPR越大,则说明分类器性能越好,即曲线越逼近左上角,越好。最理想状态就是(0,1)点,最差情况是(1,0)点。

    如何画ROC曲线? 
    我们最终得到的是分类器认为某个样本具有多大的概率属于正样本(或负样本)。假设我们已经得到了所有样本属于正样本的概率输出结果,那么只要设定一个阈值,就可以得到预测值大于阈值的样本为正样本,预测值小于阈值的样本为负样本,从而得到一对(FPR,TPR)值,此(FPR,TPR)就可以看做ROC图上的一点。不难推测到,只要我们设置一系列不同阈值,就可以得到一系列(FPR,TPR)点,从而画出最终ROC曲线。例如下面示例: 
    按照预测值对样本降序排列,并且从上到下以预测值为阈值

    机器学习之CTR预估评价指标_第4张图片

    然后根据一系列(FPR,TPR)点,确定ROC曲线,如下图: 
    机器学习之CTR预估评价指标_第5张图片

    当阈值取值越多,ROC曲线越平滑 
    ROC曲线的特性:

    当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化,ROC曲线基本保持原貌。

    机器学习之CTR预估评价指标_第6张图片

    上图中,{a,b}图代表原始数据集正负样本平衡时。{c,d}代表测试集中负样本的数量增加到原来的10倍后,分类器的结果。易发现ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大

  • AUC值 
    AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。 
    AUC值的意义:

    "The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example" 
    AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。


二 参考文献

  • http://www.cnblogs.com/coldyan/p/6088436.html
  • http://alexkong.net/2013/06/introduction-to-auc-and-roc/
  • https://www.zhihu.com/question/54009615
  • https://www.zhihu.com/question/30643044/answer/48955833
  • https://en.wikipedia.org/wiki/Cross_entropy#Cross-entropy_error_function_and_logistic_regression
  • http://www.jianshu.com/p/43318a3dc715?from=timeline
  • http://www.cnblogs.com/crackpotisback/p/6781872.html

你可能感兴趣的:(机器学习)