机器学习分类的评估

本文源于J. Rafid Siddiqui博士的博客

偏差-方差分析、正则化、性能指标的解释以及谐波分类器的实现

Figure 1: A depiction of Results from a Bias-Variance Analysis

偏差-方差分析

偏差-方差分析是一个评估机器学习分类器的过程。每个分类器都可能出现高偏差或高方差的问题,这取决于训练的条件。了解这些常见问题并加以预防,可以帮助人们建立更好、更普遍、更高性能的模型。

高偏差(High Bias , 欠拟合)

当一个分类器高度偏向某种类型的预测(例如,某个类)而不管输入数据的变化时,我们称这种模型存在高偏差问题。例如,如果我们在一个不可线性分离的训练集上训练一个线性模型,那么即使在训练集上,这样的模型也会表现得很差。所以我们将这样的模型称为欠拟合模型,因为它没有完全捕获数据集的结构。这种欠拟合问题的示例如下图所示。

Figure 2: An Example of a model suffering from an Underfitting Problem

您可能已经注意到,这样的模型在训练集和测试集上都表现不佳。这是因为模型没有配备足够的参数来处理数据中的非线性。这也可能意味着没有足够的数据。在样本量太小而无法训练的情况下,模型不会收敛到最佳点,结果模型会出现欠拟合问题。

高方差(High Variance, 过拟合)

训练机器学习分类器时的另一个常见问题发生在模型在训练集上表现良好时,但是,当它在与已经训练过的示例集不同的示例集上进行测试时,其性能会显着下降。此问题称为高方差或过拟合问题。之所以这样命名,是因为该模型在预测输出中具有高方差。换句话说,模型无法处理给定类别的输入样本中的方差,它不会为给定类别生成稳定的预测,而是为同一类别生成不同的预测。这种过度拟合问题的示例如下图所示。

Figure 3: An Example of a model suffering from an Overfitting Problem

学习曲线(Learning Curves, 诊断)

既然您知道什么是高偏差和高方差问题,您可能想知道如何才能发现模型存在哪个问题。在示例中的二维数据中,我们可以很容易地通过绘制数据和分类器的决策边界来肉眼看到,但是,当数据是多维时,这样做是不可行的。因此,需要一种通用的诊断方法来找到确切的问题。学习曲线就是这样一种标准,可以用来找出问题的类型。更具体地说,我们绘制了从训练集中随机抽取的一组数据实例的目标函数值。然后我们迭代地增加样本数量,并不断绘制新数据样本集的目标函数值。这为我们提供了模型在训练集上的行为方式的曲线。除了训练集,我们还使用交叉验证集来验证性能。除了训练测试拆分之外,我们还创建了一个单独的数据拆分,并将其称为交叉验证集。然后在训练阶段执行所有参数调整和评估,并与该交叉验证集进行比较。我们也重复上述绘制交叉验证集学习曲线的过程。这种学习曲线的示例结果如图 4 所示。

Figure 4: An Example of Learning Curves for Underfitting, Overfitting and Best Fitting respectively

如果我们观察学习曲线,我们将看到当两条曲线(即 Jₜ 和 Jcᵥ)不收敛时,我们遇到了欠拟合问题,这意味着模型没有学到任何东西并且不会在训练中准确分类和测试数据。然而,当我们看到训练数据上的曲线 Jₜ 显示出明显的收敛而交叉验证集 (Jcᵥ) 的曲线显示出发散时,我们就会遇到过拟合问题。训练集和交叉验证集的最终成本值之间的差距越大,模型遭受过度拟合问题的可能性就越大,并且它对新示例的作用比对已有示例的作用更大受过训练。在最佳拟合的情况下,两条曲线都会收敛,这表明模型是平衡的,并且对训练和测试示例都适用。需要注意的是,在复杂的数据集中,两条曲线可能不会收敛到绝对零,并且两条曲线之间可能会有一个小的差距,但是,这不会是一个显着的差距,并且与绝对收敛点的距离不应该是太多了。

解决方案

使用更好的数据

构建机器学习模型时的大多数问题都源于不良数据。如果数据集太小、噪音太大和/或包含矛盾/误导性数据点,那么最好的做法是找到更好的数据。与其他类相比,不平衡且某个类的实例较少的数据集也会导致过度拟合问题。在出现过度拟合问题的情况下,如果问题是由于缺乏数据引起的,则增加数据的大小可以解决问题。如果问题是由于数据不平衡引起的,则对数据进行规范化和分层也会有所帮助。

正则化

处理过拟合问题的一种方法是在目标函数中引入正则化项,这将使约束条件放松一些,从而适应数据的可变性。更具体地说,我们可以在目标函数中增加一个项(例如,权重的L1/L2准则),这将导致对训练集中由于噪声而出现的轻微偏差点的惩罚减少。在下图中可以看到这种正则化的一个例子。

