机器学习之理解模型评估

一、模型评估概述

通常机器学习模型训练都分为训练集和测试集,训练集用来训练模型,而测试集用来评估模型效果。例如对于分类模型来说,我们使用准确率来衡量模型的好坏。准确率的定义为在预测中分类正确的样本占样本总数的比例。

一般地我们也把学习器的实际预测输出与样本的真实输出之间的差异称为“误差”,在训练集上的误差称为“训练误差”或“经验误差”。在新样本上的误差称为“泛化误差”。而我们最终的目标则是要得到“泛化误差”最小的模型。但是在实际中,我们并不知道新样本是什么样的,因此我们把已知的数据集分为训练集和测试集,尽可能的减小模型在测试集上的误差。

为什么要分训练集和测试集?因为模型训练时常常会出现过拟合的现象,即在训练完模型之后,模型在训练集上的准确率可以达到100%,也就是训练误差为零。但是在新样本预测的效果却非常不好。因此我们用测试集来评估我们的训练模型。

二、测试集的划分

测试集划分的原则就是从已知数据集中划分出来的测试集和训练集要尽可能的互斥,即测试集中的样本尽可能不要出现在训练集中。这样测试集才能更好的近似新样本数据,

1.留出法

留出法直接将数据集划分为两个互斥的集合。而留出法需要注意的是训练/测试集的划分要尽可能保持数据分布的一致性(通常使用分层采样),避免因数据划分过程引入额外的偏差而对最终结果产生影响。并且使用留出法划分数据集训练存在一定的偶然性,一般要采用若干次随机划分、重复实验评估后取平均值作为留出法的评估结果。

2.交叉验证法

k折交叉验证法先将数据集划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性(通常使用分层采样),然后,每次用k-1个子集的并集作为训练集,余下那个子集作为测试集,这样可以获得k组的训练集/测试集,从而进行k次训练和测试,最终返回k次实验的均值。而最常用的k的取值是10。
在这里插入图片描述

3.自助法

自助法直接以自助采样法为基础,每次随机从初始总样本(m个样本)中挑选一个样本,然后将该样本放回初始总样本中,重复随机抽取m次得到训练样本。这种方法,当m足够大时,会使一部分样本始终不会被抽到,然后将这些未被抽到的样本作为测试集。

为什么会有样本始终不被抽中?
假设初始样本中有m个样本,每个样本被抽到的概率一样,都为1/m,则样本在m次采用中始终不被抽到的概率是(1 - 1/m)m。当m足够大时,取极限为:
在这里插入图片描述
故总样本中会有36.8%的样本不会被抽中,可用来做测试集。

  • 自助法在数据集较小、难以有效划分训练/测试集时很有用。
  • 自助法能从初始数据集中产生多个不同的训练集,这个集成学习等方法有很大的好处。
  • 自助法产生的数据集改变了初始数据集的分布,因此会引入估计偏差。
  • 在数据集样本足够时,留出法和交叉验证法使用更多一些。
三、性能评估

在训练好模型之后,我们需要对模型进行泛化性能进行评估。在有监督学习的预测任务中我们通常用预测值和真实标签进行比较。比如回归中最常用的性能度量指标是“均方误差”(mean squared error)
在这里插入图片描述
在无监督学习中没有具体模型评估标准,而聚类的评估方法通常有两类:一类将聚类结果与某个“参考模型”进行比较,称为“外部指标”;另一类是直接考察聚类结果而不利用任何参考模型,称为“内部指标”。具体可以参见《机器学习》的第9章第2节聚类的性能度量。

1. 混淆矩阵

文章开头我们讲到了准确率的概念,准确率最常用在二分类任务,同时也适用多分类任务。准确率的一般形式下的表达式:
在这里插入图片描述
除了准确率之外,还有查准率(精确率,precision)、查全率(召回率,recall)、F1值。在介绍它们之前我们看了解一下二分类中的混淆矩阵。分类结果的混淆矩阵主要有四个部分组成:真正例(true positive,FP)、假正例(false positive,FP)、真反例(true negative,TN)、假反例(false negative, FN)。
在这里插入图片描述
根据混淆矩阵我们可以计算查准率、查全率、F1值:
在这里插入图片描述
在这里插入图片描述
一般的,查准率和查全率是一对矛盾的指标,当查准率高时,查全率往往偏低。相反,当查全率高时,查准率往往偏低。可以通过P-R曲线查看两者的关系:
在这里插入图片描述
根据曲线我们可以断言,一条曲线被另一条曲线完全“包住”,则后者明显优于前者。图中最优的学习器为A曲线。

