✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。

🍎 往期回顾关注个人主页:Matlab科研工作室

🍊个人信条:格物致知,完整Matlab代码及仿真咨询内容私信。

🔥 内容介绍

在数据分析与预测领域,“多输入单输出” 场景广泛存在 —— 比如根据某城市的交通流量、路段长度、天气状况、时间段等多个变量,预测该路段的通行时间;或是依据某农作物的生长周期、光照时长、灌溉量、施肥量等指标,预测最终的亩产量。这类场景的核心需求是:从多个关联输入变量中提取关键特征,输出精准且稳定的单一预测结果。

而卷积神经网络(CNN),凭借其强大的局部特征提取能力,成为处理这类多变量回归问题的有效工具。更重要的是,在 “训练集 + 测试集 + 验证集” 的科学数据划分模式下,CNN 模型能进一步避免过拟合、优化参数,确保在实际应用中的泛化能力。本文将详细拆解如何在多输入单输出场景下,通过合理划分数据集,搭建高效的 CNN 多变量回归模型。

一、先明确核心:为什么要划分训练集、测试集、验证集?

在搭建 CNN 多变量回归模型前,首先要理解 “训练集 + 测试集 + 验证集” 划分的意义 —— 这不是简单的 “数据拆分”,而是保障模型性能的 “基础防线”,尤其在多变量场景下,合理的数据集划分能直接避免模型 “学错”“学偏”。

1. 三类数据集的核心作用与划分比例

在多输入单输出的多变量回归任务中,三类数据集的定位和作用截然不同,常见的划分比例为7:1:2(可根据数据量灵活调整,数据量越大,测试集和验证集比例可适当降低):

数据集类型

核心作用

典型比例

关键注意事项

训练集

用于 CNN 模型的参数学习,让模型从多输入变量中捕捉特征与输出的关联(如 “交通流量 + 天气” 与 “通行时间” 的关系)

60%-80%

需覆盖所有输入变量的取值范围,避免数据分布偏差,确保模型 “学全” 特征

验证集

用于模型调参与中间评估,判断模型是否过拟合(如调整 CNN 的卷积核数量、学习率),选择最优模型版本

10%-20%

需与训练集同分布,且从未参与模型训练,相当于模型的 “模拟考试”

测试集

用于最终评估模型的泛化能力,检验模型在全新数据上的预测精度,是模型性能的 “最终考核”

10%-20%

完全独立于训练过程,数据分布需与真实应用场景一致,确保评估结果可信

2. 多变量场景下的划分原则

在多输入单输出的多变量数据中,划分数据集时需额外注意两个关键点:

  • 保持变量关联性:多输入变量间往往存在关联(如 “光照时长” 与 “灌溉量” 相关),划分时需确保三类数据集都能保留这种关联性,避免出现 “训练集有光照数据、测试集无光照数据” 的情况;
  • 避免数据泄露:严禁将测试集或验证集的数据用于训练过程(如标准化时用全量数据的均值和标准差,而非仅用训练集数据),否则会导致模型评估结果虚高,失去实际参考价值。

二、CNN 多变量回归的核心逻辑:如何处理多输入、输出单结果?

CNN 之所以能处理多变量回归(多输入单输出),核心在于其 “局部特征提取 + 层级抽象” 的能力 —— 它能自动从多个输入变量中提取局部关联特征(如 “早高峰 + 小雨” 对交通通行时间的影响),再通过层级网络将局部特征抽象为全局特征,最终输出单一回归结果。

1. CNN 处理多变量回归的核心结构

针对多输入单输出场景,CNN 的网络结构需进行针对性设计,典型结构包括以下几层(以 “4 个输入变量预测 1 个输出” 为例):

网络层

核心作用

针对多变量的设计要点

输入层

接收多输入变量,将数据转换为 CNN 可处理的张量格式

若输入为 4 个变量,需将数据 reshape 为(样本数,变量数,1)的 2D 张量(通道数设为 1,因非图像数据),确保每个变量的特征能被独立捕捉

卷积层(Conv2D)

提取多变量间的局部关联特征(如 “变量 1 + 变量 2” 的交互影响)

选择合适的卷积核大小(如 3×1,适配 “变量维度” 的局部特征),卷积核数量根据特征复杂度调整(如 16、32 个),激活函数用 ReLU(解决非线性问题)

池化层(MaxPooling2D)

降低特征维度,减少计算量,避免过拟合

池化窗口大小与卷积核匹配(如 2×1),保留关键特征的同时压缩数据,确保多变量特征不被冗余信息干扰

全连接层(Dense)

将卷积层提取的特征映射为单一输出结果

先通过 Flatten 层将卷积特征展平为一维向量,再通过 1-2 个全连接层逐步压缩维度,最终输出 1 个回归值(无激活函数,因回归输出为连续值)

