在h2o深度学习中对噪音进行评分

时间:2018-03-27 06:55:35

标签: python deep-learning h2o scoring

我使用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

  • 1)我尝试使用Tanh而不是整流器与[8]隐藏的神经元,但噪音仍然存在,所以它可能不是由于数值不稳定。

Scoring history 43-8-1 ; Activation=Tanh ; epochs=2600

  • 2)然后我尝试添加一些隐藏的神经元([100,100])并仍然使用Tanh。我还有很多噪音:

Scoring history 43-100-100-1 Tanh

  • 3)我尝试使用随机森林和渐变提升默认参数,scoring_history看起来不错:

Scoring history Random forest

Scoring history GBM

是否有人对我的得分历史有所解释?

1 个答案:

答案 0 :(得分:0)

学习正在缩小最佳权重集,有时会超调。但是,正如你所说,你的图表非常嘈杂。

当你说你的网络是43-8-1时,你的意思是你给hidden作为[43,4,1],或者你隐藏为[8]?

如果是前者,请记住H2O试图提供帮助,因此输出层(1个神经元,当你正在进行回归)和输入层(43个神经元,如果所有数据都是数字,否则更多)都是为你创建的。

如果是后者,[2][8]的数字非常低,可能太少(而且图层太少)无法生效(当然,取决于您的数据)。

无论是前者还是后者,您是否尝试过更多神经元?例如。默认值为[200,200]?显然每个时代需要更多时间,但现在得分历史更顺畅了吗?

我可以想象,只有少数神经元可以让训练得分变得非常跳跃。

但如果不是这样的话,我在看到数字不稳定时会看到嘈杂的得分历史图表。所以你可以尝试从Rectifier切换到Tanh。

更一般地说,值得首先构建全默认模型,作为比较的基线;特别是我要避免接触rho,学习率,动量等.H2O可以很好地为它们选择默认值。