核心内容摘要
蜜桃初绽:舌尖上的甜蜜诗篇
BP神经网络信息新陈代谢模型
BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络是应用最广泛的神经网络模型之一。
程序内容丰富预测效果好方便学习和推广
根据预测结果更新原始数据构成BP神经网络信息新陈代谢模型预测效果好坐在工位上盯着股票走势图发呆的时候总想着要是能预测未来数据该多好。
这不最近折腾了个带自动换血功能的BP神经网络模型效果还真有点意思。
咱们今天就来聊聊这个会新陈代谢的智能预测器。
先上段能跑的代码热热身。
用Python的Keras搭个基础版BP网络预测正弦曲线这种经典案例够直观from keras.models import Sequential from keras.layers import Dense import numpy as np x np.linspace(0, 4*np.pi,
y np.sin(x) np.random.normal(0,
1,
model Sequential() model.add(Dense(16, activationrelu, input_dim
) # 隐藏层别吝啬节点数 model.add(Dense(
) model.compile(optimizeradam, lossmse) # 训练时记得shuffle打乱数据顺序 history model.fit(x, y, epochs200, batch_size32, verbose
这段代码里有个小机关——第5行加的正态分布噪声。
千万别手软适度的噪声能让模型更健壮毕竟真实世界的数据哪有什么完美曲线。
隐藏层用了16个节点这个数不是拍脑袋来的输入输出都是单维度的情况下通常取2的N次方比较吃得开。
重点来了传统BP网络训练完就定型了但现实中的数据可是流动的活水。
于是搞了个数据滚动的机制def data_metabolism(old_data, new_pred, keep_ratio
0.
: # 保留70%旧数据拼接最新预测值 cutoff int(len(old_data)*keep_ratio) return np.concatenate([old_data[cutoff:], new_pred])这个函数就像给模型装了消化系统每次预测后把最早30%的旧数据替换成最新预测结果。
注意keep_ratio别设太高不然数据更新太慢容易过时但太低又会丢失历史特征
6~
8这个区间亲测比较稳。
BP神经网络信息新陈代谢模型
BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络是应用最广泛的神经网络模型之一。
程序内容丰富预测效果好方便学习和推广
根据预测结果更新原始数据构成BP神经网络信息新陈代谢模型预测效果好实际使用时得配合滑动窗口举个气温预测的例子window_size 100 for _ in range(
: # 模拟10次数据更新 current_window data[-window_size:] # 取最后100个数据点 model.fit(current_window[:-10], current_window[10:], epochs
# 预测未来10步 new_pred model.predict(current_window[-10:]) # 拿最新10个点预测下个10步 data data_metabolism(data, new_pred.flatten())这里藏着两个细节
每次用窗口最后10%的数据做预测输入符合时间序列的连续性
训练时让模型学习用前90步预测后10步这种走马灯式训练能让模型逐步适应长期模式。
测试时拿某光伏电站的发电数据折腾了把传统BP的预测误差大概在8%左右加上新陈代谢机制后直接压到5%以内。
更妙的是面对突发的天气变化模型调整速度比固定数据集的版本快了近40%这大概就是吃新鲜数据的好处吧。
当然这法子也不是万金油遇到数据分布突变的情况还是得人工介入。
不过在日常的股票预测、能耗分析这些场景里已经能帮咱们省不少事了。
下次要是看到哪家量化团队招人要求会呼吸的神经网络说不定他们就在用类似的套路呢。