天天看點

“随機森林”及“混合随機森林和多目标粒子群優化”(RF_MOPSO),以預測目标作為學習方法并分别找到多特征過程的最佳參數(Matlab代碼實作)

💥1 概述

      多目标優化問題普遍涉及到工程設計、生産制造、資訊處理等應用領域。粒子群優化算法具有快速收斂、簡單易行、并行搜尋等特點,特别适合處理多目标優化問題。本文對多目标粒子群優化算法進行系統性的研究,結合随機森林的優勢。包括"随機森林"和“混合随機森林和多目标粒子群優化”(RF_MOPSO),以預測目标作為學習方法并分别找到多特征過程的最佳參數。其中一個算例是鑽孔過程預測和優化。采用随機森林與多目标粒子群優化算法相結合的方法輔助優化工藝參數選擇。

📚2 運作結果

📃2.1 算例1

“随機森林”及“混合随機森林和多目标粒子群優化”(RF_MOPSO),以預測目标作為學習方法并分别找到多特征過程的最佳參數(Matlab代碼實作)
“随機森林”及“混合随機森林和多目标粒子群優化”(RF_MOPSO),以預測目标作為學習方法并分别找到多特征過程的最佳參數(Matlab代碼實作)
“随機森林”及“混合随機森林和多目标粒子群優化”(RF_MOPSO),以預測目标作為學習方法并分别找到多特征過程的最佳參數(Matlab代碼實作)
“随機森林”及“混合随機森林和多目标粒子群優化”(RF_MOPSO),以預測目标作為學習方法并分别找到多特征過程的最佳參數(Matlab代碼實作)
“随機森林”及“混合随機森林和多目标粒子群優化”(RF_MOPSO),以預測目标作為學習方法并分别找到多特征過程的最佳參數(Matlab代碼實作)
“随機森林”及“混合随機森林和多目标粒子群優化”(RF_MOPSO),以預測目标作為學習方法并分别找到多特征過程的最佳參數(Matlab代碼實作)

算例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代碼實作)

🎉3 參考文獻

👨‍💻4 Matlab代碼實作

繼續閱讀