Я использую h2o Deep Learning с 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)
Я хочу нарисовать историю подсчета очков, чтобы узнать оптимальное количество периодов для использования, но в моей истории подсчета очков, похоже, много шума с пиками (см. Рисунки). История подсчета очков за 10 000 эпох
увеличьте масштаб до 2000 эпох для отклонения проверки
Я думал, что вместо этого получу такой тип истории оценок: Обычная история оценок
- 1) Я попытался использовать Tanh вместо Rectifier со скрытыми нейронами [8], но шум все еще присутствует, так что это, вероятно, не из-за числовой нестабильности.
История подсчета очков 43-8-1; Активация = Танх; эпох = 2600
- 2) Затем я попытался добавить несколько скрытых нейронов ([100,100]) и по-прежнему использовать Tanh. У меня еще много шума:
История подсчета очков 43-100-100-1 Tanh
- 3) Я пробовал использовать случайный лес и усиление градиента с параметрами по умолчанию, scoring_history выглядит хорошо:
История подсчета очков Случайный лес
Есть ли у кого-нибудь объяснения того, как выглядит моя история очков?