机器学习常见评估指标

本秂侑毒 提交于 2020-01-01 18:49:39

开篇:最近回顾了系列的算法学习资料,整理了算法的学习流程,从问题出发,怎么用算法解决实际业务中的case。

当接到需求时,首先需要深入了解需求场景,将需求转换为算法可以解决的问题,我们大部分遇到的是分类和回归的场景。需要我们深入理解问题,收集足够多的数据,从不同的纬度分析,对该问题完成建模。对于需求场景中定义成问题,完成问题的建模,这是最重要的部分。接下来都是一些套路的流程,对数据进行特征抽取,不同维度分析数据等特征工程,根据模型复杂度、数据的稀疏、线性与非线性等筛选出适合的模型。在此基础上进一步提高效果的模型融合等等(后续慢慢会讲到

 

首先我们需要了解怎么评估建模的好坏。根据问题场景的不同,定义不同的评价指标,用来评价建模的好坏的程度。这个评估指标,一般作为模型的评估,真正线上的情况要根据不同场景的业务指标来衡量。

 

  • 分类指标
  1. 准确率

通俗理解就是对于预测的所有数据,预测正确的数据占全部预测数据的比例。

如图中是模型对数据进行的预测,左右两个矩形表示正负样本集(正样本简称P负样本简称N),左侧红色半圆true positives表示模型正确预测为正样本的数据简称TP,剩余部分是false negatives,表示样本的真实标签是正样本,但是模型预测为负样本的数据,简称FN,右侧红色半圆部分false positives表示数据的真实标签是负样本,但是模型预测为正样本的数据,简称FP,剩余部分true negatives 表示真实是负样本,模型预测也是负样本,简称TN,TN+TP表示模型预测对的部分,包含了对正样本和负样本的预测,FN+FP表示模型预测错误的部分,包含了对正样本和负样本的预测。

 

对于一般的二分类问题,正负样本均衡,一般可以用准确率进行衡量。准确率可以覆盖到所有可预测到的数据,覆盖了TP、TN、FP、FN(样本总数)。需要照顾到所有情况数据的指标,样本均衡,可以使用准确率,计算公式如下:

 

 

 

 

  1. 召回率与精确率

真实场景中往往数据是不均衡的,如果用准确率很难衡量出模型的好坏程度。我们考虑使用召回率与精度。计算公式如下:

 

 

精确率和召回率都是越高越好,但是实际中往往两者是相矛盾的,精确率高时,召回率低,召回率高时,精确率低。所以要根据自己的实际业务选择哪个指标更加重要,如何将两个指标整合在一起呢?F1 score

 

 

 

 

也可以对不同指标进行加权,综合查看结果指标。

 

  1. ROC与AUC

ROC 是以FPR为横坐标,以TPR为纵坐标的曲线图。以样本的预测概率进行排序,以每条样本的预测概率为阈值,计算对应的TPR与FPR。

 

 

Roc曲线越靠近左上角性能越好,左上角坐标(1,0)表示完美分类器,FPR=0,TPR=1。(0,0) 点,FPR=TPR=0,所有的点都预测为了负值。(1,1)点,所有的点都预测为了正值。

(1,0)点,FPR=1,TPR=1,即 FP=1,TP=0.负样本都预测为正值,正样本都预测为了负值。 最差的分类器。具体的可以通过计算公式推导。

AUC表示roc曲线下方的面积,取值越大说明模型越有可能将正样本排在负样本的前面。因此AUC可以作为样本排序的指标,计算公式如下:

 

 

|p|表示正样本。|N|表示负样本。

表示第i个正样本的排序序号。排序根据概率得分从小到大排。

 

 

 

 

  1. 交叉熵损失

 

这是分类问题中的常见损失,同样在分类中,交叉熵损失是越小越好的。与AUC不同 对于排序不敏感

 

  • 回归指标:
  1. 绝对值误差

MAE能够很好的刻画偏差,其实是对数据中值进行拟合,但是一些模型要求具有二阶导数的如XGBoost,所以不能用MAE所为损失函数。

计算公式如下:

 

  1. 绝对值百分比误差

保证

不等于0,是对MAE的一种改进。
  1. 均方根误差

 

与MAE相比,RMSE对大误差的样本有更大的惩罚,对离群点敏感。不如MAE健壮。RMSE是对数据均值的拟合。

 

  • 排序指标
  1. 平均准确率均值MAP

先一次排序的平均准确率,再计算总体的平均准确率。

 

假设有两个主题,主题1有4个相关网页,主题2有5个相关网页。某系统对于主题1检索出4个相关网页,其rank分别为1, 2, 4, 7;对于主题2检索出3个相关网页,其rank分别为1,3,5。对于主题1,平均精度均值为(1/1+2/2+3/4+4/7)/4=0.83。对于主题2,平均精度均值为(1/1+2/3+3/5+0+0)/5=0.45。则mAP= (0.83+0.45)/2=0.64。

 

 

  1. NDCG

累计增益(CG)

 

 

代表i位置的相关度

缺点:假设搜索“篮球”结果,最理想的结果是:B1、B2、 B3。而出现的结果是 B3、B1、B2的话,CG的值是没有变化的,因此需要下面的DCG。

折损累计增益(DCG)

为了让排名越靠前的结果越能影响最后的结果

归一化折损累计增益(NDCG)

DCG是一个累加的值,没法针对两个不同的搜索结果进行比较,因此需要归一化处理,这里是处以IDCG。IDCG为理想情况下最大的DCG值。

 

 

 实际的例子

  假设搜索回来的5个结果,其相关性分数分别是 3、2、3、0、1、2

  那么 CG = 3+2+3+0+1+2

  可以看到只是对相关的分数进行了一个关联的打分,并没有召回的所在位置对排序结果评分对影响。而我们看DCG:

i

reli

log2(i+1)

reli /log2(i+1)

1

3

1

3

2

2

1.58

1.26

3

3

2

1.5

4

0

2.32

0

5

1

2.58

0.38

6

2

2.8

0.71

  所以 DCG  = 3+1.26+1.5+0+0.38+0.71 = 6.86

  接下来我们归一化,归一化需要先结算 IDCG,假如我们实际召回了8个物品,除了上面的6个,还有两个结果,假设第7个相关性为3,第8个相关性为0。那么在理想情况下的相关性分数排序应该是:3、3、3、2、2、1、0、0。计算IDCG@6:

i

reli

log2(i+1)

reli /log2(i+1)

1

3

1

3

2

3

1.58

1.89

3

3

2

1.5

4

2

2.32

0.86

5

2

2.58

0.77

6

1

2.8

0.35

  所以IDCG = 3+1.89+1.5+0.86+0.77+0.35 = 8.37

最终 NDCG@6 = 6.86/8.37 = 81.96%

 

  • 样本选择

从海量的数据中识别和选择相关性高的数据作为机器学习的输入。怎么选择样本数据尤为重要。对数据进行去噪处理,进行采样,选择合适的数据集。

数据去噪主要去掉不可能的值,空值等,但是一些模型是可以处理空值的如xgboost。

采样尽量保持采样的期望与真实数据的期望一致,尽量保持值的分布特点。主要有上采样、下采样、随机抽取、分层抽样、整群采样等

对于离线的验证可以进行交叉验证:1、留出法 2、k折交叉验证 3、自助法

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!