【问题标题】:Wavelet Packet Decomposition, Feature Selection and SVM小波包分解、特征选择和SVM
【发布时间】:2012-07-27 00:22:00
【问题描述】:

我想了解更多关于使用小波包分解、特征选择和 SVM 的故障检测模型。可以在这里阅读一些相关论文:

http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4547208

https://mospace.umsystem.edu/xmlui/bitstream/handle/10355/4845/research.pdf?sequence=3

我的问题是在“特征选择”步骤中,我们需要选择小波包节点(及其计算的 rms 值)作为最终 SVM 分类器的特征。在 SVM 中,我们还需要知道每个向量的标签 (+1, -1),但是我们如何在特征选择过程中获得这个标签。我真的不太了解使用 10 倍 SVM 的遗传算法(GA),如上述论文中所述。任何人都可以向我解释这一点吗?

【问题讨论】:

  • 你更擅长堆栈交换的数学版本,这个问题math.stackexchange.com
  • 谢谢,我了解有关 Wavelet 和 SVM 的数学背景,我认为 stackoverflow 更适合算法和相关工程师问题,例如这个问题。

标签: genetic-algorithm svm wavelet feature-selection


【解决方案1】:

在列出的论文中,作者试图通过仅使用来自具有相对较低 EMI 噪声的频带的数据包训练 SVM 来最小化分类器中的噪声量。因此,他们将遗传算法纳入其特征选择步骤,如下所示:

首先,在这种情况下,遗传算法将是一堆 0 和 1,其长度等于您特定问题的频带数。每个“槽”(在遗传算法中实际上称为“基因”)对应于您在训练分类器时是否应该使用来自该频带的数据。

因此,如果您的数据总共使用 10 个频带,则每个个体或染色体(一组插槽/基因)的大小将是 10,并且看起来像这样(只是一堆 10 个 1s/0s)

0110101000

所以你从生成一整串随机染色体开始,一整串有多少?这取决于您的问题,并且肯定需要一些努力来确定...我建议您根据您的硬件能力大量试验这个值,从几百到几百万不等。

好的,现在你有了随机的 0 和 1 串,那又如何呢?

这是有趣的部分,您需要评估这些染色体中的每一个(单独/一次一个)在为您选择数据方面的能力,因此对于每个染色体,您 循环遍历您的数据并使用数据包训练您的 SVN,当且仅当该特定染色体在与该数据包的频带相对应的位置具有“1”时。

换句话说,如果您有一个示例染色体:1000000001,并假设您收到一个对应于第一个频带的数据包,您会将其接受到您的 SVN 训练集中。如果您收到该染色体第 5 个频段的数据包,则将其丢弃。

由于 GA 仅用于特征选择步骤,现在您只需查看染色体“接受”的数据包数据,并使用此数据正常训练您的 SVN(而不是整个训练数据集)。然后,您根据使用此数据训练的 SVN 计算误差,并根据染色体的好坏为染色体分配一个分数。

对所有染色体重复此操作后,您现在拥有每个染色体的列表以及生成的 SVN 在分类方面的表现。然后,您保存您有史以来表现最好的染色体,并执行Genetic Algorithm 步骤来创建一个全新的染色体批次。这个想法是,通过结合前面步骤中表现良好的染色体,您可以获得一些甚至更好的染色体来为您的 SVN 选择数据。您只需重复此评估/重组过程,直到您没有看到新染色体的表现优于您的所有时间。

有意义吗?

【讨论】:

  • 谢谢dalekchef,但我的问题也是每次在GA循环中使用SVM,训练集中元素的标签是什么?
  • GA 的唯一目的是在运行 SVN 之前过滤掉训练数据。如果您没有标记的训练数据,您将需要以适应这种情况的方式实现您的 SVN。试试citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.30.2181
猜你喜欢
  • 2013-02-17
  • 2016-12-21
  • 1970-01-01
  • 2018-04-12
  • 2014-03-23
  • 1970-01-01
  • 2021-04-27
  • 2014-09-21
  • 1970-01-01
相关资源
最近更新 更多