评估指标

机器学习中的评价指标

分类指标

Confusion Matrix

一个2×2的矩阵(混淆矩阵):

Accuracy

Accuracy 称为“精度”。

正确分类样本数除以总样本数:

accuracy并不适用于所有情况,引申出Precision和Recall。

Precision

Precision 称为“准确率、查准率”。

在垃圾邮件分类例子中:

Recall

Recall 称为“召回率、查全率”。

在医疗模型中,召回率很重要:

summary

$$
\begin{align}
{\boldsymbol{Accuracy}} &= \dfrac{\text{True positives + True negatives}}{\text{Total examples}} \\
{\boldsymbol{Precision}} &= \dfrac{\text{True positives}}{\text{predicted as positive}} = \dfrac{\text{True positives}}{\text{True positives + False positives}} \\
{\boldsymbol{Recall}} &= \dfrac{\text{True positives}}{\text{actual positives}} = \dfrac{\text{True positives}}{\text{True positives + False negatives}}
\end{align}
$$
如果拥有高的precision和recall,肯定是一个好的分类模型。

由于垃圾邮件模型和医疗模型的侧重点不一样,所以我们希望垃圾邮件分类模型有更高的Precision,医疗模型有更高的Recall。

$F_1$ score

一般来说,Precision 和 Recall 总是一个大一个小。

总体衡量 Precision 和 Recall,有较多的计算方法,F值(F1值)是其中一个:
$$
\text{F1 Score} = 2*\dfrac{\text{Precision∗Recall}}{\text{Precision+Recall}}
$$
F1 score是一个harmonic mean(调和平均数):

只有算法的 Recall 和 Precision 都要接近于1,才能得到一个很高的F1值 。 如果Recall = 0或者 Precision = 0 ,,1值也会等于0 .

$F_\beta$ score

在$F_1$ score中,Precision和Recall有同等地位,但更实际的情况是我们更侧重两者中的一个(垃圾邮件分类模型要求更高的Precision,医疗模型要求更高的Recall):

$F_\beta$ score
$\beta$ 取值影响

所以,当$\beta$越小,$F_\beta$ score越趋向于Precision,当$\beta$越大,$F_\beta$ score越趋向于Recall。

多混淆矩阵

当进行多次训练/测试,得到多个混淆矩阵;或在多个数据集上进行训练/测试,希望估计算法的全局性能。希望在n个二分类混淆矩阵上综合考察准确率和查全率,一般有如下两种方法。

macro

在各混淆矩阵上分别计算 PrecisionRecall,再计算二者平均值 macro-Pmacro-R,称为“宏查准率”和“宏查全率”,还可以通过 macro-Pmacro-R 计算“宏 $F_1$”(macro-$F_1$)。

micro

现将各混淆矩阵的对应元素进行平均,得到平均混淆矩阵,再根据此矩阵求“微查准率”(micro-P)、“查全率”(micro-R)和“微 $F_1$”(micro-$F_1$)。

ROC

Receiver Operating Characteristic (ROC) curve —— 受试者工作特征曲线。

三个分类的例子(完美、较好、差(随机分)),中间的竖线是分类阈值:

对于一个较好的分类情况,计算下图中的两个数值:

现在,移动我们的分界点(分类阈值),重复计算这两个数值:

这样就得到很多组数据,将其理解为二维平面上(横轴为false positive rate,纵轴为true positive rate,计算方法见上图)的坐标点,画图,即可得到ROC曲线:

面积约为0.8

对其他两个例子用同样的方法可求得ROC曲线:

面积越接近于1,模型越好。

一次分类结果只能作为平面上的一个点,通过调整这个分类器分类时候使用的阈值,就可以得到ROC曲线。曲线距离左上角越近(哪种阈值效果都很好),证明分类器效果越好。

ROC曲线有个很好的特性:在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化,这时Precision-Recall曲线变化较大,ROC曲线能够保持不变。

虽然,用ROC curve来表示分类器的performance很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。于是Area Under roc Curve(AUC)就出现了。顾名思义,AUC的值就是处于ROC curve下方的那部分面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。

AUC

AUC值为ROC曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。

AUC值的物理意义

假设分类器的输出是样本属于正类的socre(置信度),则AUC的物理意义为,任取一对(正、负)样本,正样本的score大于负样本的score的概率。

回归指标

Mean Absolute Error

MAE - 平均绝对误差,用sklearn实现:

MAE含有绝对值,不方便求导(反向传播),引出均方误差MSE。

Mean Squared Error

MSE-均方误差,用sklearn实现:

注意右边的图,实际上表示小块面积。

R2 Score

将现有模型与最简单的可能模型进行误差相比。

假设现有模型是线性回归模型(右上),简单模型是右下,水平直线(均值),用1减去他们的误差比值,得到R2 Score:

评价R2 Score:

R2值越高,我们的模型越好。

在sklearn中使用:


----------over----------