NSGA2算法特征选择MATLAB实现(多目标)

本文共472个字,预计阅读时间需要2分钟。

利用nsga2进行进行特征选择其主要思想是:将子集的选择看作是一个搜索寻优问题(wrapper方法),生成不同的组合,对组合进行评价,再与其他的组合进行比较。这样就将子集的选择看作是一个是一个优化问题。

需要优化的两个目标为特征数和精度。

nsga2是一个多目标优化算法。

具体的nsga2通用算法请看:https://www.omegaxyz.com/2018/01/22/new_nsga2/

具体的特征选择代码在上述代码的基础上改了两个①主函数②评价函数,增加了一个数据分成训练集和测试集的函数:

MATLAB代码主函数:

评价函数(利用林志仁SVM进行训练):

选的的数据集请从UCI上下载。

结果:

①pareto面

最后粒子的数据(选出的特征数和精确度)

PSO单目标特征选择请见:https://www.omegaxyz.com/2018/01/21/psofs/

13 位极客在 “NSGA2算法特征选择MATLAB实现(多目标)” 留下足迹

  1. 大神,answer=cell(M,3);为啥要设为两行三列呢,3是什么含义呢,temp_x = x(1:V);这句话代表啥意思呢,f(1) = sum(inmodel(1,:));这个是特征的目标函数吗,为啥要求和呢,希望大神给予指导,我看好久了,实在不知道这几句为啥是这样的,还有就是把svmtrain和svmpredict换为其他网络时,如BP神经网络,子文件BPtrain的第一句应该怎么写呢,怎么调用都说输入参数不足。非常感谢大神能给予指导

    • 你好,这个是多目标特征选择问题,有两个目标,其中一个是特征数,因此有一个是要求特征总和,如果要换成其他网络,请查看输入的接口,输入进分类器也就是你的BP是种群或者个体的编码也就是X值。

  2. 大佬,上面给的程序选择特征的个数是随机的,如果想要人为给定特征选择的个数范围,比如说在2到5之间,但最终得到的pareto前沿图只出现了个数为2或3的点,并不能显示出所有的点(如个数为4,5的点就缺失了),您知道为什么么?

  3. 麻烦大佬给一下这个例子的所有代码可以么?(虽说是只有主函数和评价函数做了大的修改,其他nsga通用算法也会多少有一些变化)好人一生平安!好人一生平安!好人一生平安!

  4. 请问可以给一下Parkinson.mat文件吗?用自己下载的mat文件各种出错,感激不尽

  5. 评价函数中function f = evaluate_objective(x, M, V, i)的是输入的什么啊?因为在上个NSGA2代码里面,评价函数是function f = evaluate_objective(x, M, V),这里没有i,所以我有点不明白,还望老师指导一下,谢谢!!

  6. 能麻烦大神给一下你的Parkinson.mat文件吗?用自己下载的mat文件各种出错,感激不尽

评论