首页 文章

在h2o深度学习中用噪声评分历史

提问于
浏览
1

我在Python中使用h2o Deep Learning . 我的问题是时间序列预测问题,因为我想预测太阳黑子数量的演变 . 以下是自1749年以来太阳黑子的所有 Value :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,149.90,...... 63.60,60.40,61.10

140.20,143.80,146.40,149.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)

我想绘制得分历史以便知道要使用的最佳时期数,但我的得分历史似乎有很多 noise, with peaks (见图片) . 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

Does anybody have an explanation for the look of my scoring history ?

1 回答

  • 0

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

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

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

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

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

    我可以想象,只有少数神经元可以让训练得分变得非常激动 .

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

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

相关问题