我有一个包含 (mxn) m 个实例和 n 个特征的二进制数据集,其中 m >> n。并且有一个目标变量或类属性,也是二进制的。我想使用遗传算法进行特征选择。我决定在 GA 中使用 0/ 1 个字符串,其中 0 如果未选择功能,则为 1 如果选择了功能。我生成了一个随机的 K 组位串。因此,这些位串中的每个 K 代表一个可能的特征选择。为了开发一个适应度函数,我用这些 K 个特征集(模型)中的每一个训练一个神经网络,然后根据单独的验证集的准确性,我为每个模型创建了这个适应度函数:-
fitness=tradeoffk*Valacc+(1-tradeoffk)*(ones(no_of_models,1)*n-featSel)/maxFeat;
这个适应度函数就像是传递给训练的特征数量(featSel)和神经网络报告的验证准确度之间的权衡。我为 tradeoffk 设置了不同的值,例如 0.5、0.2 和 0.8。
我运行了 10 次 GA 迭代。每次迭代进行 20 代,并试图检查适应度函数如何增长。但是,适应度函数没有显着变化。在 GA 中,一般情况下,适应度函数预计会增长然后稳定,但在这里它的增长非常微弱。
例如,这是这些迭代之一的示例输出:-
gen=001 avgFitness=0.808 maxFitness=0.918
gen=002 avgFitness=0.808 maxFitness=0.918
gen=003 avgFitness=0.815 maxFitness=0.918
gen=004 avgFitness=0.815 maxFitness=0.918
gen=005 avgFitness=0.817 maxFitness=0.918
gen=006 avgFitness=0.818 maxFitness=0.918
gen=007 avgFitness=0.818 maxFitness=0.918
gen=008 avgFitness=0.819 maxFitness=0.918
gen=009 avgFitness=0.819 maxFitness=0.918
gen=010 avgFitness=0.819 maxFitness=0.918
gen=011 avgFitness=0.819 maxFitness=0.918
gen=012 avgFitness=0.819 maxFitness=0.918
gen=013 avgFitness=0.819 maxFitness=0.918
gen=014 avgFitness=0.819 maxFitness=0.918
gen=015 avgFitness=0.819 maxFitness=0.918
gen=016 avgFitness=0.819 maxFitness=0.918
gen=017 avgFitness=0.819 maxFitness=0.918
此外,神经网络需要大量时间来训练(20 代 > 2 小时)谁能提供进一步的建议,它可能哪里出错了?!