在实际应用当中,常常对查准率和查全率的重视程度有所不同。例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容的确是用户感兴趣的,此时查准率更为重要,而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更为重要,所以F1度量的一般形式为 F β = ( 1 + β 2 ) ∗ P ∗ R ( β 2 ∗ P ) + R F_\beta=\frac{(1+\beta^2)*P*R}{(\beta^2*P)+R} Fβ=(β2P)+R(1+β2)PR其中 β > 0 \beta \gt0 β>0度量了查全率对查准率的相对重要性, β = 1 \beta = 1 β=1则为标准的F1, β > 1 \beta \gt 1 β>1表示查全率有更大影响, β < 1 \beta \lt 1 β<1查准率有更大影响。

对于多分类问题F1有以下几种形式:
1、Micro-average
假设四分类模型的预测值和真实值如下:
y_true = [1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4]
y_pred = [1, 1, 1, 0, 0, 2, 2, 3, 3, 3, 4, 3, 4, 3]
总样本数为14,根据预测值和真实值对比可以得出各类的TP、FP、FN

1类2类3类4类
TP3221
FP0031
FN2211

所以micro的精确度P 为 TP/(TP+FP)=(3+2+2+1)/(3+2+2+1+0+0+3+1)=0.666 召回率R TP/(TP+FN)=(3+2+2+1)/(3+2+2+1+2+2+1+1)=0.571 所以F1-micro的值为:0.6153
2、Macro-average
假设四分类模型的预测值和真实值如下:
y_true = [1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4]
y_pred = [1, 1, 1, 0, 0, 2, 2, 3, 3, 3, 4, 3, 4, 3]
总样本数为14,根据预测值和真实值对比可以得出各类的TP、FP、FN

1类2类3类4类
TP3221
FP0031
FN2211

需要计算没类的P和R,例如1类的P=3/(3+0)=1,R=3/(3+2)。F1-macro的值为 2 ∗ P ˉ ∗ R ˉ P ˉ + R ˉ \frac{2 * \bar P * \bar R}{\bar P + \bar R} Pˉ+Rˉ2PˉRˉ

2.ROC曲线和AUC

很多学习器在测试样本中给的都是一个类概率预测,然后将这个预测值和一个分类阈值(threshold)进行比较,若大于阈值则分为正例,否则为反例。通常预测的类概率值在[0.0,1.0]之间,阈值一般取0.5。在实际情况下,我们会根据不同的需求,取不同的阈值,若更注重查准率,则会将阈值取大一点,若更注重查全率,则会将阈值取小一点。ROC曲线则是从这个角度出发来研究学习器的泛化性能。ROC曲线的横坐标是“假正例率”(false positive rate),纵坐标是“真正例率”(true positive rate)。
在这里插入图片描述
如下图为ROC曲线图,简称“ROC图”
在这里插入图片描述
其中AUC可以通过对ROC曲线下各部分的面积求和而得。假定ROC曲线是由坐标为{(x1, y1), (x2, y2), (x3, y3), ···, (xm, ym)}的点按序连接而形成(x1=0, xm=1),AUC的表达式:
在这里插入图片描述
形式化地看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。给定m+个正例和m-反例,令D+和D-分别表示正、反例集合,则排序“损失”(loss)表达式
在这里插入图片描述
即考虑每一对正、反例,若正例的预测值小于反例,则记一个“罚分”,若相等,则记0.5个“罚分”。容易看出,lrank对应的是ROC曲线之上的面积:若一个正例在ROC曲线上对应标记点的坐标为(x,y),则x恰是排序在其之前的反例所占的比例,即假正例率,因此AUC和lrank的关系:
在这里插入图片描述

AUC=1表示完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测,实际不存在
0.5<AUC<1表示分类器优于随机猜测,分类器妥善设置阈值的话,能有预测价值
AUC=0.5表示和随机猜测一样,分类器没有预测价值
AUC<0.5表示比随机猜测还差,可以作为反向指标运用。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值