RF-RFE-BP基于随机森林递归特征消除(RF-RFE)与BP神经网络回归预测,MATLAB代码










1. 研究背景

在机器学习回归问题中,特征维度过高可能导致模型过拟合、计算开销增大及可解释性下降。特征选择是解决上述问题的关键手段之一。随机森林(RF)能够评估特征重要性,结合递归特征消除(RFE)可以自动筛选出最优特征子集。BP神经网络作为经典的非线性模型,广泛应用于回归预测。将RF-RFE与BP结合,既能发挥RF在特征选择上的优势,又能利用BP的拟合能力,实现高效准确的回归建模。


2. 主要功能

  • 读取Excel格式的特征数据集,自动划分训练集(70%)与测试集(30%)。
  • 在训练集上执行RF-RFE特征选择,通过OOB误差确定最佳特征数量,并输出选中的特征索引。
  • 根据选中的特征对训练集和测试集进行筛选,并对数据进行Z-score归一化。
  • 构建并训练单隐含层BP神经网络,对归一化后的数据进行回归拟合。
  • 对训练集和测试集进行预测,计算RMSE、R²、MAE等评价指标。
  • 生成多种可视化图表(预测对比、散点图、残差分布、Q-Q图、累积分布、训练误差曲线等),全面评估模型性能。
  • 保存选中的特征索引至selected_features.mat,便于后续使用。

3. 算法步骤

  1. 数据预处理

    • 读取Excel文件,提取特征矩阵X和目标向量y
    • 使用cvpartition按70%:30%随机划分训练集和测试集,固定随机种子保证可重复性。
  2. RF-RFE特征选择(在训练集上)

    • 初始化剩余特征索引为全部特征。
    • 循环从全部特征到只剩一个特征,每一步:
      • 用当前剩余特征训练随机森林回归模型(100棵树,MinLeafSize=5)。
      • 记录当前模型的袋外(OOB)误差。
      • 获取特征重要性(OOBPermutedVarDeltaError)。
      • 剔除重要性最小的特征,更新剩余特征集。
    • 找出使OOB误差最小的特征数量bestNumFeatures
    • 重新执行RFE过程,直至剩余特征数等于bestNumFeatures,得到最终选中的特征索引。
  3. 特征筛选与归一化

    • 用选中的特征索引筛选训练集和测试集。
    • 对训练集特征进行Z-score归一化,保存均值和标准差,并用相同参数归一化测试集特征。
    • 对训练集目标值同样进行Z-score归一化,并保存均值和标准差用于反归一化。
  4. BP神经网络建模

    • 创建feedforwardnet,隐含层神经元数设为20。
    • 设置训练函数为trainlm(Levenberg-Marquardt),不划分验证集,最大迭代次数500,目标误差1e-6。
    • 用归一化后的训练数据训练网络。
  5. 预测与反归一化

    • 对训练集和测试集进行预测,将预测结果反归一化还原为原始量纲。
    • 计算预测值与真实值之间的RMSE、R²、MAE。
  6. 结果可视化

    • 绘制训练集/测试集真实值与预测值对比折线图、散点图。
    • 绘制残差直方图、核密度估计、箱线图、Q-Q图、残差与预测值散点图。
    • 绘制真实值与预测值的累积分布对比图。
    • 绘制训练过程中的误差下降曲线。
    • 绘制平均绝对误差的条形图(含标准差)。
  7. 保存结果

    • 将选中的特征索引保存为MAT文件。

4. 技术路线

RF-RFE特征选择 → 数据归一化 → BP神经网络回归 → 模型评估与可视化

该路线充分利用了随机森林的特征重要性评估能力,通过递归消除冗余特征,降低BP网络的输入维度,同时结合归一化处理消除量纲影响,最后用BP网络进行非线性回归拟合。


