Как выбрать параметры при построении модели для прогнозирования одного выхода из нескольких входов? - PullRequest
0 голосов
/ 27 октября 2019

Мне нужно построить модель keras для прогнозирования в будущем, используя только даты. У меня есть набор данных, который выглядит следующим образом.

date,year,month,dayofyear,dayOfMonth,dayOfWeek,week,temp
1948-01-01,1948,1,001,01,4,00,51
1948-01-02,1948,1,002,02,5,00,45
1948-01-03,1948,1,003,03,6,00,45
.
.
.
2017-10-22,2017,10,295,22,0,42,60
2017-10-23,2017,10,296,23,1,43,65

У меня есть 6 различных входных функций и 1 выход для температуры. Пока я использую этот репозиторий для прогнозирования в будущем.

https://github.com/bielrv/Keras-Daily-Sales-Forecast

В репозитории структура модели выглядит следующим образом.

model = Sequential()

model.add(Dense(128,
                activation='relu',
                input_dim = X_num_columns))

model.add(Dense(64,
                activation='relu'))
model.add(Dropout(0.2))

model.add(Dense(32,
                activation='relu'))
model.add(Dropout(0.2))

model.add(Dense(16,
                activation='relu'))
model.add(Dropout(0.2))

model.add(Dense(1,
                activation='linear'))

model.compile(optimizer='adam', loss='mean_squared_logarithmic_error', metrics=['accuracy'])

model.fit(X_train, y_train, epochs=5000, batch_size=30,validation_data=(X_val, Y_val))

Когда яМне нужно прогнозировать данные в будущем. У меня есть другой CSV-файл, подобный этому.

date,year,month,dayofyear,dayOfMonth,dayOfWeek,week
2017-10-24,2017,10,297,24,2,43
2017-10-25,2017,10,298,25,3,43
2017-10-26,2017,10,299,26,4,43
.
.
.
2017-12-12,2017,12,346,12,2,50
2017-12-13,2017,12,347,13,3,50
2017-12-14,2017,12,348,14,4,50

Модель принимает вышеуказанные данные и делает прогноз, используя dayofyear, dayofmonth и т. д.

Но когда япроверьте точность (она не превышает 0,07) и результаты прогноза. Я могу понять, что гиперпараметры неверны.

Результаты прогноза (оранжевый - истинное значение, синий - прогнозируемое значение)

Так что я не понимаю, как я собираюсь выбрать, какой слой использовать в подобной ситуации, или сколько нейронов использовать, или сколько эпох и партий будет правильным для этой структуры,Я немного потерялся. Мне нужна помощь.

1 Ответ

0 голосов
/ 27 октября 2019

Вы находитесь в настройке регрессии, где точность равна бессмысленно - это имеет смысл только в классификации настройках. См. Какая функция определяет точность в Керасе, когда потеря представляет собой среднеквадратическую ошибку (MSE)? для получения дополнительной информации (несмотря на название, она применима и к вашему случаю среднеквадратичной логарифмической ошибки).

Вы должны удалить оператор metrics=['accuracy'] из компиляции вашей модели и выполнить диагностику непосредственно с потерей .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...