使用卷积神经网络进行信号分类

数据挖掘 分类 卷积神经网络 卷积
2022-03-12 17:23:39

我想使用 Matlab 中可用的trainNetwork () 函数对 8 个噪声信号进行分类。所有 Matlab 示例都用于图像分类。参数是数据及其标签,CNN 层,其中第一层是imageInputLayer([32 32 3])我的问题是这个函数可以用来分类一维信号吗?如果是,我们如何创建这样的层?

1个回答

CNN 通常需要大量数据。如果你有一个非常大的功能集,当然还有更多的数据。如果你有很多输出类,甚至更多的数据。输出类的数量使得必要的数据样本量呈指数增长。

任何机器学习项目最重要的部分是从原始数据中提取最有说服力的特征。在你的信号中问问自己,应该告诉你的模型信号来自哪个类的迹象是什么。

您应该尝试使用一些特征提取技术,然后您应该尝试使用更适合数据集大小的模型。

数据预处理和特征提取

数据预处理来自您的原始数据,并将其改造为更适合机器学习算法。这意味着从您的数据中提取重要的统计数据或将您的数据转换为其他格式,以使其更具代表性。例如,如果您使用的是对范围敏感的技术,那么您应该标准化所有特征。在你的情况下,如果你有一个信号,你可能想要提取一些关于时域和频域变换的信息。您可以尝试诸如经验模式分解 (EMD) 之类的方法。

然后,您要使用特征选择。从您从数据中提取的所有信息中,并非所有信息都是有用的。有机器学习算法如:PCA、LDA、互相关等。它们会选择最具代表性的特征,而忽略其余的。

在你的情况下

作为一般经验法则,我建议用于浅层机器学习模型的数据量是10×#features. 对于深度模型,我通常建议100×#features×#outputs. 因此,您受到数据集大小的限制。在您的情况下,不建议使用 CNN。直到最近,一个小组才发表了一个颇具争议的结果,即用 100,000 个示例训练 CNN。社区普遍认为这太少了,在用很少的数据训练 CNN 时期望得到好的结果是不可行的。

该模型

我建议您使用通用机器学习技术,例如 SVM。这可能会导致更好的结果。试试这些技术,看看你会得到什么结果:k-NN、内核 SVM、k-means 聚类。