5. 公式原理

  • 随机森林特征重要性 :通过计算每个特征在OOB样本上随机打乱后模型误差的增加量(OOBPermutedVarDeltaError)来衡量特征重要性,增加量越大表示特征越重要。
  • 递归特征消除(RFE):反复构建模型,每次剔除重要性最低的特征,直至达到预定特征数或满足停止条件。
  • BP神经网络
    • 前向传播:y^=f2(W2⋅f1(W1⋅x+b1)+b2)\hat{y} = f_2(W_2 \cdot f_1(W_1 \cdot x + b_1) + b_2)y^=f2(W2⋅f1(W1⋅x+b1)+b2)
    • 反向传播:通过梯度下降更新权重,最小化损失函数(均方误差MSE)。
  • 评价指标
    • RMSE:1n∑i=1n(yi−y^i)2\sqrt{\frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2}n1∑i=1n(yi−y^i)2
    • R²:1−∑(yi−y^i)2∑(yi−yˉ)21 - \frac{\sum (y_i - \hat{y}_i)^2}{\sum (y_i - \bar{y})^2}1−∑(yi−yˉ)2∑(yi−y^i)2
    • MAE:1n∑i=1n∣yi−y^i∣\frac{1}{n}\sum_{i=1}^n |y_i - \hat{y}_i|n1∑i=1n∣yi−y^i∣加粗样式

6. 参数设定

模块 参数名称 设定值
数据划分 训练集比例 0.7
随机种子 42
RF-RFE 树的数量 100
最小叶子节点数 5
特征重要性指标 OOBPermutedVarDeltaError
BP神经网络 隐含层神经元数 20
训练函数 trainlm (LM算法)
最大迭代次数 500
目标误差 1e-6
验证集划分 无(dividetrain)
归一化 方法 Z-score

7. 运行环境

  • MATLAB版本 :2020
    • Statistics and Machine Learning Toolbox(用于cvpartitionTreeBagger等)
    • Neural Network Toolbox(用于feedforwardnettrain等)
  • 依赖文件特征选择数据集.xlsx(需位于当前工作目录)
  • 输出文件selected_features.mat(保存选中的特征索引)

8. 应用场景

该方法适用于各类回归预测问题,特别是当原始特征数量较多且存在冗余时。典型应用包括:

  • 金融领域:股票价格预测、信用评分。
  • 工业领域:设备剩余寿命预测、产品质量指标预测。
  • 能源领域:风力发电功率预测、负荷预测。
  • 环境科学:空气质量指数预测、气象要素预测。
  • 生物医学:基于基因表达数据的疾病预后预测。

通过特征选择剔除无关或弱相关特征,可有效降低模型复杂度、提高训练效率,并增强模型在新数据上的泛化能力。

完整代码私信回复RF-RFE-BP基于随机森林递归特征消除(RF-RFE)与BP神经网络回归预测,MATLAB代码

相关推荐
EQUINOX12 小时前
现代卷积神经网络
人工智能·神经网络·cnn
飞Link3 小时前
深度解析 NT-Xent:对比学习中的标准化温度交叉熵损失
python·算法·数据挖掘·回归
飞Link3 小时前
深度解析 InfoNCE:对比学习背后的“核心功臣”
python·学习·数据挖掘·回归
乾元3 小时前
红队测试:如何对大模型进行系统性的安全红队评估
运维·网络·人工智能·神经网络·安全·网络安全·安全架构
EQUINOX115 小时前
卷积神经网络
人工智能·神经网络·cnn
w_a_o15 小时前
传统配方+机器学习:福尔蒂新材料用15年经验构建梯度回归预测模型(Python开源预告)
python·机器学习·回归·kmeans·宽度优先
飞Link18 小时前
深度解析:基于专家的监管方法(Expert-Based Supervision)在复杂系统中的应用
python·数据挖掘·回归
飞Link19 小时前
别再被异常数据骗了:深度解析 TSTD 异常检测中的重构模型(AutoEncoder 实战)
人工智能·算法·重构·回归
所谓伊人,在水一方3331 天前
【Python数据科学实战之路】第18章 | 大模型与数据科学:LLM赋能数据分析新时代
开发语言·python·深度学习·神经网络·数据分析·tensorflow