随机森林(RF)回归预测模型的Matlab程序 随机森林是一种强大的集成学习算法

张开发
2026/5/6 1:32:22 15 分钟阅读

分享文章

随机森林(RF)回归预测模型的Matlab程序 随机森林是一种强大的集成学习算法
随机森林(RF)回归预测模型的Matlab程序 随机森林是一种强大的集成学习算法它通过构建多个决策树并对它们的预测进行平均来提高预测性能。 在回归预测中随机森林在处理高维数据和具有复杂非线性关系的数据时表现良好对于异常值和噪声具有较强的鲁棒性随机森林可以处理各种类型的特征包括连续型、离散型和混合型特征而且不需要对特征进行过多的预处理随机森林通常能够提供较高的预测准确性尤其适用于大规模数据集和复杂的回归问题。 程序注释翔实结构清晰替换数据就可以使用适合新手学习用作算法学习。直接打开Matlab新建脚本文件把数据文件your_data.xlsx放在同级目录下。这里的数据前5列是特征第6列是目标变量。注意数据不要有缺失值和异常字符串数值型变量记得提前归一化。% 数据读取与预处理 data readtable(your_data.xlsx); features data(:,1:5); target data{:,6}; % 大括号提取数值矩阵 % 拆分训练测试集7:3比例 cv cvpartition(size(data,1),HoldOut,0.3); trainData features(cv.training,:); testData features(cv.test,:); trainTarget target(cv.training); testTarget target(cv.test);这段代码里的cvpartition函数特别适合处理数据分割比手动随机抽样规范得多。注意trainData和trainTarget必须对齐新手常在这里出错导致模型崩溃。核心建模用TreeBagger函数实现设置50棵树足够应付大部分场景。OOBPrediction开启后可以自动计算袋外误差这个参数对于评估模型泛化能力非常关键% 构建随机森林模型 rfModel TreeBagger(50, trainData, trainTarget,... Method,regression,... OOBPrediction,on,... MinLeafSize,5); % 可视化袋外误差 figure; plot(oobError(rfModel)) xlabel(树的数量); ylabel(MSE); title(袋外误差变化曲线);运行后会看到误差曲线逐渐平稳说明50棵树足够让模型收敛。如果曲线还在下降建议把树的数量调到100试试。MinLeafSize参数控制叶子节点的最小样本量调小这个值可能提升模型复杂度但容易过拟合。随机森林(RF)回归预测模型的Matlab程序 随机森林是一种强大的集成学习算法它通过构建多个决策树并对它们的预测进行平均来提高预测性能。 在回归预测中随机森林在处理高维数据和具有复杂非线性关系的数据时表现良好对于异常值和噪声具有较强的鲁棒性随机森林可以处理各种类型的特征包括连续型、离散型和混合型特征而且不需要对特征进行过多的预处理随机森林通常能够提供较高的预测准确性尤其适用于大规模数据集和复杂的回归问题。 程序注释翔实结构清晰替换数据就可以使用适合新手学习用作算法学习。预测阶段直接用predict函数注意输出是cell数组需要转换% 预测与评估 predTrain str2double(predict(rfModel, trainData)); predTest str2double(predict(rfModel, testData)); % 计算指标 trainMSE mean((predTrain - trainTarget).^2); testMSE mean((predTest - testTarget).^2); fprintf(训练集MSE:%.4f 测试集MSE:%.4f\n,trainMSE,testMSE) % 可视化预测效果 scatter(testTarget,predTest,filled) hold on plot([min(testTarget) max(testTarget)],[min(testTarget) max(testTarget)],r--) xlabel(真实值);ylabel(预测值);测试集MSE如果明显高于训练集说明可能过拟合了。这时候可以尝试增大MinLeafSize或者增加树的数目。散点图里的红色虚线是理想拟合线点越集中在线附近说明预测效果越好。最后分享几个调试经验遇到特征重要性排序异常时检查数据是否做了归一化如果运行速度太慢适当减少树的数量或改用更高版本的Matlab2020b之后性能优化明显类别型特征记得用categorical转换否则会被当作连续变量处理影响模型效果。

更多文章