Machine learning 基于支持向量机的电信号分类

Machine learning 基于支持向量机的电信号分类,machine-learning,weka,svm,Machine Learning,Weka,Svm,我试图将电信号(特别是EEG信号)映射到动作。我有来自eeg设备的原始数据,它有14个通道,因此对于每个训练数据实例,我最终得到一个14x128矩阵。(14个通道128个样本(1秒窗口))。目前我所做的是在每个通道上应用汉明窗口,然后应用fft来使用频率进行分类。我无法理解的是,SVM(或其他分类算法)需要以下形式的矩阵 特征1 |特征2 |特征3 |特征N |类 但在EEG的情况下,每个通道都是特征,但每个通道不是具有单个值,而是具有128个值的向量。将该矩阵转换为svm能够理解的形式的最佳方

我试图将电信号(特别是EEG信号)映射到动作。我有来自eeg设备的原始数据,它有14个通道,因此对于每个训练数据实例,我最终得到一个14x128矩阵。(14个通道128个样本(1秒窗口))。目前我所做的是在每个通道上应用汉明窗口,然后应用fft来使用频率进行分类。我无法理解的是,SVM(或其他分类算法)需要以下形式的矩阵

特征1 |特征2 |特征3 |特征N |类


但在EEG的情况下,每个通道都是特征,但每个通道不是具有单个值,而是具有128个值的向量。将该矩阵转换为svm能够理解的形式的最佳方法是什么?比如说,我只需要修改14x128矩阵,添加新的col类,然后一个接一个地追加它们。所以,对于1秒的脑电图信号记录,我最终得到128个pos/neg类

在将原始数据交给支持向量机之前,几乎肯定需要进行一些特征提取。对于这样的时间数据,重要特征通常不能通过单个点读数很好地表示出来。相反,它们被一段时间的关系所捕获

大约10年前,我用支持向量机对脑电数据进行了一些研究[1],我们当时所做的是将数据分割成窗口,然后建立每个窗口的自回归模型。分类器的特征不是原始传感器读数,而是每个通道的AR系数。这为分类器提供了更多有用的信息

我没有在这一领域继续工作,我也不能肯定10多年后人们现在在做什么,但我当然希望最先进的技术仍然包括某种特征提取

[1] (pdf可从我的个人页面获得)

编辑:根据评论中的讨论,我正在编辑答案以提供更多细节。信号处理不是我最擅长的领域,所以如果我完全误解了你对你正在做的事情的描述,请不要介意

是的,您所问问题的答案是,当您有多个数据通道,因此您的实例是一个矩阵时,您只需将行连接到行向量中。因此,如果对于每个训练实例,您得到一个14x128矩阵,您只需将其转换为1x1792向量,然后将类标签粘贴在末尾。像

c1x1 | c1x2 | c1x3 | ... | c1x128 | c2x1 | c2x2 | ... | c14x127 | c14x128 | class
其中cNxM=通道N,样本M。这将是从一种特征矩阵中生成单个特征向量的标准方法

然而…继续读下去,看看为什么我认为这不是你真正想做的

我还不清楚你在描述什么。特别是128从哪里来?我在这里看到两种可能性。(A) 对于每个要分类的项目,对14个电极中的每一个进行128次采样。这就是我所说的原始数据。(B) 你已经运行了DFT,每个通道有128个系数。我认为(A)是你的意思,这是我在这里的假设,但它不是完全清楚

对于分类,您需要有意义的特征。功能就是你决定制作的东西。你可以选择14个传感器中的每一个,计算128个点的平均值和方差,并将它们作为你的特征。在这种情况下,您的培训实例如下所示

mean_ch1 | var_ch1 | mean_ch2 | var_ch2 | ... | mean_ch14 | var_ch14 | class
dft_coeff1_ch1 | cft_coeff2_ch1 | dft_coeff3_ch1 | dft_coeff1_ch2 | dft_coeff2_ch2 | ... | class
对于EEG分类,均值和方差不是很好——它们不可能提供足够有用的信息来区分类别。这就是我所说的有意义的特征。例如,如果你想预测一种入侵物种是否会在湖中繁衍生息,你可能需要知道温度。然后你可以分别向分类器传递湖中每个水分子的估计速度,但这完全是错误的细节,分类器不太可能学到任何东西。你需要给它已经计算过的温度

因此,在您的例子中,您可以对128个点的每个窗口进行FFT。这将为每个通道提供少量非零系数。您的训练数据将如下所示

mean_ch1 | var_ch1 | mean_ch2 | var_ch2 | ... | mean_ch14 | var_ch14 | class
dft_coeff1_ch1 | cft_coeff2_ch1 | dft_coeff3_ch1 | dft_coeff1_ch2 | dft_coeff2_ch2 | ... | class
你也可以不加修改地将每个通道的128个值转储到特征向量中,给你每个输入14*128=1792个特征,但是这些特征可能毫无用处——你给它的是分子的速度,而不是温度。原则上,大多数学习算法都能够学习目标概念,但对训练数据量和所需时间的要求可能很大


特征应该捕获分类器可以使用的细节级别。对于大多数时间序列数据,这通常意味着高级概念性的东西,如“向上倾斜”、“V形”、“一段时间内保持平坦,然后逐渐减小”、“以这些频率振荡”,等等。任何你作为人类认为可能相关的东西。这正是使用傅里叶变换的原因——频域为信号提供了更高的层次,可能更有用的描述,自由度比时域少得多。

我将阅读你的论文。但我没有给它原始的传感器数据。数据通过汉明窗口->fft运行。这就是我读过的90%的论文所做的,但没有提到如何将结果矩阵输入分类算法。我一定误解了你。14x128点是直接从时域传感器阵列记录的原始数据,对吗?我希望DFT和Hamming加窗可以在频域中提供非常稀疏的表示。支持向量机的特征就是占主导地位的非零DFT系数。“功能1=通道1”不是真的;特性1-3或1-11或任何可以代表通道1的数据,依此类推,直到你拥有全部14个通道