文章目录
- 【可更换其他算法,`获取资源`请见文章第6节:资源获取】
- 1. 特征选择问题
- 2. 二进制粒子群算法
- 3. 广义回归神经网络(GRNN)分类
- 4. 部分代码展示
- 5. 仿真结果展示
- 6. 资源获取
【可更换其他算法,获取资源
请见文章第6节:资源获取】
1. 特征选择问题
特征选择是指从原始数据中选择最具有代表性和有用性的特征,以用于建模和预测任务。它是机器学习和数据挖掘中的重要步骤,可以提高模型的性能和解释能力,并降低计算成本和过拟合的风险。
特征选择的方法可以分为三大类:过滤方法(Filter methods)、包装方法(Wrapper methods)和嵌入方法(Embedded methods)。
过滤方法是根据某种准则或评估指标对特征进行评估和排序,然后选择排名靠前的特征。常用的过滤方法包括相关系数、信息增益、方差选择等。这些方法独立于具体的学习算法,计算效率高,但不能考虑特征子集之间的相互关系。
包装方法是利用机器学习算法对不同的特征子集进行评估,以确定最佳的特征子集。这类方法通常以模型性能为评价指标,例如递归特征消除(Recursive Feature Elimination, RFE)和遗传算法等。包装方法的计算代价较高,但能够考虑特征之间的相互关系。本文采用的就是包装方法
。
嵌入方法是指在学习算法中直接嵌入特征选择过程,通过学习过程自动选择最佳的特征。常见的嵌入方法包括L1正则化(L1 Regularization)和决策树的剪枝等。
选择适合的特征选择方法需要考虑数据的特点、问题的要求以及计算资源的限制。常用的特征选择工具包括scikit-learn(Python)、Weka(Java)和caret(R)等,它们提供了多种特征选择方法的实现。
需要注意的是,特征选择是一个迭代的过程,需要根据实际情况不断尝试和调整。在特征选择之前,应该对数据进行预处理、探索性数据分析和特征工程等步骤,以保证特征选择的效果和模型的可靠性。
2. 二进制粒子群算法
二进制粒子群算法(Binary Particle Swarm Optimization,BPSO)是一种基于群体智能的优化算法,用于解决二进制编码的优化问题。它是粒子群算法(Particle Swarm Optimization,PSO)的一种变体,适用于离散型优化问题。
在二进制粒子群算法中,每个粒子表示一个解向量,而解向量中的每个维度都是二进制值,通常用0和1表示。粒子群算法通过模拟鸟群中鸟的觅食行为,来搜索最优解。每个粒子根据自身历史最优解和群体最优解的信息,更新自己的位置和速度,并通过适应度函数评估自身的解的质量。
3. 广义回归神经网络(GRNN)分类
GRNN数据分类过程如下:
- 输入训练数据集,包括特征向量和对应的类别标签。
- 对每个训练样本,计算其与测试样本之间的距离。常用的距离度量方法包括欧氏距离、曼哈顿距离等。
- 基于距离计算每个训练样本的权重,通常使用高斯核函数来计算权重。高斯核函数将距离转换为权重,越近的样本权重越高,越远的样本权重越低。
- 对每个类别的样本,根据其权重进行加权平均。权重越高的样本对应的类别影响越大。
- 将测试样本划分到具有最高加权平均值的类别中。
4. 部分代码展示
%% GRNN 广义回归神经网络 classification
all_select=ones(1,dim);
[predictResult,accuracy,objval]=GRNN(all_select,trainData ,testData,trainlabel,testlabel,labels,dim);
%% PSO optimisation for feature selection
SearchAgents_no=30; % Number of search agents
Max_iteration=30; % Maximum numbef of iterations
% 二进制粒子群算法
[Target_score,Target_pos,PSO_cg_curve]=BPSO(SearchAgents_no,Max_iteration,dim,trainData,testData,trainlabel,testlabel,labels);
% final evaluation for PSO tuned selected features
[predictedLables_PSO,accuracy_PSO,~]=GRNN(Target_pos,trainData,testData,trainlabel,testlabel,labels,dim);
%%
% plot for Predicted classes
figure(1)
plot(testlabel,'ko','markersize', 8)
hold on
plot(predictResult,'b*','markersize', 8)
xlabel('测试集样本');
ylabel('类别标签');
legend('实际测试集分类','全部特征下GRNN预测分类');
title("全部特征下分类准确率:"+ num2str(100*accuracy)+"%");
axis tight
figure(2)
plot(testlabel,'ko','markersize', 8)
hold on
plot(predictedLables_PSO,'r*','markersize', 8)
xlabel('测试集样本');
ylabel('类别标签');
legend('实际测试集分类','基于PSO的特征选择后GRNN预测分类');
title("特征选择后分类准确率:"+ num2str(100*accuracy_PSO)+ "%");
axis tight
figure(3)
plot(PSO_cg_curve(2:end),'r')
xlabel('适应度值');
ylabel('迭代次数');
title('基于PSO的特征选择优化曲线');
delete_index = find(Target_pos==0);
remain_index = find(Target_pos~=0);
disp(['该数据集包含',num2str(numel(Target_pos)),'个特征维度', ]);
disp(['PSO优化后选择舍弃的特征维度序号为:', num2str(delete_index)]);
disp(['PSO优化后选择保留的特征维度序号为:', num2str(remain_index)]);
5. 仿真结果展示
6. 资源获取
A资源获取说明.rar
A资源获取说明.rar