2

我已经使用 LIBSVM 应用了 SVM。现在我想实现特征选择的遗传算法。试图谷歌搜索一些信息

1)看到这个网站:http ://www.scribd.com/doc/31235552/Genetic-Algorithm-Implementation-Using-Matlab

2) MATLAB 中的 GA 示例:http: //www.mathworks.com/help/toolbox/gads/f6691.html

对他们有几个问题

Q1) [x fval] = ga(@fitnessfun, nvars, options)。这是做gassolver的功能。健身应该是什么?在大多数 ga 中,它是一个多项式函数。但在 SVM 的情况下,fitnessfun 应该是什么?

Q2)SVM之后的GA有什么具体的例子吗?

喜欢听一些反馈。

提前致谢。

4

1 回答 1

1

如果你想做特征选择,我认为你倒退了。您应该在训练 SVM之前运行 GA 进行特征选择。您的适应度函数可能会成为新训练的 SVM 在选定特征上的性能,这取决于您想要完成什么。不能说你对这个话题很清楚。

要回答您的第二条评论:

有很多部分,我不知道你正在使用这个 ga 函数,但是如果你看一下文档,他们必须在某个地方告诉你这个 Fitnessfun 应该期待什么参数。我猜你想要评估适合度的个体是这个函数的主要参数。如果您进化选择的特征,这个个体将是一个布尔变量数组,其中 true 表示选择的特征,false 表示未选择的特征。该适应度函数需要返回一个指示该特征选择的效果如何的指标,即它必须返回较大的数字以获得更好的选择,而返回较小的数字则表示最差的选择。预测准确度可能是一个很好的值(正确预测数除以样本总数)。

我将假设您知道如何计算给定数据集及其标签的 SVM 模型的预测准确度。由于您有一个预训练的 SVM,因此仅将其用于选定的功能可能有点棘手,并且它在很大程度上取决于您的 SVM 的实现。如果它是线性 SVM,您可以在数据矩阵中将未选择特征的值设置为零。但是,如果它是一个 RBF SVM 将无法工作。您将需要了解您所依赖的 SVM 实现的内部机制。我建议做一个简单的例子,你在 3d 数据上训练一个 SVM,然后让它适应 2d 数据。它很大程度上取决于您的 SVM 模型的实现。

于 2012-01-31T19:06:11.070 回答