性能评估

1. 概念

我们在进行分类任务时,经常会对模型结果进行评估。评估模型好坏的指标有AUC,KS值等等。这些指标是通过预测概率进行计算的。而准确率,精确率和召回率也通过混淆矩阵计算出来的。
通俗来讲:

  • 准确率(accuracy):预测结果中为正例的比例
  • 精确率(precision):预测结果为正例样本中,真实结果为正例的比例(查的准)
  • 召回率(recall):真实结果为正例样本中,预测结果为正例的比例(查的全)

下图是对混淆矩阵的介绍

实际上,精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP),也就是

而召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。

然而在实际当中我们当然希望精确率越高越好,召回率也越高越好,事实上这两者在某些情况下是矛盾的。比如,在预测谁是小偷的时候我们希望的是精确率越高越好,去减少出现把好人当坏人的情况出现。而在图片识别的时候我们希望的是召回率越高越好,尽可能多的识别出我们想要的图片。因此在不同的场合中要结合实际情况去判断希望精确率比较高还是召回率比较高。当然也可以绘制Precision-Recall曲线来帮助分析。

2. F1-Meature(综合评价指标)

F-Measure是Precision和Recall加权调和平均

当参数a=1时,就是最常见的F1了:

很容易理解,F1综合了P和R的结果,当F1较高时则说明模型预测比较理想。

3. scikit-leaen中的应用

在scikit-learn中也有分类评估的API
sklearn.metrics.classification_report
相关参数:

classification_report(y_ture, y_pred ,target_name=……)
y_ture:表示真实的目标值
y_pred:表示估计器预测的目标值
target_name:表示我们要针对哪个目标类别产生报告的名称

0条评论