在这篇文章中,这是MLC AI提示系列文章的第三篇,我们将解释如何评估经过训练的决策树模型的性能,以便为嵌入最新一代ST MEMS传感器的机器学习核心构建尽可能好的模型。

1.简介

我们怎么知道我们训练的决策树模型足够好?有多种方法可用于测量模型性能。判断ML模型性能的最常见的关键参数指数(KPI)是以正确预测的百分比与预测总数计算的准确性。其他度量可从基本元素的不同组合获得,真阳性(TP)、真阴性(TN)、假阳性(FP)和假阴性(FN)。
通过这些,可以计算:

  • 精确:实际阳性观测值与预测阳性观测值之比

  • 回忆起(或灵敏度):实际阳性观察值与实际课堂上所有观察值的比率

  • F1成绩:准确度和回忆度的调和平均值,常用作准确度的替代品。


虽然所讨论的KPI总结了性能结果,但作为替代方案,我们也可以直接可视化测试数据集产生的混淆矩阵,如下图所示。对角线中的数字表示正确的预测,需要最大化,而对角线外矩阵中的所有数字都是预测中的误差。
如果有一个特定的类往往与另一个类混淆,则可能需要重新检查用于查找可能错误的训练数据集,或修改特征选择。
 

2.交叉验证技术

我们经常随机分割训练和测试集中的数据来训练和测试模型。假设训练数据已经捕获了不同的数据信息,足以对测试数据进行良好分类
要选择一个稳定的模型交叉验证方法可以实现。交叉验证也被称为抽样外技术,其有用的原因如下:
对于一些特定的问题,随机抽样方法可以将特定用例的所有数据作为测试数据的一部分,而不是训练数据的一部份。在这种情况下,模型的性能会很差,因为模型没有针对特定的用例进行训练。
由于我们正在执行随机拆分,因此每次随机拆分后,模型的准确性可能会发生变化。
 

2.1可用的交叉验证技术有哪些?

各种交叉验证技术各有优缺点。其中,我们可以提到方法去掉一个,Leave-p-outK褶皱坚持住。
最常用的方法是K倍交叉验证(特别是10倍)。使用这种方法,将训练数据划分为k个分割,并进行k次训练。
 

5倍交叉验证


在每次迭代中,其中一个子集用作测试集,而其他k-1个子集用作训练集。以这种方式,每个子集被使用k-1次用于训练和1次用于测试。这种方法的好处是对所有k次试验的误差估计进行平均,以获得模型的总有效性。在K-fold验证结束时,将利用所有训练数据编制最终模型。
当我们进行K-fold交叉验证时,其验证通过均方误差、均方根误差或绝对中值偏差等统计指标总结了各种误差。这些参数在选择合适的模型以确定模型的质量时是有用的。
 

3.不合身和不合身

为了保证训练模型的质量达到规定的水平,我们经常试图避免模型性能差的两个最常见原因:拟合不足和过拟合。

  • 不合身当机器学习模型不够复杂或没有足够的信息(在所选特征中)来捕获数据集中包含的关系和信息并从而区分类时,就会发生这种情况。下面说明了欠拟合、良好拟合(稳健模型)和过拟合的概念。

  • 过度拟合是一种建模错误,当模型在训练的数据点上表现良好,但在看不见的数据上表现不佳时会发生这种错误。它在训练数据集上具有良好的准确性,但在测试或另一个新收集的数据集上的准确性较低。


 

3.1如何确定模型是否装配不足?

当模型拟合不足时,它无法捕获训练数据中包含的所有数据模式。换句话说,如果训练后的模型在训练数据和测试数据上都表现不佳,那么这可能是由于拟合不足。在这种情况下,所选择的特征可能不足以捕获模型的信息来拟合数据。
不合身很容易处理,标准的解决方案是添加额外的功能并重新训练模型。另一种选择是减少类的数量。在某些情况下,如果两个类之间的数据看起来相似,则模型可能无法很好地对其进行分类。添加不同的数据也可能有助于解决填充不足的问题,因为模型可能会增加复杂性,并学习之前培训中遗漏的模式。
 

