【特征选择】基于粒子群算法实现二进制特征选择问题附matlab代码
1 简介
摘要:特征选择是数据挖掘和机器学习等领域的重要研究方向。客观条件的限制,特征选择比较复杂且很难找到最关键的特征集合,导致分类精确度不高、分类器制作困难。开展分组特征选择算法的研究具有较高的理论意义和实用价值。 本文分析研究了支持向量机、Relief算法、SVM-RFE算法、粒子群算法和离散型粒子群算法,在此基础上对离散型粒子群算法进行了改进,对比实验表明,改进后的算法能够更好地找到特征之间的组结构,同时每个组中特征之间也有很强的相关性。提出基于特征子集相关性的分组特征选择算法,该算法首先运用线性支持向量机获取到数据属性的特征系数,据之建立用于特征分组的评价模型,然后对每个组内的特征距离进行优化,使得组内的距离尽可能小,进而找到特征之间的组结构,最后从每个组结构中挑选出代表特征组成特征子集。结果表明,本算法的分类精确度明显高于典型的特征选择算法。提出了基于特征子集差异性的分组特征选择算法,该算法首先利用特征权重系数构建分组矩阵,找到最优分组结构,然后对组间距离进行优化,使得每个组中的特征与其他各组中特征的距离和最大。在标准数据集上对本算法和基于特征子集相关性的分组特征选择算法进行对比测试,实验结果表明,本算法在特征选择和分类上的性能上更优。
BPSO 算法是 Kennedy 于 1997 年在连续性 PSO算法基础上提出的,用于解决离散的优化问题[26]。BPSO算法通过模拟鸟类飞行觅食过程,种群中每个粒子相当于解空间中的一个解,粒子具有速度和位置两个属性,位置向量表示该粒子对应的解,速度向量则是为了调整粒子下一次飞行,从而进行位置更新搜索新的解集。粒子飞行过程中根据自己的历史飞行经验和种群中其他粒子的飞行经验调整自身的飞行方向和速度。其中,每个粒子历史飞行过程中的最优位置称为个体最优解 pbest ,整个种群在历史飞行过程中所经过的最好位置为 gbest ,称为全局最优解[26],粒子之间通过 pbest、gbest 共享信息,从而在进化过程中影响种群的搜索行为。
2 部分代码
%-------------------------------------------------------------------------%
% Binary Particle Swarm Optimization (BPSO) source codes demo version %
clc, clear, close
% Benchmark data set contains 351 instances and 34 features (binary class)
load ionosphere.mat; % Matlab also provides this dataset (load Ionosphere.mat)
% Call features & labels
feat=f; label=l;
%---Input------------------------------------------------------------------
% feat: feature vector (instances x features)
% label: labelling
% N: Number of particles
% T: Maximum number of iterations
% c1: Cognitive factor
% c2: Social factor
% Vmax: Maximum velocity
% Wmax: Maximum bound on inertia weight
% Wmin: Minimum bound on inertia weight
% *Note: k-value of KNN & k-fold setting can be modified in jFitnessFunction.m
%---Output-----------------------------------------------------------------
% sFeat: Selected features (instances x features)
% Sf: Selected feature index
% Nf: Number of selected features
% curve: Convergence curve
%--------------------------------------------------------------------------
%% (Method 1) BPSO
N=10; T=100; c1=2; c2=2; Vmax=6; Wmax=0.9; Wmin=0.4;
[sFeat,Sf,Nf,curve]=jBPSO(feat,label,N,T,c1,c2,Wmax,Wmin,Vmax);
% Plot convergence curve
figure(); plot(1:T,curve); xlabel('Number of Iterations');
ylabel('Fitness Value'); title('BPSO'); grid on;
img =gcf; %获取当前画图的句柄
print(img, '-dpng', '-r600', './img.png') %即可得到对应格式和期望dpi的图像
3 仿真结果
4 参考文献
[1]段超. 基于粒子群算法的分组特征选择算 法研究[D]. 中国人民解放军信息工程大学 解放军信息工程大学, 2015.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。