在这篇文章中,MLC AI提示系列文章的第三篇,我们将解释如何选择特征来训练决策树,如何选择用于计算这些特征的窗口大小,以及如何应用正确的滤波器来利用频率信息来提高分类精度,以便为嵌入最新一代ST MEMS传感器中的机器学习核心建立尽可能好的模型。

1.简介

在完成训练数据集的预处理(进而通过适当的传感器配置设置和有组织的数据收集阶段得出)之后,是时候训练决策树模型了,特别是定义窗口长度并开始特征选择过程。这个过程很重要,因为不可能也不建议计算所有特征,因为:

  • 总的来说,使用MLC,可以为每个原始数据(Acc_X、Y、Z、V、V2)计算12个不同的特征,从而仅为加速度计传感器产生60个特征(如果也使用陀螺仪数据,则为120个)
  • MLC支持的最大功能数为32。

此外,使用过多的特征会导致大型ML模型和过拟合的高风险。

 

 

2.选择窗口大小

窗口大小定义为要计算其特征的窗口的采样数。它强烈依赖于特定的应用程序,并且应该定义它来捕获分离不同类所需的所有信息。短窗口长度可以使响应迅速。然而,如果窗口长度太小而无法捕获足够的信息,也可能降低模型的准确性。

 

 

如果运动在某个频率上是重复的,那么理想的窗口大小应该足够长,以捕捉整个运动模式。还请考虑变化最慢的信号:例如,如果我们想区分周期约为0.9 Hz的A类和周期约为1.9 Hz的B类,我们应该根据A类决定窗口大小,并将窗口大小设置为(1/0.9 Hz)≈1.1 s或更长。

 

3.特征选择

信息特征的选择始于从收集的数据中观察运动模式。考虑识别头部手势的例子,例如当传感器安装在头戴式耳机上,y轴指向地球(重力方向),x轴与用户航向对齐时的“点头”。在这里,我们可以选择具有方差、平均值、最小值和最大值的x轴和y轴加速度,因为当用户点头时,x轴和y轴的这些特征会发生变化。

 

 

再举一个例子。如果我们在钻机上安装传感器,我们不想限制机器在特定方向上的使用。在这种情况下,我们不应该应用方向相关的特征,例如,x,y,z,平均值,最小值,最大值。我们可以选择方差、过零、峰值检测、范数能量(x、y、z轴的大小)。这些特征与钻机的方位无关,因此最适用于检测振动。

 

3.1利用模型培训

导出候选特征的第一可能池的一种方法是通过选择所有可用特征并训练模型。在我们的案例中,可用功能是在MLC中预定义的。在训练模型时,决策树学习算法将选择能够更好地区分类的特征。当然,我们可以尝试选择直观的功能来解决问题。

这种方法存在一些缺点,例如由于使用了太多的特征或与特定类别的检测实际上无关的特征,可能会得到过拟合的模型。因此,始终建议同时使用其他方法,以避免首先使用所有功能。一个更好的方法是识别一组潜在的好特征,然后训练模型,看看哪些是主要使用的。

 

3.2特征可视化

计算出的特征的可视化可以有助于选择和丢弃特征以优化模型的性能。单个特征的信息贡献可以通过衡量不同类别的分离程度来评估。该分析可以用1D/2D表示在视觉上执行。

下图左侧显示了应用于3类问题的单个特征的直方图。在这种情况下,我们可以看到类被很好地分离,因此该特征是模型训练的良好候选者。

 

 

在可能的情况下,绘制2个特征的笛卡尔图可能是有用的,如上图右侧所示,其中显示了与2类分类问题和2个不同特征的选择相关的2D图。在这种情况下,严格的分离是明显的,因此来自组合所选择的两个特征的信息是可见的。这种绘图也有助于评估不同特征和类别之间的关系。左边的图是为每个类别绘制单个特征的直方图。每个类别的特征值分布非常不同,即使使用简单的阈值,也可以将类别分离。

