“随机森林”及“混合随机森林和多目标粒子群优化”(RF_MOPSO),以预测目标作为学习方法并分别找到多特征过程的最佳参数(Matlab代码实现)

欢迎来到本博客❤️❤️❤️

博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

目录

1 概述

2 运行结果

2.1 算例1

2.2 算例2

3 参考文献

‍4 Matlab代码实现

1 概述

      多目标优化问题普遍涉及到工程设计、生产制造、信息处理等应用领域。粒子群优化算法具有快速收敛、简单易行、并行搜索等特点,特别适合处理多目标优化问题。本文对多目标粒子群优化算法进行系统性的研究,结合随机森林​的优势。包括"随机森林"和“混合随机森林和多目标粒子群优化”(RF_MOPSO),以预测目标作为学习方法并分别找到多特征过程的最佳参数。其中一个算例是钻孔过程预测和优化。采用随机森林与多目标粒子群优化算法相结合的方法辅助优化工艺参数选择。

2 运行结果

2.1 算例1

“随机森林”及“混合随机森林和多目标粒子群优化”(RF_MOPSO),以预测目标作为学习方法并分别找到多特征过程的最佳参数(Matlab代码实现)_第1张图片

“随机森林”及“混合随机森林和多目标粒子群优化”(RF_MOPSO),以预测目标作为学习方法并分别找到多特征过程的最佳参数(Matlab代码实现)_第2张图片

“随机森林”及“混合随机森林和多目标粒子群优化”(RF_MOPSO),以预测目标作为学习方法并分别找到多特征过程的最佳参数(Matlab代码实现)_第3张图片

“随机森林”及“混合随机森林和多目标粒子群优化”(RF_MOPSO),以预测目标作为学习方法并分别找到多特征过程的最佳参数(Matlab代码实现)_第4张图片

“随机森林”及“混合随机森林和多目标粒子群优化”(RF_MOPSO),以预测目标作为学习方法并分别找到多特征过程的最佳参数(Matlab代码实现)_第5张图片

“随机森林”及“混合随机森林和多目标粒子群优化”(RF_MOPSO),以预测目标作为学习方法并分别找到多特征过程的最佳参数(Matlab代码实现)_第6张图片

算例1主函数代码: 

clc
clear
close all; 

%Loading
load data1.csv
[TrainData,TestData] = ManageData(data1);
train_x = TrainData.Feature;
target = TrainData.Lebel;
test_x = TestData.Feature;
test_y = TestData.Lebel ;
data1 = train_x(:,1);
data2 = train_x(:,2);
data3 = train_x(:,3);
data4 = train_x(:,4);
data5 = train_x(:,5);

X = table(data1,data2,data3,data4,data5,target);
rng('default'); % For reproducibility

%%Specify Tuning Parameters
maxMinLS = 50;
minLS = optimizableVariable('minLS',[1,maxMinLS],'Type','integer');
numPTS = optimizableVariable('numPTS',[1,size(X,2)-1],'Type','integer');
hyperparametersRF = [minLS; numPTS];

%Minimize Objective Using Bayesian Optimization
results = bayesopt(@(params)oobErrRF(params,X,target),hyperparametersRF,...
    'AcquisitionFunctionName','expected-improvement-plus','Verbose',0);

bestOOBErr = results.MinObjective
bestHyperparameters = results.XAtMinObjective

%Train Model Using Optimized Hyperparameters
Mdl = TreeBagger(450,train_x,target,'OOBPred','On','Method','regression',...
    'MinLeafSize',bestHyperparameters.minLS,...
    'NumPredictorstoSample',bestHyperparameters.numPTS);


predicted_train = oobPredict(Mdl);
predicted_test = predict(Mdl,test_x);
trainmse = sum((predicted_train-target).^2)/length(target);
testmse = sum((predicted_test-test_y).^2)/length(test_y);

[fitresult.train, gof.train] = fit( predicted_train, target, 'poly1' );
[fitresult.test, gof.test] = fit( predicted_test, test_y, 'poly1' );
b = gof.train.rsquare;
c = gof.test.rsquare;

figure
plot(fitresult.train,predicted_train,target)
hold on
title(['R-Square = ' num2str(b)])

figure
plot(fitresult.test,predicted_test,test_y)
hold on
title(['R-Square = ' num2str(c)])

figure
plot(predicted_train,':og')
hold on
plot(target,'- *')
title('Train')

figure
plot(predicted_test,':og')
hold on
plot(test_y,'- *')
title('Test')

MAPE.train = mean((abs(predicted_train-target))./target).*100;
MAPE.test = mean((abs(predicted_test-test_y))./test_y).*100;

Vmse.train=errperf(target,predicted_train,'mse');
Vmse.test=errperf(test_y,predicted_test,'mse');
RMSE.train=sqrt(Vmse.train);
RMSE.test=sqrt(Vmse.test);
 

2.2 算例2

“随机森林”及“混合随机森林和多目标粒子群优化”(RF_MOPSO),以预测目标作为学习方法并分别找到多特征过程的最佳参数(Matlab代码实现)_第7张图片

3 参考文献

[1]尹丹. 多目标粒子群优化算法的改进与应用[D].扬州大学,2021.DOI:10.27441/d.cnki.gyzdu.2021.001684.

[2]陈文涛. 基于自适应分解多目标粒子群优化的特征选择方法研究[D].江苏大学,2021.DOI:10.27170/d.cnki.gjsuu.2021.000867.

‍4 Matlab代码实现

你可能感兴趣的:(#,多目标智能算法与应用,#,随机森林,学习方法,算法,多目标粒子群)