内容摘要
本文深入探讨机器学习模型评估相关知识。详细介绍分类和回归模型的常用评估方法,分析误差、偏差和方差的区别与联系,阐述标准差的优势、欠拟合与过拟合的应对策略,以及混淆矩阵、查准率、查全率、ROC曲线和AUC等评估指标的原理与计算,助力读者全面掌握模型评估要点。
关键词:机器学习;模型评估;误差分析;过拟合;评估指标
一、引言
在机器学习领域,构建模型只是第一步,准确评估模型性能至关重要。它不仅能帮助我们判断模型的优劣,还能指导我们改进模型,使其在实际应用中发挥更好的效果。然而,模型评估并非易事,其中涉及多种方法、复杂概念和潜在陷阱。本文将深入剖析机器学习里的模型评估相关知识,助力读者全面掌握这一关键环节。
二、模型评估常用方法
在评估机器学习模型时,单一评分标准难以全面衡量模型性能。只用“good”和“bad”来评估模型,偏离真实场景,并不准确。常用的模型评估方法根据模型类型分为分类模型评估和回归模型评估。
2.1 分类模型评估方法
常用的分类模型评估方法包含正确率(Accuracy)、精度/查准率(Precision)、召回率/查全率(Recall)、PR曲线、F1分数、混淆矩阵(Confusion Matrix)、ROC曲线、AUC等,具体含义如下表所示:
评估指标 | 描述 |
---|---|
Accuracy | 正确率 |
Precision | 精度/查准率 |
Recall | 召回率/查全率 |
PR曲线 | 查准率为纵轴,查全率为横轴 |
F1分数 | F1值 |
Confusion Matrix | 混淆矩阵 |
ROC | ROC曲线 |
AUC | ROC曲线下的面积 |
2.2 回归模型评估方法
常用的回归模型评估方法有均方误差(Mean Square Error,MSE)、均方根误差(Root Mean Square Error,RMSE)、平均绝对误差(Mean Absolute Error,MAE)、R平方值(R-Squared),具体描述如下表:
评估指标 | 描述 |
---|---|
Mean Square Error (MSE) | 均方误差 |
Root Mean Square Error (RMSE) | 均方根误差 |
Mean Absolute Error (MAE) | 平均绝对误差 |
R-Squared | R平方值 |
这些指标从不同角度反映了回归模型的性能表现。例如,MSE衡量的是预测值与真实值之间误差的平方的平均值,RMSE是MSE的平方根,能更直观地反映误差的大小,MAE则是预测值与真实值误差的绝对值的平均值,R平方值用于评估模型对数据的拟合优度 。
三、误差、偏差和方差的区别和联系
在机器学习中,误差(Error)、偏差(Bias)和方差(Variance)是三个重要概念,它们之间既有区别又有紧密联系。
- 误差:一般把学习器的实际预测输出与样本的真实输出之间的差异称为“误差”。误差 = 偏差 + 方差 + 噪声,误差反映的是整个模型的准确度。
- 噪声:噪声描述了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。它是不可避免的,由数据的固有特性和环境等因素决定。
- 偏差:偏差用于衡量模型拟合训练数据的能力,反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精度。偏差越小,拟合能力越强,但可能产生过拟合;反之,拟合能力越差,可能产生欠拟合。偏差越大,越偏离真实数据。
- 方差:方差公式为 S N 2 = 1 N ∑ i = 1 N ( x i − x ‾ ) 2 S_{N}^{2}=\frac{1}{N} \sum_{i=1}^{N}\left(x_{i}-\overline{x}\right)^{2} SN2=N1∑i=1N(xi−x)2,描述的是预测值的变化范围、离散程度,也就是离其期望值的距离。方差越大,数据分布得越分散,模型的稳定程度越差。方差反映的是模型每一次的输出结果与模型输出期望之间的误差,即模型的稳定性。方差越小,模型的泛化能力越强;反之,模型的泛化能力越差 。如果模型在训练集上拟合效果优秀,但在测试集上拟合效果差,则方差较大,可能是由于模型对训练集过拟合。
四、为什么使用标准差
在描述数据的离散程度时,方差和标准差是常用的统计量。方差公式为 S N 2 = 1 N ∑ i = 1 N ( x i − x ‾ ) 2 S_{N}^{2}=\frac{1}{N} \sum_{i=1}^{N}\left(x_{i}-\overline{x}\right)^{2} SN2=N1∑i=1N(xi−x)2,标准差公式为 S N = 1 N ∑ i = 1 N ( x i − x ‾ ) 2 S_{N}=\sqrt{\frac{1}{N} \sum_{i=1}^{N}\left(x_{i}-\overline{x}\right)^{2}} SN=N1∑i=1N(xi−x)2,样本标准差公式为 S N = 1 N − 1 ∑ i = 1 N ( x i − x ‾ ) 2 S_{N}=\sqrt{\frac{1}{N - 1} \sum_{i=1}^{N}\left(x_{i}-\overline{x}\right)^{2}} SN=N−11∑i=1N(xi−x)2。与方差相比,使用标准差来表示数据点的离散程度有诸多好处:
- 表示离散程度的数字与样本数据点的数量级一致,更适合对数据样本形成感性认知。例如,一组数据的标准差为2,我们能更直观地感受其离散程度,而方差为4可能难以直接理解其实际意义。
- 表示离散程度的数字单位与样本数据的单位一致,更方便做后续的分析运算。在进行物理量的数据分析时,标准差的单位与数据本身单位相同,这在计算和理解上都更加便利。
- 在样本数据大致符合正态分布的情况下,标准差具有方便估算的特性:68%的数据点落在平均值前后1个标准差的范围内,95%的数据点落在平均值前后2个标准差的范围内,而99%的数据点将会落在平均值前后3个标准差的范围内。这种特性有助于快速了解数据的分布情况和进行异常值检测。
五、经验误差与泛化误差
经验误差(Empirical Error)也叫训练误差(Training Error),是模型在训练集上的误差。泛化误差(Generalization Error)是模型在新样本集(测试集)上的误差。在模型训练过程中,我们希望模型在训练集上表现良好的同时,在测试集上也能有较好的泛化能力,即泛化误差较小。如果模型在训练集上误差很小,但在测试集上误差很大,说明模型可能出现了过拟合现象;反之,如果在训练集和测试集上误差都较大,则可能是欠拟合。
六、图解欠拟合与过拟合
根据不同的坐标方式,欠拟合与过拟合的图解不同,主要有以下三种情况:
- 横轴为训练样本数量,纵轴为误差:在此情况下,欠拟合的模型在训练集及测试集上同时具有较大的误差,此时模型的偏差较大;过拟合的模型在训练集上具有较小的误差,在测试集上具有较大的误差,此时模型的方差较大;而正常的模型在训练集及测试集上,同时具有相对较小的偏差及方差。
- 横轴为模型复杂程度,纵轴为误差:当模型处于欠拟合状态时,在训练集及测试集上同时具有较大的误差,偏差较大;过拟合时,在训练集上误差较小,测试集上误差较大,方差较大;模型复杂程度控制在某一合适点时为正常状态,此时误差较小。
- 横轴为正则项系数,纵轴为误差:模型欠拟合时,在训练集及测试集上同时具有较大的误差,偏差较大;过拟合时,在训练集上具有较小的误差,在测试集上具有较大的误差,方差较大。通常,模型复杂程度控制在某一特定点时为最优状态 。
七、如何解决欠拟合与过拟合
7.1 解决欠拟合的方法
- 添加其他特征项:比如添加组合、泛化、相关性、上下文特征、平台特征等。有时特征项不够会导致模型欠拟合,增加这些特征可以提高模型的拟合能力。
- 添加多项式特征:例如,将线性模型添加二次项或三次项使模型泛化能力更强。像FM(Factorization Machine)模型、FFM(Field-aware Factorization Machine)模型,本质是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。
- 增加模型的复杂程度:可以选择更复杂的模型结构,如使用深度神经网络替代简单的线性模型。
- 减小正则化系数:正则化的目的是防止过拟合,但模型出现欠拟合时,需要减少正则化参数,让模型有更大的学习空间。
7.2 解决过拟合的方法
- 重新清洗数据:数据不纯会导致过拟合,此时需要重新清洗数据,去除噪声和异常值。
- 增加训练样本数量:更多的训练数据可以让模型学习到更普遍的规律,减少对训练集的依赖,降低过拟合风险。
- 降低模型复杂程度:选择更简单的模型结构,避免模型过于复杂而学习到训练数据中的噪声和特殊情况。
- 增大正则项系数:增强正则化力度,限制模型的复杂度,防止模型过度拟合训练数据。
- 采用丢弃法(Dropout):在训练的时候让神经元以一定的概率不工作,使模型泛化性更强,不会太依赖某些局部的特征。
- 使用早停法(Early Stopping):在模型训练过程中,监控验证集上的性能指标,当指标不再提升时停止训练,避免过度训练导致过拟合。
- 减少迭代次数:防止模型在训练集上过度训练,从而减少过拟合的可能性。
- 增大学习率:使模型参数更新的幅度更大,加快训练速度,但需要注意可能会导致模型不稳定。
- 添加噪声数据:增加数据的多样性,让模型学习到更鲁棒的特征。
- 在树结构中,对树进行剪枝:去除不必要的分支,降低模型复杂度。
- 减少特征项:去除一些相关性高或不重要的特征,简化模型输入。
解决欠拟合与过拟合的这些方法,需要根据实际问题、实际模型进行选择 。
八、交叉验证的主要作用
交叉验证(Cross Validation)主要用于如主成分回归(Principal Component Regression,PCR)和偏最小二乘回归(Partial Least Squares Regression,PLS)等建模应用中。在给定的建模样本中,拿出大部分样本进行建模,留一小部分样本用刚建立的模型进行预报,并求这一小部分样本的预报误差,记录它们的平方加权和。
交叉验证的主要作用是为了得到更为稳健可靠的模型,对模型的泛化误差进行评估,得到模型泛化误差的近似值。当有多个模型可以选择时,通常选择“泛化误差”最小的模型。交叉验证的方法有许多种,但是最常用的是留一交叉验证和K折交叉验证 。
九、理解K折交叉验证
在训练数据的过程中常常会遇到数据量不够大的情况,此时K折交叉验证就发挥了重要作用。K折交叉验证是将数据集切分成K份,验证集和测试集相互形成补集,循环交替。
9.1 K折交叉验证的一般步骤
- 将含有N个样本的数据集,分成K份,每份含有 N / K N/K N/K个样本。选择其中一份作为测试集,另外 K − 1 K - 1 K−1份作为训练集,测试集就有K种情况。
- 在每种情况中,用训练集训练模型,用测试集测试模型,计算模型的泛化误差。
- 交叉验证重复K次,每份验证一次,平均K次的结果或者使用其他结合方式,最终得到一个单一估测,得到模型最终的泛化误差。
9.2 K折交叉验证的特点
- 一般 2 ≤ K ≤ 10 2 ≤K ≤10 2≤K≤10。K折交叉验证的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。
- 训练集中样本数量要足够多,一般至少大于总样本数的50%,以保证模型能够学习到足够的信息。
- 训练集和测试集必须从完整的数据集中均匀取样。均匀取样的目的是希望减少训练集、测试集与原数据集之间的偏差。当样本数量足够多时,通过随机取样,便可以实现均匀取样的效果。
十、理解混淆矩阵
混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,主要有两种形式:
- 第一种混淆矩阵:以真实情况为行,预测情况为列。例如,预测为正例且实际为正例的情况记为TP(True Positive),预测为负例但实际为正例的情况记为FN(False Negative),预测为正例但实际为负例的情况记为FP(False Positive),预测为负例且实际为负例的情况记为TN(True Negative) 。
真实情况T或F | 预测为正例1,P | 预测为负例0,N |
---|---|---|
本来label标记为1,预测结果真为T,假为F | TP(预测为1,实际为1) | FN(预测为0,实际为1) |
本来label标记为0,预测结果真为T、复为F | FP(预测为1,实际为0) | TN(预测为0,实际为0) |
- 第二种混淆矩阵:以预测情况为行,实际情况为列,其元素含义与第一种类似 。
预测情况P或N | 实际label为1,预测对了为T | 实际label为0,预测对了为T |
---|---|---|
预测为正例1,P | TP(预测为1,实际为1) | FP(预测为1,实际为0) |
预测为负例0 | FN(预测为0,实际为1) | TN(预测为0,实际为0) |
混淆矩阵能够清晰展示模型在不同类别预测上的正确和错误情况,为进一步分析模型性能提供基础。
十一、理解查准率与查全率
将算法预测的结果分成正确肯定(True Positive,TP)、正确否定(True Negative,TN)、错误肯定(False Positive,FP)和错误否定(False Negative,FN)4种情况。查准率和查全率的计算和含义如下:
- 查准率(Precision): P r e c i s i o n = T P / ( T P + F P ) Precision = TP / (TP + FP) Precision=TP/(TP+FP),含义是在预测出为阳性的样本中,正确的有多少。注意和准确率的区别,准确率是正确预测出的样本,包括正确预测为阳性和阴性所占总样本的比例。例如,预测人群中的恶性肿瘤情况,查准率等于实际上有恶性肿瘤的病人除以所有预测有恶性肿瘤的病人,查准率越高越好。
- 查全率(Recall): R e c a l l = T P / ( T P + F N ) Recall = TP / (TP + FN) Recall=TP/(TP+FN),含义是正确预测为阳性的数量占总样本中阳性数量的比例。比如预测人群中的恶性肿瘤情况,查全率等于成功预测有恶性肿瘤的病人除以所有实际上有恶性肿瘤的病人,查全率越高越好。
十二、理解ROC与AUC
- ROC曲线:全称是受试者工作特征(Receiver Operating Characteristic)。ROC曲线通过对连续变量设定出多个不同的临界值,从而计算出一系列真正例率(True Positive Rate,TPR)和假正例率(False Positive Rate,FPR),再以假正例率为横坐标,以真正例率为纵坐标绘制成曲线。曲线下面积越大,推断准确性越高。在ROC曲线上,最靠近坐标图左上方的点为假正例率和真正例率均较高的临界值 。
- AUC:用于衡量“二分类问题”机器学习算法性能(泛化能力)。AUC越大,性能越好。ROC曲线的横坐标为假正例率 F P R = F P F P + T N FPR=\frac{FP}{FP + TN} FPR=FP+TNFP,纵坐标为真正例率 T P R = T P T P + F N TPR=\frac{TP}{TP + FN} TPR=TP+FNTP 。
在ROC曲线图中有4个特殊点和1条线:
- 点(0,1),即$FPR = 0$ ,$TPR = 1$ ,意味着这是一个完美的分类器,将所有样本都正确分类。
- 点(1,0),即$FPR = 1$ ,$TPR = 0$ ,表示这是一个最糟糕的分类器,成功避开了所有正确答案。
- 点(0,0),即$FPR = TPR = 0$ ,该分类器预测所有样本都为负样本。
- 点(1,1),即$FPR = TPR = 1$ ,分类器实际上预测所有样本都为正样本。
ROC曲线越接近左上角,该分类器的性能越好。
十三、如何绘制ROC曲线
绘制ROC曲线一般有以下步骤:
- 假设已经得出一系列样本被划分为正例的概率,按照大小排序。
- 从高到低,依次将Score值作为阈值,当测试样本属于正例的概率大于或等于这个阈值时,认为它为正例,否则为负例。
- 每次选取一个不同的阈值,得到一组FPR和TPR,即ROC曲线上的一点。以此共得到多组FPR和TPR的值。
- 根据上一步中的每个坐标点画图,即可得到ROC曲线。
十四、如何计算TPR和FPR
在绘制ROC曲线时,计算TPR和FPR是关键步骤。以具体样本数据为例,假设样本数据 y t r u e = [ 0 , 0 , 1 , 1 ] ytrue =[0,0,1,1] ytrue=[0,0,1,1],每个在绘制ROC曲线时,计算TPR和FPR是关键步骤。以具体样本数据为例,假设样本数据 y t r u e = [ 0 , 0 , 1 , 1 ] ytrue =[0,0,1,1] ytrue=[0,0,1,1],每个测试样本属于正例的概率分别为 [ S c o r e = [ 0.1 , 0.4 , 0.35 , 0.8 ] [Score =[0.1,0.4,0.35,0.8] [Score=[0.1,0.4,0.35,0.8] :
- 分析数据:明确样本的真实类别和预测为正例的概率。
- 列表:将样本概率及类别数据整理成列表形式,如下表所示:
样本 | 预测属于P的概率(Score) | 真实类别 |
---|---|---|
y[0] | 0.1 | N |
y[1] | 0.4 | N |
y[2] | 0.35 | P |
y[3] | 0.8 | P |
- 计算TPR和FPR:将截断点值依次取Score值,计算不同截断点下的TPR和FPR。例如,当截断点为0.1时,因为所有样本的Score都大于等于0.1,所以所有样本的预测类别都为正例。此时,正例与负例信息如下表:
正例 | 负例 |
---|---|
TP=2 | FN=0 |
FP=2 | TN=0 |
由此可得: T P R = T P / ( T P + F N ) = 1 TPR = TP/(TP + FN) = 1 TPR=TP/(TP+FN)=1; F P R = F P / ( T N + F P ) = 1 FPR = FP/(TN + FP) = 1 FPR=FP/(TN+FP)=1。 | |
按照同样的方法,计算不同截断点下的TPR和FPR值,如截断点为0.35、0.4、0.8时的情况,并整理成表格。 |
- 画图:根据TPR、FPR值,以FPR为横轴,TPR为纵轴画图,即可得到ROC曲线。
十五、如何计算AUC
计算AUC(Area Under Curve)即计算ROC曲线下面的面积,一般步骤如下:
- 将坐标点按照横坐标FPR排序。
- 计算第 i i i 个坐标点和第 i + 1 i+1 i+1 个坐标点的间距 d x dx dx 。
- 获取第 i i i 或者 i + 1 i+1 i+1 个坐标点的纵坐标 y y y 。
- 计算面积微元 d s = y d x ds = ydx ds=ydx 。
- 对面积微元进行累加,得到AUC。
AUC是衡量二分类模型优劣的一种评价指标,表示正例排在负例前面的概率。相比于精度、正确率、召回率,AUC更为常用,因为在分类模型中,预测结果通常以概率形式表现,计算准确率时手动设置的阈值会影响模型正确率的计算,而AUC不受此影响。
十六、ROC评估分类器
模型评估方法众多,使用ROC曲线有其独特优势。ROC曲线的一个重要特性是,当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中,经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。在这种情况下,ROC曲线能更稳定地评估分类器性能,为模型选择和优化提供可靠依据。
十七、代价敏感错误率与代价曲线
17.1 代价矩阵
在实际应用中,不同的错误会产生不同代价。以二分法为例,代价矩阵如下表所示:
真实类别 | 预测类别 | |
---|---|---|
第1类 | 第0类 | |
第0类 | 0 | Cost01 |
第1类 | Cost10 | 0 |
当判断正确的时候,值为0;不正确的时候,分别为 C o s t 01 Cost01 Cost01(实际为正例但预测为负例的代价)和 C o s t 10 Cost10 Cost10(实际为负例但预测成正例的代价)。
17.2 代价敏感错误率
代价敏感错误率的计算公式为: E ( f ; D ; C o s t ) = 1 m ( ∑ X i ∈ D + ( f ( x i ) ≠ y i ) × C o s t 01 + ∑ x ∈ D − ( f ( x i ) ≠ y i ) × C o s t 10 ) E(f ; D ; Cost )=\frac{1}{m}\left(\sum_{X_{i} \in D^{+}}\left(f\left(x_{i}\right) \neq y_{i}\right) × Cost_{01}+\sum_{x \in D^{-}}\left(f\left(x_{i}\right) \neq y_{i}\right) × Cost_{10}\right) E(f;D;Cost)=m1(Xi∈D+∑(f(xi)=yi)×Cost01+x∈D−∑(f(xi)=yi)×Cost10),其中 D + D^{+} D+ , D − D^{-} D−分别代表样例集的正例子集和负例子集, x x x是预测值, y y y是真实值。该指标综合考虑了不同错误的代价,能更准确地评估模型在实际应用中的损失。
17.3 代价曲线
在均等代价时,ROC曲线不能直接反映出模型的期望总体代价,而代价曲线可以。代价曲线横轴为 [ 0 , 1 ] [0,1] [0,1]的正例函数代价: P ( + ) C o s t = p ⋅ C o s t 01 p ⋅ C o s t 01 + ( 1 − p ) ⋅ C o s t 10 P(+) Cost=\frac{p \cdot Cost_{01}}{p \cdot Cost_{01}+(1-p) \cdot Cost_{10}} P(+)Cost=p⋅Cost01+(1−p)⋅Cost10p⋅Cost01,其中 p p p是样本为正例的概率。代价曲线纵轴为 [ 0 , 1 ] [0,1] [0,1]的归一化代价: C o s t n o r m = F N R ⋅ p ⋅ C o s t 01 + F N R ⋅ ( 1 − p ) ⋅ C o s t 10 p ⋅ C o s t 01 + ( 1 − p ) ⋅ C o s t 10 Cost_{norm }=\frac{FNR \cdot p \cdot Cost_{01}+FNR \cdot(1-p) \cdot Cost_{10}}{p \cdot Cost_{01}+(1-p) \cdot Cost_{10}} Costnorm=p⋅Cost01+(1−p)⋅Cost10FNR⋅p⋅Cost01+FNR⋅(1−p)⋅Cost10,其中FPR为假阳性率, F N R = 1 − T P R FNR = 1 - TPR FNR=1−TPR为负例性率。ROC每个点,可以对应代价平面上一条线,所有线段下界面积,即为所有条件下学习器的期望总体代价。通过代价曲线,我们能更直观地了解模型在不同代价下的性能表现,为决策提供更全面的信息。
十八、比较检验方法
常见的比较检验方法包括以下几类:
- 正确性分析:模型稳定性分析、稳健性分析、收敛性分析、变化趋势分析和极值分析等。通过这些分析,评估模型在不同条件下的可靠性和准确性。
- 有效性分析:误差分析、参数敏感性分析和模型对比检验等。用于判断模型是否有效,以及不同参数和模型结构对性能的影响。
- 有用性分析:关键数据求解,极值点、拐点、变化趋势分析,用数据验证动态模拟等。帮助确定模型在实际应用中的价值和实用性。
- 高效性分析:时空复杂度分析等。评估模型在计算资源和时间上的消耗,确保其在实际场景中的可行性。
十九、总结
机器学习模型评估是一个复杂且关键的环节,涉及多种方法、指标和概念。从常用的分类和回归模型评估方法,到误差、偏差和方差的理解,再到欠拟合与过拟合的处理,以及ROC曲线、AUC等重要评估指标的应用,每一个部分都对准确评估模型性能起着关键作用。
同时,代价敏感错误率和代价曲线为我们在考虑错误代价的情况下评估模型提供了更全面的视角,而比较检验方法则从多个维度对模型进行深入分析。在实际应用中,我们需要综合运用这些知识,根据具体问题选择合适的评估方法和指标,以构建出性能优良、可靠的机器学习模型。