关于数据驱动建模,我的思考

本文探讨了数据驱动建模在电力工业中的意义,特别是在处理复杂系统和非线性问题时的优势。通过神经网络,如LSTM,可以建立电气量之间的复杂关系模型,以应对难以用传统数学表达式描述的过程。然而,模型的泛化性能和过拟合问题仍然是需要解决的关键挑战,需要不断尝试和优化来提高模型的准确性和可靠性。
摘要由CSDN通过智能技术生成

笔者最近在做一些电力工业里的数据驱动建模的研究,并且做了一个基于LSTM神经网络时序预测的模型,等我把这个模型完善了,会将数据和模型开源出来。

不过在我和老师交流的时候,老师让我思考下什么是数据驱动建模,做这个的意义是什么,它能对我们的学科发展或者是工业带来什么有益的作用,于是我阅读了一些文献,目的就是搞清楚我们在复杂系统里做数据驱动建模的意义是什么。

首先引用一篇综述里的一段话:蒲天骄,陈盛,赵琦,王新迎,张东霞.能源互联网数字孪生系统框架设计及应用展望[J].中国电机工程学报,2021,41

蒲老师是看论文的时候遇见的老熟人了,中国电科院的人工智能所所长,专家教授,IEEE 会士,大家想做人工智能和电力系统结合区间的可以看看他写的综述,高瞻远瞩,很有参考价值。

关于数据驱动建模,这里是这么描述的: 数字孪生体可从多维度、多空间尺度、及多时 间尺度对物理实体进行刻画和描述。孪生体构建是 数字孪生系统应用服务目标的第一步。 当建模对象内部物理机理明确,过程充分可观 测,可采用机理建模。若对象行为复杂、参数难以 观测、行为结果随机性强,可采用数据驱动方式建 模。如果模型训练样本有限,且可靠性要求高,则 可采用数据与知识融合,在减小样本数量的情况下 综合数据建模与机理建模优点,同时提高计算精度、 效率以及可靠性。

可见数据驱动建模是在复杂系统中对电气量关系的描述,可能这种建模没有像机理模型那种明确的表达式,但是其通过数据训练出来的人工智能算法模型,却可以很好的映射出电气量之间复杂的相关性。

为了更清楚的搞清楚这个概念,这里引用一篇学位论文:刘宇佳. 基于数据驱动的建模方法仿真研究[D].东北大学,2009

里面谈到神经网络建模的时候这样说:

与传统的建模和控制技术相比,它具有以下的优势:(1)非线性映射能力。神经网络能够充分逼近任意复杂的非线性关系。(2)具有自适应功能。神经网络有很强的白适应能力,它能不断地自适应修正网络权值,学习与适应严重不确定性系统的动态特性。(3)具有泛化功能。它能够处理那些未经训练过的数据,从而获得相应于这些数据的合适解答。同样,它能够处理那些有噪声或不完全的数据,从而显示了很好的容错能力。(4)适用于多变量系统。神经网络可多输入多输出的自然结构为其处理多变量问题提供了方便条件。

我的思考

另外,再阅读文献的过程中,我逐渐发现了数据驱动建模的意义所在:

对于电力工业中一些难以用数学表达式描述的过程,比如涉及到电力电子设备一个极小的开关周期,一些无法计入计算的漏感,一些无法解耦的耦合,一些杂散参数的动态过程,一些非线性元件难以计及的性质,一些发热温度变化带来的参数改变,甚至是多系统混连导致的时间尺度差异下的复杂模型,都可以通过神经网络的方法,完成这些数学公式难以描述的复杂过程的建模,我们不用关心中间过程,只需要关心其输入和输出的映射关系,就足够构建一个比较精准的模型了,在这里如果引入“预测”两个字,会让这个概念更加晦涩难懂,所以我打算说,映射,输入输出之间复杂的无法用数学表达式描述的关系,那么你可否可以这样理解?由当前时刻(可能是微秒级)的输入,得到下一时刻(同样是微秒级)的输出,这是不是就是我们所需要的x(t+1)=f(x(t))的关系呢?

我们要构建这样的模型,说实在的真是容易得多了,相比与复杂的小信号分析和根轨迹计算,我们只需要获得数据集,这个数据集包含一些输入量,也就是检测到的数据,和一个输出量,这个是下一时刻的某输入量,构建时序预测模型,不就可以了吗?

当然,这里面的问题在于:泛化性能和过拟合问题,就拿我目前做的这个项目为例,模型在部分预测结果上表现得非常良好,但是在部分特征的预测上存在“形状对但数值错”的情况,这种情况该怎么解决呢?我觉得可能是归一化的问题,经过数次修改评价函数、归一化方法、正则项、激活函数和神经网络结构后,却总是无法根本性的解决这个问题,那么后面我们该怎么做?我觉得可能还需要更多的尝试和实验,不过我相信,这些问题不是根本问题,是可以解决的问题。

欢迎做数据驱动建模的朋友来探讨!

### 使用神经网络进行数据驱动建模的方法 #### 方法概述 数据驱动建模方法主要依赖于大量的观测数据来进行系统的描述和预测。这种方法不需要详细的物理机制假设,而是通过机器学习中的神经网络来捕捉输入输出之间的复杂关系[^3]。 #### 构建过程 1. **数据收集** 收集足够的历史数据用于训练模型是非常重要的一步。这些数据应该覆盖尽可能广泛的操作条件以确保泛化能力良好。对于某些特定应用领域,比如交通流量监控,可能还需要考虑如何有效地融合来自不同源的数据,如稀疏分布的传感器读数与宏观层面的状态估计结果相结合[^4]。 2. **预处理** 对采集来的原始数据执行必要的清理、标准化以及特征提取操作。这有助于提高后续训练过程中模型的学习效率并减少过拟合的风险。 3. **选择合适的架构** 根据具体应用场景选取适合类型的神经网络结构。例如,在时间序列分析任务中可以选择循环神经网络(RNN),而在图像识别方面则更倾向于采用卷积神经网络(CNN)。此外,针对传统BP网络存在的局限性,也可以尝试改进后的版本或其他高效算法,像Levenberg-Marquardt优化法就被证实能有效提升混凝土强度预测任务下的性能表现[^5]。 4. **训练与验证** 利用准备好的数据集对选定的网络进行多次迭代式的参数调整直至达到满意的精度水平;同时要留出一部分独立样本用来评估最终得到模型的实际效果,并据此做出相应修改完善。 5. **部署实施** 完成上述步骤之后就可以将所开发出来的解决方案应用于实际环境中了。不过需要注意的是,随着新情况不断涌现,定期更新维护仍然是必不可少的工作环节之一。 ```python import numpy as np from sklearn.model_selection import train_test_split from keras.models import Sequential from keras.layers import Dense, LSTM # 假设我们有一个简单的时序数据集 X 和对应的标签 y X = np.random.rand(1000, 10, 1) # 1000个样本,每个样本长度为10的时间步长 y = np.random.randint(2, size=(1000,)) # 二分类问题的目标值 # 将数据分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y) # 创建一个基础版LSTM模型 model = Sequential() model.add(LSTM(units=50, input_shape=(X.shape[1], X.shape[2]))) model.add(Dense(1, activation='sigmoid')) # 编译模型 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # 训练模型 history = model.fit(X_train, y_train, epochs=10, batch_size=64, validation_data=(X_test, y_test)) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值