3.2如何确定模型是否过拟合?
过拟合模型通常采取制作过于复杂的模型的形式来捕捉训练中使用的数据中的特征。当模型通过将噪声解释为实际模式来拟合尽可能多的点时,就会出现这种情况。交叉验证通常有助于识别过度拟合。当用训练数据集获得的准确度之间的距离(比如95%)与模型对测试数据集的预测(比如50/70%)相比高时,则很可能是过拟合问题的识别。K-fold验证中获得的RMSE(均方根误差)是验证数据上各种折叠的累积误差。如果最终的模型精度很好,但均方根误差很高(>0.2),那么这是过拟合的好迹象。

为了解决和减少过拟合问题,可以采用以下技术。


收集更多日志
is通常是过拟合问题的直接解决方案。新的日志应该在不同的情况下收集,并具有更大的多样性。所收集的数据应该捕捉模型在现实应用程序中可能遇到的各种用例。
数据扩充
有时,我们没有多个用户来收集日志,或者拥有不同的环境/条件并不容易。我们可以考虑添加噪声或以不同角度旋转原始数据。例如,让我们考虑头部手势检测问题。目标是通过连接在耳机上的传感器检测“点头”、“摇晃”、“静止”、“行走”、“摆动”等类别。我们预计y轴指向地球(与重力方向相同),x轴是用户的航向。然而,如果测试数据只有有限数量的用户和有限的方向设置,那么模型可能会遇到两个问题。
首先,基于这些数据训练的决策树非常适合收集日志的人,但在其他看不见的用户身上可能表现出较差的性能。
第二,针对特定方向调整模型,并且所获得的性能可能受到用户对头戴式耳机的方向的偏好的影响。为了克服这些问题,我们可以:
如前所述,注入噪声以处理数据中的任何微小变化。
以实际使用过程中可能出现的不同角度旋转现有数据,并将旋转后的数据与训练数据集相加。经过训练的模型将覆盖用户的大部分偏好方向,并且该解决方案将对传感器方向足够稳健。
减少功能数量
在训练阶段选择大量特征可以允许更大的灵活性和自由度来将模型拟合到所有训练数据,但这可能会导致过拟合。删除不太重要的功能可以帮助降低模型的复杂性并解决问题。正如我们在上一篇文章中讨论特征可视化时所提到的,绘制和可视化特征有助于理解特征和类之间的关系。
 

修剪
修剪意味着通过删除决策树中不重要的部分来简化决策树。这些可以对应于没有对太多数据点进行分类的节点。修剪有两种类型:

  • 预修剪:它在继续对子集进行分类之前停止生长树

  • 修剪后:在构建决策树之后,逻辑决定是否修剪某个节点或子树。

大多数时候,修剪后是首选,因为提前知道停止树木生长的正确时机并不容易。在后修剪中,逻辑首先生长完整的决策树,然后使用特定的标准(如信息增益或类的不平衡),开始移除决策树的非关键部分。例如,如果决策树中有某些节点只对特定类别的少数样本进行分类,而剩余的大量样本属于其他类别,那么我们可以用对属于其他类别的所有样本进行分类的叶来替换该节点。生成的决策树的性能不会受到此操作的不利影响。
修剪会减少决策树中可能导致过拟合的叶子。让我们以下图所示的节点为例。
 

上述决策树的左侧节点(特征4≤-1.71)对唯一的异常样本进行分类,但其他13个样本属于另一类。在这种情况下,最好将此节点设为叶子。
Unico GUI中的决策树算法具有修剪选项。我们可以设置有限数量的节点,并且置信因子将被修剪,直到我们满足条件。
 

确定最佳修剪的方法是通过监测测试和训练的准确性。如果我们根据修剪水平绘制测试和训练数据集的准确性/误差图,我们往往会得到如下所示的图。
 

如果不进行修剪,训练数据上的模型误差将最低,但由于过拟合,测试集上的误差可能很高。随着修剪级别的增加,训练集中的误差将增加,但验证集上的误差将开始减少,因为一些节点被过度拟合到噪声中。随着我们进一步增加修剪,验证集和训练集上的错误都会增加,因为修剪会删除正确分类的节点。这就是停止修剪过程的要点。


以下概述了加注不足和加注过量问题及解决方案。