输出层

输出多变量回归的单一预测结果

神经元数量设为 1,直接输出连续值(如通行时间、亩产量)

2. CNN 处理多变量回归的优势

相比传统回归模型(如线性回归、随机森林),CNN 在多输入单输出场景下的优势主要体现在:

  • 自动特征提取:无需手动筛选多变量间的关联特征(如 “光照 × 施肥量” 的交互项),CNN 能通过卷积层自动捕捉,尤其适合输入变量多、关联复杂的场景;
  • 抗干扰能力强:多变量数据中常存在噪声(如某条样本的灌溉量记录偏差),CNN 的池化层能有效过滤噪声,保持预测结果稳定;
  • 适应非线性关系:多输入变量与单输出间往往存在非线性关联(如施肥量超过阈值后,产量增长放缓),CNN 通过 ReLU 激活函数和多层网络结构,能精准拟合这类非线性关系。

三、完整实践流程:从数据划分到模型部署

以 “根据某地区的‘温度、湿度、风速、降水量’4 个输入变量,预测次日的 PM2.5 浓度(单输出)” 为例,详细拆解 CNN 多变量回归预测的完整流程,重点突出 “训练集 + 测试集 + 验证集” 的应用细节。

1. 步骤 1:数据准备与划分

(1)数据收集与预处理

  • 收集 1000 条历史数据,每条数据包含 4 个输入变量(温度:℃、湿度:%、风速:m/s、降水量:mm)和 1 个输出变量(PM2.5 浓度:μg/m³);
  • 预处理:对输入变量进行标准化(Z-Score 标准化:x'=(x-μ)/σ,其中 μ 和 σ 仅用训练集数据计算,避免数据泄露),处理缺失值(用训练集均值填充)和异常值(通过箱线图剔除极端值,比例 < 1%)。

(2)数据集划分

  • 按 7:1:2 比例划分:训练集 700 条、验证集 100 条、测试集 200 条;
  • 划分方法:采用 “分层随机抽样”,确保三类数据集的 PM2.5 浓度分布一致(如高浓度、中浓度、低浓度样本比例相同),避免因数据分布偏差影响模型评估。

2. 步骤 2:搭建 CNN 回归模型

基于 Keras 框架搭建模型,适配多输入单输出场景:

TypeScript取消自动换行复制

3. 步骤 3:模型训练(结合验证集调优)

(1)训练过程

  • 输入数据格式调整:将训练集和验证集数据 reshape 为 CNN 要求的格式,如训练集形状为 (700, 4, 1, 1)(700 条样本,4 个变量,1 个通道,1 个维度);
  • 训练参数设置: batch_size=32(每次迭代用 32 条样本),epochs=50(迭代 50 轮),同时加入 “验证集评估”(validation_data=(val_x, val_y));
  • 早停机制:为避免过拟合,加入 EarlyStopping 回调函数,当验证集的损失(val_loss)连续 5 轮不下降时,自动停止训练,保留最优模型参数:

TypeScript取消自动换行复制

(2)训练过程分析

  • 通过训练集损失(loss)和验证集损失(val_loss)判断模型拟合情况:若训练集损失持续下降,而验证集损失先降后升,说明模型出现过拟合,需调整参数(如减少卷积核数量、增加 dropout 层);
  • 通过验证集的 R² 和 MAE,选择最优模型版本(如第 30 轮时验证集 R² 最高、MAE 最低,此时的模型参数为最优)。

4. 步骤 4:模型测试(用测试集评估泛化能力)

(1)测试集评估

将从未参与训练的测试集输入最优模型,计算关键指标(R²、MAE、MSE),评估模型在全新数据上的性能:

TypeScript取消自动换行复制

(2)典型结果与分析

假设测试集评估结果如下:

  • R²=0.92,MAE=3.2 μg/m³,MSE=15.6;
  • 结果解读:R² 接近 1,说明模型能解释 92% 的 PM2.5 浓度变化;MAE 仅 3.2 μg/m³,预测偏差小,满足环境监测的实际需求;同时,测试集指标与验证集指标(如验证集 R²=0.91)接近,说明模型无过拟合,泛化能力强。

5. 步骤 5:模型应用与优化

  • 实际应用:将实时采集的 “温度、湿度、风速、降水量” 数据输入模型,直接输出 PM2.5 浓度预测值,为环境预警提供支持;
  • 模型优化:若测试集 MAE 较高,可通过增加卷积层、调整卷积核大小、优化学习率等方式改进,或增加数据量(尤其是低浓度、高浓度等极端场景的样本),进一步提升模型精度。

四、关键问题与解决方案:多输入单输出 CNN 回归的常见坑

在 “训练集 + 测试集 + 验证集” 框架下搭建 CNN 多变量回归模型时,容易遇到数据划分、模型设计、过拟合等问题,以下是针对性解决方案:

1. 数据划分类问题

  • 问题 1:验证集与训练集数据分布不一致(如训练集无暴雨样本,验证集有大量暴雨样本),导致验证集损失骤高;
  • 解决方案:划分前先对输出变量(如 PM2.5 浓度)进行分层,确保三类数据集的各层级样本比例相同;若数据量小,可采用 “留一法”(Leave-One-Out Validation),即每次用 N-1 条样本训练,1 条样本验证,提升评估可靠性。

2. 模型设计类问题

  • 问题 2:多输入变量维度少(如仅 3 个输入变量),CNN 的卷积层无法有效提取特征,导致模型精度低于传统模型(如随机森林);
  • 解决方案:减少卷积层数量(如仅保留 1 层卷积),增加全连接层神经元数量;或对输入变量进行 “特征扩展”(如计算变量的平方、交互项),增加输入维度,为卷积层提供更多特征可提取空间。

3. 过拟合问题

  • 问题 3:训练集 R²=0.98,验证集 R²=0.85,模型过拟合,泛化能力差;
  • 解决方案:① 加入 Dropout 层(如在全连接层后添加 Dropout (0.2),随机丢弃 20% 的神经元);② 采用 L2 正则化(在 Dense 层中加入 kernel_regularizer=tf.keras.regularizers.l2 (0.01));③ 增加数据量,通过数据增强(如对输入变量添加微小噪声)生成更多训练样本。

4. 评估指标类问题

  • 问题 4:仅关注 MAE,忽略 R²,导致模型虽误差小,但无法解释变量间的关联(如 R²=0.6,MAE=3.0,说明模型未充分捕捉多变量与输出的关系);
  • 解决方案:同时监控 MAE、MSE、R² 三个指标,MAE 反映绝对误差,MSE 惩罚大误差,R² 反映特征解释能力,三者结合才能全面评估模型性能。

⛳️ 运行结果

📣 部分代码

N=length(output);   %全部样本数目

testNum=round(N*0.9);   %设定测试样本数目

trainNum=N-testNum;    %计算训练样本数目

% 随机生成训练集、测试集

k = randperm(size(input,1));

% 训练集——1900个样本

P_train=input(k(1:trainNum),:)';

T_train=output(k(1:trainNum))';

% 测试集——100个样本

P_test=input(k(trainNum+1:testNum),:)';

T_test=output(k(trainNum+1:testNum))';

%% 归一化

% 训练集

[Pn_train,inputps] = mapminmax(P_train,-1,1);

Pn_test = mapminmax('apply',P_test,inputps);

% 测试集

[Tn_train,outputps] = mapminmax(T_train,-1,1);

 Tn_test = mapminmax('apply',T_test,outputps);

Pn_train = Pn_train';

 Pn_test = Pn_test';

Tn_train = Tn_train';

 Tn_test = Tn_test';

%% 定义优化参数

🔗 参考文献

[1]陈敏华,李杨,张武雄.基于卷积神经网络的信道均衡算法[J].计算机应用与软件, 2017, 34(9):5.DOI:10.3969/j.issn.1000-386x.2017.09.050.

🎈 部分理论引用网络文献,若有侵权联系博主删除

 👇 关注我领取海量matlab电子书和数学建模资料 

🏆团队擅长辅导定制多种科研领域MATLAB仿真,助力科研梦:

🌟 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位、冷链、时间窗、多车场等、选址优化、港口岸桥调度优化、交通阻抗、重分配、停机位分配、机场航班调度、通信上传下载分配优化
🌟 机器学习和深度学习时序、回归、分类、聚类和降维

2.1 bp时序、回归预测和分类

2.2 ENS声神经网络时序、回归预测和分类

2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类

2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类

2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类

2.7 ELMAN递归神经网络时序、回归\预测和分类

2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类

2.9 RBF径向基神经网络时序、回归预测和分类

2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
2.19 Transform各类组合时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌟图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
🌟 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻、公交车时间调度、水库调度优化、多式联运优化
🌟 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划、
🌟 通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌟 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌟电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统(BMS)SOC/SOH估算(粒子滤波/卡尔曼滤波)、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进(扰动观察法/电导增量法)、电动汽车充放电优化、微电网日前日内优化、储能优化、家庭用电优化、供应链优化
🌟 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
🌟 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别
🌟 车间调度
零等待流水车间调度问题NWFSP 、 置换流水车间调度问题PFSP、 混合流水车间调度问题HFSP 、零空闲流水车间调度问题NIFSP、分布式置换流水车间调度问题 DPFSP、阻塞流水车间调度问题BFSP

👇

5 往期回顾扫扫下方二维码

Logo

惟楚有才,于斯为盛。欢迎来到长沙!!! 茶颜悦色、臭豆腐、CSDN和你一个都不能少~

更多推荐