网站建设实验小结,玉林网站开发,微信小程序模板样式,做网站的税率一、介绍 假设您在一家给定的公司工作#xff0c;并要求您创建一个模型#xff0c;该模型根据您可以使用的各种测量来预测产品是否有缺陷。您决定使用自己喜欢的分类器#xff0c;根据数据对其进行训练#xff0c;瞧#xff1a;您将获得96.2%的准确率#xff01; … 一、介绍 假设您在一家给定的公司工作并要求您创建一个模型该模型根据您可以使用的各种测量来预测产品是否有缺陷。您决定使用自己喜欢的分类器根据数据对其进行训练瞧您将获得96.2%的准确率 你的老板很惊讶决定使用你的模型没有任何进一步的测试。几周后他走进你的办公室强调你的模型是无用的。事实上您创建的模型从生产中使用以来就没有发现任何有缺陷的产品。 经过一些调查您发现贵公司生产的产品中只有大约 3.8% 是有缺陷的您的模型总是回答“没有缺陷”导致 96.2% 的准确率。您获得的那种“幼稚”结果是由于您正在使用的不平衡数据集。本文的目的是回顾可用于解决不平衡类分类问题的不同方法。 大纲 首先我们将概述有助于检测“幼稚行为”的不同评估指标。然后我们将讨论包括重新设计数据集的一大堆方法并表明这些方法可能会产生误导。最后我们将证明在大多数情况下返工问题是最好的方法。 由∞符号表示的某些小节包含更多的数学细节可以跳过而不会影响本文的整体理解。另请注意在下面的大部分内容中我们将考虑两个类分类问题但推理可以很容易地扩展到多类情况。 二、检测“幼稚行为” 在第一节中我们想提醒评估经过训练的分类器的不同方法以确保检测到任何类型的“幼稚行为”。正如我们在引言的例子中看到的准确性虽然是一个重要且不可避免的指标但可能会产生误导因此应谨慎使用并与其他指标一起使用。让我们看看可以使用哪些其他工具。 2.1 混淆矩阵、精度、召回率和 F1 在处理分类问题时应始终使用的一个良好而简单的指标是混淆矩阵。该指标提供了模型表现如何的有趣概述。因此它是任何分类模型评估的一个很好的起点。我们在下图中总结了可以从混淆矩阵得出的大多数指标 混淆矩阵和可以从中派生的指标。 让我们对这些指标进行简短描述。模型的准确性基本上是正确预测的总数除以预测总数。类的精度定义了当模型回答某个点属于该类时结果的可信度。类的召回表示模型能够检测到该类的程度。一个类的F1分数由精度和召回率的调和平均值2×精度×召回率/精度召回率给出它将一个类的精度和召回率组合在一个指标中。 对于给定的类召回率和精度的不同组合具有以下含义 高召回率高精度模型完美处理类低召回率高精度该模型不能很好地检测该类但当它检测到时非常可信高召回率低精度该类被很好地检测到但模型中还包括其他类的点低召回率低精度模型对类处理不当 在我们的介绍性示例中我们有以下 10000 种产品的混淆矩阵。 我们介绍性示例的混淆矩阵。请注意无法计算“有缺陷”的精度。 如前所述准确率为96.2%。无缺陷类精度为96.2%缺陷类精度不可计算。无缺陷类的召回率为1.0这是完美的所有无缺陷产品都已贴上标签。但缺陷类的召回率为0.0这是最糟糕的情况未检测到有缺陷的产品。因此我们可以得出结论我们的模型在此类中表现不佳。F1 分数对于有缺陷的产品不可计算对于无缺陷产品为 0.981。在这个例子中查看混淆矩阵可能会导致重新思考我们的模型或目标我们将在以下各节中看到。它本可以防止使用无用的模型。 中华民国和ROC 另一个有趣的指标是 ROC 曲线代表接收器工作特性它是针对给定类定义的我们将在下面表示 C。 假设对于给定的点 x我们有一个模型该模型输出该点属于 C 的概率PC | x。基于这个概率我们可以定义一个决策规则包括当且仅当 PC | x≥T 时 x 属于类 C其中 T 是定义我们决策规则的给定阈值。如果 T1则仅当模型具有 100% 置信度时才会将点标记为属于 C。如果 T0则每个点都标记为属于 C。 阈值 T 的每个值都会生成一个点假阳性、真阳性然后ROC 曲线是由 T 从 1 到 0 变化时生成的点集合描述的曲线。该曲线从点 00 开始在点 11 结束并且正在增加。一个好的模型将有一条从 0 快速增加到 1 的曲线这意味着只需要牺牲一点精度即可获得高召回率。 根据模型的有效性显示可能的 ROC 曲线。在左边模型必须牺牲很多精度才能获得高召回率。在右侧该模型非常有效它可以在保持高精度的同时达到高召回率。 基于 ROC 曲线我们可以构建另一个更易于使用的指标来评估模型AUROC即 ROC 曲线下的面积。AUROC 充当汇总整个 ROC 曲线的标量值。可以看出AUROC 在最佳情况下趋向于 1.0在最坏情况下趋向于 0.5。 同样良好的AUROC分数意味着我们正在评估的模型不会牺牲很多精度来获得对观察到的类通常是少数类的良好召回。 三、问题到底出在哪里 在尝试解决问题之前让我们尝试更好地理解它。为此我们将考虑一个非常简单的示例该示例将使我们能够快速回顾两类分类的一些基本方面并更好地掌握不平衡数据集的基本问题。此示例也将在以下各节中使用。 3.1 一个不平衡的例子 假设我们有两个类C0 和 C1。类 C0 中的点服从均值 0 和方差 4 的一维高斯分布。类 C1 中的点遵循均值 2 和方差 1 的一维高斯分布。还假设在我们的问题中类 C0 代表数据集的 90%因此类 C1 代表剩余的 10%。在下图中我们描绘了一个包含 50 个点的代表性数据集以及两个类的理论分布比例正确 说明我们的不平衡示例。虚线独立表示每个类的概率密度。实线也考虑了比例。 在此示例中我们可以看到 C0 类的曲线始终高于 C1 类的曲线因此对于任何给定点该点从类 C0 绘制的概率始终大于从类 C1 绘制的概率。在数学上使用基本的贝叶斯规则我们可以写 在这里我们可以清楚地看到先验的影响以及它如何导致一个类总是比另一个类更有可能的情况。 所有这些都意味着即使从完美的理论角度来看我们也知道如果我们必须在这些数据上训练分类器那么当始终回答 C0 时分类器的准确性将是最大的。因此如果目标是训练分类器以获得最佳的准确性那么它不应该被视为一个问题而应该被视为一个事实有了这些功能我们能做的最好的事情就准确性而言就是始终回答 C0。我们必须接受它。 3.2 关于可分离性 在给定的示例中我们可以观察到这两个类不能很好地分离它们彼此相距不远。但是我们可以注意到面对不平衡的数据集并不一定意味着这两个类不能很好地分离因此分类器不能很好地处理少数类。例如假设我们仍然有两个类 C0 90% 和 C1 10%。C0 中的数据服从均值 0 和方差 4 的一维高斯分布而 C1 中的数据服从均值 10 和方差 1 的一维高斯分布。如果我们像以前一样绘制数据那么我们就有 在我们的高斯示例中如果均值相对于方差足够不同即使是不平衡的类也可以很好地分离。 在这里我们看到与前一种情况相反C0 曲线并不总是高于 C1 曲线因此有些点更有可能从类 C1 而不是从类 C0 中提取。在这种情况下这两个类的分离足以补偿不平衡分类器不一定总是回答 C0。 3.3 理论最小误差概率∞ 最后我们应该记住分类器具有理论上的最小误差概率。对于这种分类器一个特征两个类我们可以提到以图形方式理论最小误差概率由两条曲线的最小值下的面积给出。 两类不同可分离程度的理论最小误差图示。 我们可以在数学上恢复这种直觉。事实上从理论的角度来看最好的分类器将为每个点x选择两个类中最有可能的。这自然意味着对于给定的点x最佳理论误差概率由这两个类中可能性较小的给出 然后我们可以表示整体错误概率 这是上面表示的两条曲线的最小值下的面积。 四、返工数据集并不总是解决方案 首先面对不平衡的数据集时第一个可能的反应是考虑数据不能代表现实如果是这样我们假设真实数据几乎是平衡的但在收集的数据中存在比例偏差例如由于收集方法。在这种情况下几乎必须尝试收集更具代表性的数据。 现在让我们看看当数据集不平衡时可以做什么因为现实就是如此。在接下来的两个小节中我们将介绍一些经常提到的方法这些方法用于处理不平衡的类以及处理数据集本身的方法。特别是我们讨论了与欠采样、过采样和生成合成数据相关的风险以及获得更多功能的好处。 4.1 欠采样、过采样和生成合成数据 这些方法通常被认为是在拟合分类器之前平衡数据集的好方法。简而言之这些方法作用于数据集如下所示 欠采样包括从多数类中抽样以便仅保留这些点的一部分过采样包括从少数类复制一些点以增加其基数生成合成数据包括从少数类创建新的合成点例如请参阅 SMOTE 方法以增加其基数 所有这些方法都旨在重新平衡部分或全部数据集。但是我们应该重新平衡数据集以拥有两个类的尽可能多的数据吗还是应该让多数阶级保持最具代表性如果是这样我们应该以什么比例重新平衡 说明不同程度的多数类欠采样对模型决策的影响。 当使用重采样方法时例如从 C0 获取的数据与从 C1 获取的数据一样多我们在训练期间向分类器显示两个类的错误比例。这样学习的分类器对未来真实测试数据的准确率将低于在未更改数据集上训练的分类器。事实上了解类的真实比例对于对新点进行分类非常重要并且在对数据集进行重采样时该信息已丢失。 因此如果这些方法不必被完全拒绝则应谨慎使用如果有目的地选择新的比例它可能会导致相关的方法我们将在下一节中看到但只是重新平衡类而不进一步考虑问题也可能是无稽之谈。为了结束本小节假设使用类似重采样的方法修改数据集正在改变现实因此需要小心并牢记它对分类器的输出结果意味着什么。 4.2 获取其他功能 我们在上一小节中讨论了这样一个事实即根据分类器的真正目的对训练数据集进行重采样修改类比例可能是也可能不是一个好主意。我们特别看到如果两个类不平衡不能很好地分离并且我们以尽可能高的精度定位分类器那么获得一个总是回答相同类的分类器不一定是一个问题而只是一个事实没有什么比这些变量更好的了。 但是通过使用附加或更多特征丰富数据集仍然可以在准确性方面获得更好的结果。让我们回到类不能很好地分离的第一个示例也许我们可以找到一个新的附加功能来帮助区分两个类从而提高分类器的准确性。 寻找其他功能可以帮助分离最初不可分离的两个类。 与上一小节中提到的建议改变数据现实的方法相比这种包括用来自现实的更多信息丰富数据的方法在可能的情况下是一个更好的主意。 五、返工问题更好 到目前为止结论非常令人失望如果数据集代表真实数据如果我们无法获得任何附加特征并且如果我们以最佳的准确性定位分类器那么“幼稚行为”总是回答相同的类不一定是问题应该被接受为事实如果幼稚行为不是由于所选分类器的能力有限 当然。 那么如果我们仍然对这些结果不满意怎么办在这种情况下这意味着以一种或另一种方式我们的问题没有得到很好的陈述否则我们应该接受结果的本来面目我们应该重新设计它以获得更令人满意的结果。让我们看一个例子。 5.1 基于成本的分类 获得的结果不好的感觉可能来自目标函数没有很好地定义的事实。到目前为止我们假设我们以高精度定位分类器同时假设两种错误“假阳性”和“假阴性”具有相同的成本。在我们的示例中这意味着我们假设当真实标签为 C0 时预测 C1 与在真实标签为 C1 时预测 C0 一样糟糕。然后错误是对称的。 让我们考虑有缺陷的 C1 和没有缺陷的 C0 产品的介绍性示例。在这种情况下我们可以想象不检测到有缺陷的产品会给公司带来更多的成本客户服务成本如果存在危险缺陷则可能的法律成本...比错误地将没有缺陷的产品标记为有缺陷生产成本损失。现在当真标签为 C0 时预测 C1 比在真标签为 C1 时预测 C0 要差得多。错误不再是对称的。 然后更具体地考虑我们有以下成本 当真实标签为 C0 时预测 C1 的成本为 P01当真实标签为 C1 时预测 C0 的成本为 P100 P10 P01 然后我们可以重新定义我们的目标函数我们不再以最佳准确性为目标而是寻找较低的预测成本。 5.2 理论最小成本 ∞ 从理论角度来看我们不想最小化上面定义的误差概率而是最小化由 其中 C. 定义分类器函数。因此如果我们想最小化预期的预测成本理论上的最佳分类器 C. 最小化 或等价地除以 xC. 的密度最小化 因此有了这个目标函数从理论角度来看最好的分类器将是这样的 请注意当成本相等时我们恢复“经典”分类器的表达式专注于准确性。 5.3 概率阈值 在我们的分类器中考虑成本的第一个可能方法是在训练后进行。这个想法是首先训练分类器输出以下概率的基本方法 无需承担任何费用。然后预测的类将为 C0如果 否则为 C1。 在这里我们使用哪个分类器并不重要只要它输出给定点的每个类的概率即可。在我们的主示例中我们可以在数据上拟合贝叶斯分类器然后我们可以重新加权获得的概率以使用描述的成本误差调整分类器。 概率阈值方法的图示对输出的概率进行重新加权以便在最终决策规则中考虑成本。 5.4 类重新加权 类重新加权的想法是在分类器训练期间直接考虑成本误差的不对称性。这样每个类的输出概率已经嵌入了成本错误信息然后可用于定义具有简单 0.5 阈值的分类规则。 对于某些模型例如神经网络分类器在训练期间考虑成本可能包括调整目标函数。我们仍然希望我们的分类器输出 但这次它经过训练以最小化以下成本函数 对于其他一些模型例如贝叶斯分类器重采样方法可用于偏置类比例以便在类比例内输入成本误差信息。如果我们考虑成本 P01 和 P10例如 P01 P10我们可以 将少数类过采样因子 P01/P10少数类的基数应乘以 P01/P10多数类的欠采样系数 P10/P01多数类的基数应乘以 P10/P01 类加权法的图示多数类的抽样不足其比例经过精心选择以直接在类比例内引入成本信息。 六、总结 本文的主要内容是 每当使用机器学习算法时都必须谨慎选择模型的评估指标我们必须使用能够让我们最好地了解模型在目标方面做得如何的指标。在处理不平衡的数据集时如果类不能与给定变量很好地分离并且我们的目标是获得最佳的准确性则最佳分类器可以是始终回答多数类的“幼稚”分类器可以使用重采样方法但必须仔细考虑它们不应用作独立的解决方案而必须与问题的返工相结合以服务于特定目标重新设计问题本身通常是解决不平衡类问题的最佳方法分类器和决策规则必须针对一个精心选择的目标进行设置例如可以最小化成本 我们应该注意到我们还没有讨论过像“分层采样”这样的技术这些技术在批量训练分类器时很有用。当遇到不平衡类问题时这些技术可确保在训练过程中提高稳定性通过消除批次内的比例方差。 最后假设本文的主要关键字是“目标”。确切地知道您想要获得的内容将有助于克服不平衡的数据集问题并确保获得最佳结果。完美地定义目标应该始终是第一件事并且是创建机器学习模型所必须进行的任何选择的起点。巴蒂斯特·罗卡 ·