我使用Python进行深度学习。我的问题是时间序列预测问题,因为我想预测太阳黑子数量的演变。以下是自1749年以来太阳黑子的所有价值:http://www.sidc.be/silso/DATA/SN_ms_tot_V2.0.txt。
我想使用43个月的滑动窗口,因此我的数据集现在由44列和3170行组成(我想要预测的值是第44个,基于上个月的第43个月)。
我的数据如下:
135.90,137.90,140.20,143.80,146.40 ... 68.10,63.60,60.40
137.90,140.20,143.80,146.40,147.90,... 63.60,60.40,61.10
140.20,143.80,146.40,147.90,148.40,... 60.40,61.10,59.70
... 的
99.0,104.6,107.0,106.9,107.6,...... 27.80,26.50,25.70
我已将数据集划分为训练(前80%行)和验证(最后20%)。请参阅下面的代码:
import h2o
from h2o.estimators.deeplearning import H2ODeepLearningEstimator
h2o.init()
test=h2o.import_file("validationSet_43month.txt")
train=h2o.import_file("trainingSet_43month.txt")
l=train.shape[1]
x=train.names[0:l-1]
y=train.names[l-1]
Factiv="Tanh"
HiddenLayer=[100,100]
Nepochs=2000
model=H2ODeepLearningEstimator(
activation=Factiv,
hidden=HiddenLayer,
epochs=Nepochs,
reproducible=True,
stopping_rounds=0, #I want to see an eventual overfitting on scoring history
seed=123456789)
model.train(x=x,y=y,training_frame=train,validation_frame=test)
我想绘制得分历史以便知道要使用的最佳时期数,但我的得分历史似乎有很多噪音,有峰值(见图片)。 Scoring history on 10,000 epochs
zoom on 2,000 epochs for validation deviance
我以为我会得到这种类型的得分历史: Normal scoring history
Scoring history 43-8-1 ; Activation=Tanh ; epochs=2600
Scoring history 43-100-100-1 Tanh
是否有人对我的得分历史有所解释?
答案 0 :(得分:0)
学习正在缩小最佳权重集,有时会超调。但是,正如你所说,你的图表非常嘈杂。
当你说你的网络是43-8-1时,你的意思是你给hidden
作为[43,4,1],或者你隐藏为[8]?
如果是前者,请记住H2O试图提供帮助,因此输出层(1个神经元,当你正在进行回归)和输入层(43个神经元,如果所有数据都是数字,否则更多)都是为你创建的。
如果是后者,[2]
和[8]
的数字非常低,可能太少(而且图层太少)无法生效(当然,取决于您的数据)。
无论是前者还是后者,您是否尝试过更多神经元?例如。默认值为[200,200]
?显然每个时代需要更多时间,但现在得分历史更顺畅了吗?
我可以想象,只有少数神经元可以让训练得分变得非常跳跃。
但如果不是这样的话,我在看到数字不稳定时会看到嘈杂的得分历史图表。所以你可以尝试从Rectifier切换到Tanh。
更一般地说,值得首先构建全默认模型,作为比较的基线;特别是我要避免接触rho,学习率,动量等.H2O可以很好地为它们选择默认值。