MATLAB实现随机森林回归算法

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

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

  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)]);
    

相关推荐

  1. MATLAB实现随机森林回归算法

    2024-02-10 13:36:02       53 阅读
  2. XGBoost、RF随机森林算法MATLAB实现

    2024-02-10 13:36:02       20 阅读
  3. 【经典算法随机森林

    2024-02-10 13:36:02       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-10 13:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-10 13:36:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-10 13:36:02       82 阅读
  4. Python语言-面向对象

    2024-02-10 13:36:02       91 阅读

热门阅读

  1. 力扣-137. 只出现一次的数字 II

    2024-02-10 13:36:02       56 阅读
  2. C#win form解决导入CSV文件数据缺失问题

    2024-02-10 13:36:02       49 阅读
  3. 用python制作简单的进度条(纯代码)

    2024-02-10 13:36:02       51 阅读
  4. AI绘画的兴起与人类创造力的共生未来

    2024-02-10 13:36:02       58 阅读
  5. Vue-60、Vue技术编程式路由

    2024-02-10 13:36:02       52 阅读
  6. 最长公共上升子序列——DP

    2024-02-10 13:36:02       53 阅读
  7. 【数据结构】二叉搜索树

    2024-02-10 13:36:02       53 阅读
  8. eclipse4.28.0版本如何安装FatJar插件

    2024-02-10 13:36:02       47 阅读