Figure 5: An Example of Effect of using Regularization for solving Overfitting problem

如果我们观察正则化对分类边界的影响,我们会注意到它扩大了分类边界,从而允许容纳噪声点,否则这些点会因决策边界狭窄而被错误分类。然而,这可能会以降低训练集的性能为代价,如图上 所示。因此,这是一个选择问题,由参数 Lambda 控制该参数决定了在构建分类器时要给正则化项多少权重。在保持数据大小不变的情况下,通过绘制训练集和交叉验证集的学习曲线与Lambda参数的变化,也可以了解Lambda的最佳值。

构建更好的特征空间

在有些情况下,问题的产生是由于不良/不充分的特征空间。在这种情况下,我们必须构建一个更好的特征空间。例如,如果出现欠拟合的问题,如我们前面描述的问题(即非线性数据集上的线性分类器),就必须增加特征的数量和类型。我们可以在图3中看到增加更多特征(即三次多项式模型)的结果。该模型在对训练集进行分类时变得很好,因此,解决了欠拟合的问题。然而,我们也看到,它开始受到过拟合问题的困扰,对某些数据样本来说,变得过于局限。我们在前面的章节中也讨论了如何缓解过拟合问题。然而,在某些情况下,简单地改变特征空间到一个更合适的特征空间,可以大幅提高性能,并可以提供一个更通用的模型,甚至对未见过的数据也能稳健地工作。如果我们仔细观察数据,我们应该看到它是一个重复的模式,我们可以用谐波分类器为它建模。事实上,如果我们用一个谐波分类器(例如正弦波)来建模,我们可以得到一个对任何新样本都有效的模型,从而为我们提供一个通用的解决方案。图6中显示了一个在数据上拟合的谐波分类器的例子。正如我们所看到的,它不仅只用一个周期来学习和分类训练集,而且对任何数量的周期都是稳健的。

img

性能指标

img

一旦训练了分类器,就需要一种衡量标准来确定分类性能有多好。可以有多种指标可用于此类性能评估。准确性是许多任务的常用指标。但是,当数据集不平衡时,这是一个不好的指标。如果数据集只有某个类的几个实例,则准确性将高度偏向多数类。在这种情况下,必须使用不同的指标。如上图所示,我们通过计算分类标签的频率构建了一组指标,例如真阳性率 (TPR) 和假阳性率 (FPR)。 TPR(召回率/灵敏度)衡量分类器对正类(即第 1 类)的预测精度,FPR 衡量分类器对负类(即第 0 类)的预测性能。在高召回率/TPR 和低 FPR 之间总是存在权衡。例如,如果我们以对象检测器/分类器为例,那么 TPR 会告诉我们检测器在显示的对象中正确找到对象的频率,而 FPR 会测量在没有对象时错误检测到对象的频率现场。

此外,分类器的性能在很大程度上取决于用于将点分类为类别的概率的阈值。例如,在二元分类器的情况下,我们可以对输出概率使用阈值(例如 0.5),并根据输出概率的值将点分类为 0 类或 1 类。然而,0.5 是一个任意值,并且在不同的分类场景中有所不同。因此,为了找到最佳阈值——分类器性能达到最大值的阈值,可以将阈值从 0 变为 1 并观察性能指标(例如 TPR、FPR 等)。此过程称为接受者操作特征分析 (ROC),通过绘制 ROC 曲线来执行。通过在改变分类器的阈值的同时绘制 FPR 与 TPR 的关系来获得 ROC 曲线。这种曲线下的面积提供了性能的衡量标准(即,面积越大,分类性能越好)。无技能分类器(即返回随机类或常量类作为预测输出的分类器)被绘制为对角线。任何接近无技能分类器的输出曲线都被认为是没有分类能力的坏分类器。一个完美的分类器由左上角的方形曲线表示。此类 ROC 曲线的示例输出如下图所示。

img

除了 ROC 曲线之外,还有另一个指标称为“Precision-Recall”曲线。它是通过绘制 TPR 与 Precision/PPV(阳性预测值)的对比图获得的。精度衡量分类的正确性。如果我们使用之前的对象检测类比,那么精度衡量的是分类器将对象正确分类到它检测到的对象中的频率。与 TPR vs FPR 相同,TPR 和 Precision 之间存在权衡。高 TPR 可能会以精度损失为代价。 Precision-Recall 曲线对于不平衡数据特别有用。 Precision-Recall 的解释类似于 ROC 曲线,但是,完美的分类器性能位于右上角,No-Skill 分类器(例如多数分类器或随机分类器)显示为 0.5 附近的一条平线。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2017-2024 善良的右行
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信