随机森林回归是一种基于集成学习的机器学习算法,它通过组合多个决策树来进行回归任务。随机森林的基本思想是通过构建多个决策树,并将它们的预测结果进行平均或投票来提高模型的准确性和鲁棒性。

以下是随机森林回归的主要特点和步骤:

  1. 决策树的构建: 随机森林由多个决策树组成。每个决策树都是通过对原始数据进行有放回的随机抽样(bootstrap抽样)来训练的。此外,在每次分裂节点时,算法随机选择一个特征子集进行分裂,以增加模型的多样性。
  2. 预测过程: 对于回归任务,随机森林中的每个决策树都会输出一个预测值。最终的随机森林预测结果是这些预测值的平均值。
  3. 超参数调优: 随机森林有一些重要的超参数,如树的数量、每棵树的最大深度、特征子集的大小等。通过交叉验证等方法,可以调整这些超参数以优化模型性能。
  4. 特征重要性: 随机森林可以提供每个特征对于模型预测的重要性程度。这对于理解模型和特征选择非常有帮助。
  5. 抗过拟合: 随机森林具有较好的抗过拟合能力,因为每个决策树都是在不同的数据子集上训练的,且通过随机选择特征子集来减少相关性。
In=ques2c(:,2:7);
Out=ques2c(:,1);;
%此处未进行归一化,切记,使用归一化的数据进行训练,后面要记得反归一化,且数据多处进行归一化,不可遗漏
nTree = 100;%树的个数
%训练模型
Factor = TreeBagger(nTree, In, Out,'Method','regression','OOBpredictorImportance','on','MinLeafSize',5);%
%性能评估,k-fold交叉验证法
subplot(121)
[Predict_label,Scores] = predict(Factor, In);
plot(Out,Out,'LineWidth',3);
hold on
scatter(Out,Predict_label,'filled');
xlabel('Real temp')
ylabel('Predict temp')
hold off
grid on
subplot(122)
plot(Factor.oobError,'LineWidth',2);
xlabel('Number of grown trees')
ylabel('Out-of-bag classification error')
grid on
%%
view(Factor.Trees{1},'Mode','graph')
%变量重要性直方图
weights=Factor.OOBPermutedVarDeltaError;
%重要性降序

barh(weights)
set(gca,'yticklabels',{'CO? emission','NOx emission','SO? emission','VOCs emission','CO? concentration','Population'})
xlabel('Weights')
ylabel('Index')
%误差变化图
figure
plot(Factor.oobError,'LineWidth',2);
xlabel('生长树数量','FontSize',30)
ylabel('袋外错误率','FontSize',30)
title('袋外错误率','FontSize',30)
set(gca,'FontSize',16)
set(gca,'LineWidth',2);   
grid on
% 计算R方值
SSR = sum((Predict_label - mean(y_test)).^2);
SST = sum((y_test - mean(y_test)).^2);
R_squared = 1 - SSR/SST;
% 打印R方值
disp(['R方值为: ', num2str(R_squared)]);