小罗碎碎念
我们在搭建模型的时候,时常会面临一个问题——如何评价模型性能的好坏?
评价模型的好坏,是我们建模后必须要做的一个工作。如果模型性能不佳,我们就需要进一步判断模型是出现了过拟合还是欠拟合。
除了判断过拟合和欠拟合,我们还需要从源头找问题——数据集是否存在类别不平衡的问题。
通过阅读本期推送,你就可以系统的了解这些问题的概念以及相应的处理方式,建议收藏!
推文速览
- 模型评估常用方法
- 误差、偏差和方差
- 欠拟合、过拟合
- 类别不平衡
一、模型评估常用方法
一般情况来说,单一评分标准无法完全评估一个机器学习模型。只用good和bad偏离真实场景去评估某个模型,都是一种欠妥的评估方式。下面介绍常用的分类模型和回归模型评估方法。
分类模型常用评估方法
指标 | 描述 |
---|---|
Accuracy | 准确率 |
Precision | 精准度/查准率 |
Recall | 召回率/查全率 |
P-R曲线 | 查准率为纵轴,查全率为横轴,作图 |
F1 | F1值 |
Confusion Matrix | 混淆矩阵 |
ROC | ROC曲线 |
AUC | ROC曲线下的面积 |
回归模型常用评估方法
指标 | 描述 |
---|---|
Mean Square Error (MSE, RMSE) | 平均方差 |
Absolute Error (MAE, RAE) | 绝对误差 |
R-Squared | R平方值 |
二、误差、偏差和方差
在机器学习领域,模型的性能通常受到偏差(Bias)、误差(Error)和方差(Variance)三个关键因素的影响。以下是这些概念的定义及其相互之间的关系:
2-1:误差(Error)
误差是指模型预测输出与真实输出之间的差异。
它是衡量模型整体性能的关键指标,可以分解为偏差、方差和噪声的总和。误差的大小直接反映了模型的准确度。
误差
=
偏差
+
方差
+
噪声
误差 = 偏差 + 方差 + 噪声
误差=偏差+方差+噪声
经验误差(Empirical Error)
经验误差,亦称为训练误差(Training Error),是指机器学习模型在训练数据集上的表现,具体来说,是模型预测值与训练集中实际值之间的差异。
这个误差反映了模型对已知数据的拟合程度。在训练过程中,我们通常希望最小化这个误差,以确保模型能够学习到训练数据中的模式和规律。
泛化误差(Generalization Error)
泛化误差是指机器学习模型在未见过的新数据集(通常称为测试集或验证集)上的表现,即模型在新样本上的预测误差。
这个误差是评估模型对新数据的预测能力的关键指标,它衡量了模型的泛化能力,即模型将从训练数据中学到的知识应用到新数据的能力。一个具有良好泛化能力的模型能够在新数据上保持较低的误差,这意味着它不仅在训练数据上表现良好,而且能够对未知数据做出准确的预测。
在机器学习中,我们追求的是一个在训练误差和泛化误差之间取得平衡的模型。理想的模型应该在训练集上有足够的拟合度,同时在新数据上也能保持较低的预测误差,避免过拟合(Overfitting)或欠拟合(Underfitting)的情况。
过拟合的模型在训练集上表现很好,但在新数据上表现不佳,而欠拟合的模型则在训练集和新数据上都表现不佳。通过交叉验证(Cross-validation)和正则化(Regularization)等技术,可以帮助我们构建泛化能力更强的模型。
2-2:噪声(Noise)
噪声(Noise)在机器学习中是一个重要的概念,它指的是数据中不可避免的随机波动或错误,这些波动或错误是学习算法无法通过改进模型来消除的。
噪声的存在是由于多种因素,如测量误差、数据收集过程中的随机性或问题本身的性质。
-
不可避免性:噪声是数据固有的一部分,即使模型设计得再完美,也无法完全消除。这是因为噪声并非来源于模型的缺陷,而是数据本身的特性。
-
固有难度:噪声体现了学习问题的固有难度。在某些情况下,由于噪声的存在,学习任务本身就非常具有挑战性,模型可能无法达到零误差。
-
泛化误差的下限:噪声定义了模型在特定任务上能达到的期望泛化误差的下限。这意味着,无论模型多么复杂或多么精确,其泛化误差都不会低于噪声水平。
-
影响模型性能:噪声对模型的性能有直接影响。在设计模型时,需要考虑到噪声的影响,以避免过度拟合噪声,这可能导致模型在新数据上的泛化能力下降。
-
与偏差和方差的关系:噪声与偏差和方差一起构成了模型的总误差。在机器学习中,我们通常寻求在偏差、方差和噪声之间找到一个平衡点,以实现最佳的模型性能。
-
数据清洗和预处理:虽然噪声是不可避免的,但通过数据清洗和预处理技术,我们可以减少噪声的影响,提高数据质量,从而间接提升模型的性能。
-
模型鲁棒性:在设计模型时,考虑噪声的影响,可以提高模型的鲁棒性。鲁棒性是指模型在面对数据中的噪声和不确定性时,仍能保持稳定性能的能力。
噪声是机器学习中一个基本且复杂的因素,它要求我们在模型设计和评估时采取综合考虑,以实现最佳的学习效果。
2-3:偏差(Bias)
偏差衡量的是模型对训练数据的拟合程度。如果模型过于简单,无法捕捉数据中的复杂模式,就会存在高偏差,导致欠拟合(underfitting)。
相反,如果模型过于复杂,可能会过度拟合(overfitting)训练数据中的噪声,导致偏差降低。偏差的大小直接影响模型的预测精度,即模型在样本上的输出与真实值之间的误差。
2-4:方差(Variance)
方差是衡量模型预测结果稳定性的指标。它描述了模型预测值的离散程度,即预测值与其期望值之间的差异。
方差的计算公式为:
S
N
2
=
1
N
∑
i
=
1
N
(
x
i
−
x
ˉ
)
2
S_{N}^{2}=\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}
SN2=N1i=1∑N(xi−xˉ)2
方差越大,说明模型的预测结果越不稳定,模型的泛化能力越差。如果模型在训练集上表现良好,但在测试集上表现不佳,这通常意味着模型具有高方差,可能是由于模型对训练数据过拟合导致的。方差的大小直接关系到模型的泛化能力,即模型在未见过的数据上的表现。
这张图片通过四个象限的靶心图示,直观地展示了机器学习模型中偏差(Bias)和方差(Variance)对模型性能的影响。
-
低偏差,低方差(左上角):
- 这个象限的模型预测点(蓝色点)紧密地聚集在靶心(橙色点)周围,表明模型在训练数据上拟合得很好,同时对新数据的预测也很稳定。
- 这是理想的模型状态,既有良好的拟合能力,又有稳定的泛化性能。
-
低偏差,高方差(右上角):
- 在这个象限中,预测点虽然都围绕着靶心,但分布较为分散。这表明模型对训练数据拟合得很好(低偏差),但对新数据的预测不够稳定(高方差)。
- 这种情况通常发生在模型过于复杂,对训练数据中的噪声也进行了学习,导致过拟合。
-
高偏差,低方差(左下角):
- 这里的预测点聚集在远离靶心的地方,表明模型在训练数据上的拟合能力较差(高偏差),但预测结果相对稳定(低方差)。
- 这种情况通常发生在模型过于简单,无法捕捉数据中的复杂模式,导致欠拟合。
-
高偏差,高方差(右下角):
- 这个象限的模型预测点既远离靶心,又分布分散,表明模型在训练数据上拟合得不好,且对新数据的预测也不稳定。
- 这是最不理想的模型状态,既无法有效学习训练数据,也无法在新数据上进行准确预测。
通过这张图,我们可以直观地理解偏差和方差如何影响模型的性能,并指导我们在模型选择和调优时寻找偏差和方差之间的平衡。
三、欠拟合、过拟合
3-1:欠拟合与过拟合图解
横轴为训练样本数量,纵轴为误差
如上图所示,我们可以直观看出欠拟合和过拟合的区别:
-
模型欠拟合:在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大;
-
模型过拟合:在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。
-
模型正常:在训练集以及测试集上,同时具有相对较低的偏差以及方差。
横轴为模型复杂程度,纵轴为误差
红线为测试集上的Error,蓝线为训练集上的Error
-
模型欠拟合:模型在点A处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大。
-
模型过拟合:模型在点C处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。
-
模型正常:模型复杂程度控制在点B处为最优。
横轴为正则项系数,纵轴为误差
红线为测试集上的Error,蓝线为训练集上的Error
-
模型欠拟合:模型在点C处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大。
-
模型过拟合:模型在点A处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。 它通常发生在模型过于复杂的情况下,如参数过多等,会使得模型的预测性能变弱,并且增加数据的波动性。虽然模型在训练时的效果可以表现的很完美,基本上记住了数据的全部特点,但这种模型在未知数据的表现能力会大减折扣,因为简单的模型泛化能力通常都是很弱的。
-
模型正常:模型复杂程度控制在点B处为最优。
3-2:如何解决过拟合与欠拟合
解决欠拟合和过拟合是机器学习模型调优过程中的两个重要方面。
解决欠拟合的方法
-
特征工程:通过添加更多的特征,如组合特征、泛化特征、相关性特征、上下文特征和平台特征,可以提高模型对数据的理解能力。
-
多项式特征:在模型中添加多项式特征,如二次项或三次项,可以使模型更好地捕捉数据中的非线性关系。
-
模型复杂度:选择更复杂的模型或增加模型的层数(对于神经网络),以提高模型的表达能力。
-
正则化系数:减小正则化系数,如L1或L2正则化,可以减少对模型复杂度的限制,允许模型更好地拟合训练数据。
解决过拟合的方法
-
数据清洗:确保数据质量,去除噪声和异常值,可以减少模型学习到的不必要模式。
-
增加训练样本:更多的数据可以帮助模型学习到更广泛的模式,提高泛化能力。
-
模型简化:选择更简单的模型或减少模型的复杂度,如减少神经网络的层数或节点数。
-
正则化:增大正则项系数,如L1或L2正则化,可以限制模型的复杂度,防止过拟合。
-
Dropout:在训练过程中随机丢弃一部分神经元,可以减少模型对特定训练样本的依赖,提高泛化能力。
-
早停(Early Stopping):在验证集上的性能不再提升时停止训练,可以防止模型过度拟合训练数据。
-
减少迭代次数:限制训练的迭代次数,可以防止模型过度学习训练数据。
-
学习率调整:增大学习率可以加快模型的收敛速度,但需要谨慎调整以避免不稳定。
-
数据增强:通过添加噪声数据或进行数据增强,可以提高模型对新数据的适应性。
-
剪枝:在决策树模型中,通过剪枝减少树的复杂度,可以降低过拟合的风险。
-
特征选择:减少特征项,特别是去除那些不相关或冗余的特征,可以简化模型,提高泛化能力。
在实际应用中,解决欠拟合和过拟合的方法需要根据具体的数据集、模型类型和问题背景来选择和调整。通常,这涉及到一系列的实验和验证,以找到最佳的模型配置。
四、类别不平衡
类别不平衡(class-imbalance)是指分类任务中不同类别的训练样例数目差别很大的情况。
4-1:产生原因
分类学习算法通常都会假设不同类别的训练样例数目基本相同。如果不同类别的训练样例数目差别很大,则会影响学习结果,测试结果变差。
例如二分类问题中有998个反例,正例有2个,那学习方法只需返回一个永远将新样本预测为反例的分类器,就能达到99.8%的精度;然而这样的分类器没有价值。
4-2:常见的类别不平衡问题解决方法
防止类别不平衡对学习造成的影响,在构建分类模型之前,需要对分类不平衡性问题进行处理。主要解决方法有:
1、扩大数据集
- 增加包含小类样本数据的数据,更多的数据能得到更多的分布信息。
2、对大类数据欠采样
- 减少大类数据样本个数,使与小样本个数接近。
- 缺点:欠采样操作时若随机丢弃大类样本,可能会丢失重要信息。
- 代表算法:EasyEnsemble。其思想是利用集成学习机制,将大类划分为若干个集合供不同的学习器使用。相当于对每个学习器都进行欠采样,但对于全局则不会丢失重要信息。
3、对小类数据过采样
-
过采样:对小类的数据样本进行采样来增加小类的数据样本个数。
-
代表算法:SMOTE和ADASYN。
-
SMOTE:通过对训练集中的小类数据进行插值来产生额外的小类样本数据。
-
新的少数类样本产生的策略:对每个少数类样本a,在a的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。
-
ADASYN:根据学习难度的不同,对不同的少数类别的样本使用加权分布,对于难以学习的少数类的样本,产生更多的综合数据。 通过减少类不平衡引入的偏差和将分类决策边界自适应地转移到困难的样本两种手段,改善了数据分布。
4、使用新评价指标
如果当前评价指标不适用,则应寻找其他具有说服力的评价指标。比如准确度这个评价指标在类别不均衡的分类任务中并不适用,甚至进行误导。因此在类别不均衡分类任务中,需要使用更有说服力的评价指标来对分类器进行评价。
5、选择新算法
不同的算法适用于不同的任务与数据,应该使用不同的算法进行比较。
6、数据代价加权
例如当分类任务是识别小类,那么可以对分类器的小类样本数据增加权值,降低大类样本的权值,从而使得分类器将重点集中在小类样本身上。
7、转化问题思考角度
例如在分类问题时,把小类的样本作为异常点,将问题转化为异常点检测或变化趋势检测问题。 异常点检测即是对那些罕见事件进行识别。变化趋势检测区别于异常点检测在于其通过检测不寻常的变化趋势来识别。
8、将问题细化分析
对问题进行分析与挖掘,将问题划分成多个更小的问题,看这些小问题是否更容易解决。