同样的方法也得到了诸如WEKA之类的ML工具的支持。下面显示的二维图表示不同特征和类别之间的关系。特别是,可以观察到绿色块中的特征组合显示出可分性,而红色块中的则不然。

 

 

关于特征包含的其他考虑因素包括相关性和可变性:

  • 如果该特征具有线性关系或与另一特征强相关,则该信息已经被另一特征捕获,因此可以丢弃该特征。如果这很难被可视化,则可以计算协方差矩阵来识别最相关的特征。在下面的图中,我们可以看到有许多非对角线元素是强相关的(黄色),因此它们可以被删除。
  • 可变性:如果特性在不同的类之间没有表现出太大的差异,那么该特性可能无助于分离类。
 

 

3.3功能排名

最后,ML工具提供了一些内置选项来识别信息特征的最佳子集。以下是WEKA中功能排名的示例。在所示的例子中,该问题有30个特征,通过使用特征排序逻辑,Weka只为当前数据集选择了11个重要特征。因此,最好不要全部使用它们,而只选择排名更高的。

 

 

4.过滤器选择

平均值、方差和能量等基本特征包含来自原始信号样本的直接信息,但它们可能无法区分具有不同主频的类。在许多情况下,对原始信号应用滤波器以更有效地隔离特定信息和分离类总是可能的,也是建议的。作为一个例子,让我们考虑一个人类活动检测问题。我们可以使用适当的滤波器准确区分用户是步行(通常为1-2Hz)还是慢跑(2.5-4Hz)。傅立叶分析提供了关于每个类别的哪个频率区域占主导地位的见解。

这个过程包括选择合适的滤波器(低通、高通、带通)和定义截止频率。考虑能量作为分类问题的唯一特征的情况。滤波器和感兴趣频率的选择是通过FFT在类之间的非重叠区域中找到有效能量来完成的。下面的曲线图示了类S1和S2的感兴趣的重叠区域和频率区域。

 

 

如果我们计算整个频率跨度(0-250 Hz)上的能量,那么两个类别的信息都有崩溃的风险。如果不同类别的能量在模块上相似但具有不同的频率分布,则分离2个类别可能是不够的。最好的选择是在计算特征之前应用适当的滤波器从信号中去除指定的频率区域。

如果我们以上图中的例子为例,应用60Hz的低通滤波器,信号S2将被完全滤除,低于55Hz的部分S1将通过。现在,如果我们计算滤波后两个信号的能量,S1将具有比S2更高的能量,因为S2信号被完全滤除。

 

5.训练测试数据集拆分

一旦我们定义了窗口长度、信息特征和合适的过滤器,就到了训练模型的时候了。为此,数据集必须分为:

  • 训练设备
  • 测试/验证集。

对于每个机器学习模型,在训练、测试和验证(如果需要)中拆分数据是很重要的。训练数据用于训练模型,测试数据用于评估训练模型的质量/准确性,如果我们有多个模型要评估,则使用验证数据。测试和训练数据的准确性有助于判断模型是拟合不足、拟合过度还是平衡良好。例如,如果训练数据的准确性很高(>80%),而测试数据的准确性较低(<60%),则模型可能过拟合,并且模型可能需要一些修剪或添加更多不同的数据。另一方面,若训练和测试数据的准确性较低(<60%),则模型可能拟合不足,可能需要添加更多特征或减少修剪。

通常,如果我们评估单个模型,训练和测试样本之间的比例约为80:20或70:30。如果我们有兴趣评估多个模型(来自不同的训练算法,如J48和CART,或使用不同的特征集),那么我们应该以60:20:20的比例将数据分为训练、验证和测试。验证数据应仅用于选择最佳模型,测试数据应用于评估所选模型的最终准确性。用于拆分数据的比率的选择是特定于问题的,并且可以根据应用要求进行更改。