%
% Copyright (c) 2015, Yarpiz (www.yarpiz.com)
% All rights reserved. Please read the "license.txt" for license terms.
%
% Project Code: YPML122
% Project Title: Feature Selection using PSO (Fixed Number of Features)
% Publisher: Yarpiz (www.yarpiz.com)
%
% Developer: S. Mostapha Kalami Heris (Member of Yarpiz Team)
%
% Contact Info: sm.kalami@gmail.com, info@yarpiz.com
%
clc;
clear;
close all;
%% Problem Definition
data=LoadData();
nf=4;
CostFunction=@(u) FeatureSelectionCost(u,nf,data); % Cost Function
nVar=data.nx; % Number of Decision Variables
VarSize=[1 nVar]; % Size of Decision Variables Matrix
VarMin=0; % Lower Bound of Variables
VarMax=1; % Upper Bound of Variables
%% PSO Parameters
MaxIt=20; % Maximum Number of Iterations
nPop=20; % Population Size (Swarm Size)
% w=1; % Inertia Weight
% wdamp=0.99; % Inertia Weight Damping Ratio
% c1=2; % Personal Learning Coefficient
% c2=2; % Global Learning Coefficient
% Constriction Coefficients
phi1=2.05;
phi2=2.05;
phi=phi1+phi2;
chi=2/(phi-2+sqrt(phi^2-4*phi));
w=chi; % Inertia Weight
wdamp=1; % Inertia Weight Damping Ratio
c1=chi*phi1; % Personal Learning Coefficient
c2=chi*phi2; % Global Learning Coefficient
% Velocity Limits
VelMax=0.1*(VarMax-VarMin);
VelMin=-VelMax;
%% Initialization
empty_particle.Position=[];
empty_particle.Cost=[];
empty_particle.Out=[];
empty_particle.Velocity=[];
empty_particle.Best.Position=[];
empty_particle.Best.Cost=[];
empty_particle.Best.Out=[];
particle=repmat(empty_particle,nPop,1);
BestSol.Cost=inf;
for i=1:nPop
% Initialize Position
particle(i).Position=unifrnd(VarMin,VarMax,VarSize);
% Initialize Velocity
particle(i).Velocity=zeros(VarSize);
% Evaluation
[particle(i).Cost, particle(i).Out]=CostFunction(particle(i).Position);
% Update Personal Best
particle(i).Best.Position=particle(i).Position;
particle(i).Best.Cost=particle(i).Cost;
particle(i).Best.Out=particle(i).Out;
% Update Global Best
if particle(i).Best.Cost<BestSol.Cost
BestSol=particle(i).Best;
end
end
BestCost=zeros(MaxIt,1);
%% PSO Main Loop
for it=1:MaxIt
for i=1:nPop
% Update Velocity
particle(i).Velocity = w*particle(i).Velocity ...
+c1*rand(VarSize).*(particle(i).Best.Position-particle(i).Position) ...
+c2*rand(VarSize).*(BestSol.Position-particle(i).Position);
% Apply Velocity Limits
particle(i).Velocity = max(particle(i).Velocity,VelMin);
particle(i).Velocity = min(particle(i).Velocity,VelMax);
% Update Position
particle(i).Position = particle(i).Position + particle(i).Velocity;
% Velocity Mirror Effect
IsOutside=(particle(i).Position<VarMin | particle(i).Position>VarMax);
particle(i).Velocity(IsOutside)=-particle(i).Velocity(IsOutside);
% Apply Position Limits
particle(i).Position = max(particle(i).Position,VarMin);
particle(i).Position = min(particle(i).Position,VarMax);
% Evaluation
[particle(i).Cost, particle(i).Out] = CostFunction(particle(i).Position);
% Update Personal Best
if particle(i).Cost<particle(i).Best.Cost
particle(i).Best.Position=particle(i).Position;
particle(i).Best.Cost=particle(i).Cost;
particle(i).Best.Out=particle(i).Out;
% Update Global Best
if particle(i).Best.Cost<BestSol.Cost
BestSol=particle(i).Best;
end
end
end
BestCost(it)=BestSol.Cost;
disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]);
w=w*wdamp;
end
%% Results
figure;
plot(BestCost,'LineWidth',2);
xlabel('Iteration');
ylabel('Best Cost');
没有合适的资源?快使用搜索试试~ 我知道了~
固定特征选择是指从给定的特征集中选择一部分特征,以提高模型性能和降低计算成本。PSO(Particle Swarm Optimization,粒子群优化算法)是一种基于群体智能的全局优化算法,可以用于固定特征选择问题。 下面是使用PSO进行固定特征选择的一般步骤: 定义目标函数:首先需要明确固定特征选择的优化目标,比如最大化分类精度、最小化误差等。目标函数应该能够根据给定的特征子集对模型性能进行评估。 初始化粒子群:随机生成一组粒子,每个粒子代表一个解(特征子集),并赋予其随机的位置和速度。 更新粒子位置和速度:根据当前位置和速度,使用PSO的公式更新粒子的位置和速度。位置表示特征子集,速度表示特征子集的搜索方向和距离。 评估粒子适应度:根据目标函数,计算每个粒子的适应度值。适应度值反映了特征子集对目标函数的优劣程度。 更新全局最优解和个体最优解:根据粒子的适应度值,更新全局最优解(群体中最好的解)和每个粒子的个体最优解(该粒子自身的最好解)。 重复迭代:重复执行步骤3-5,直到满足停止准则(如达到最大迭代次数)为止。 返回最优解:根据最终得到的全局最优解,可以将其作为固定的特征集合,用于后续的模型构建和评估。
资源推荐
资源详情
资源评论
收起资源包目录
03 Fixed Feature Selection using PSO.rar (5个子文件)
03 Fixed Feature Selection using PSO
pso.m 4KB
FeatureSelectionCost.m 1KB
CreateAndTrainANN.m 3KB
LoadData.m 615B
bodyfat_data.mat 8KB
共 5 条
- 1
资源评论
嵌入式职场
- 粉丝: 4w+
- 资源: 44
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功