У меня проблема регрессии, и я настроил многослойную нейронную сеть с помощью Keras. В исходном наборе данных было 286 функций, и с использованием 20 эпох NN сходилась к потере MSE ~ 0,0009. Это использует оптимизатор Адама.
Затем я добавил еще три функции, и, используя ту же конфигурацию, NN не будет сходиться. После 1 эпохи он застревает с потерей 0,003, что значительно хуже.
Убедившись, что новые функции представлены правильно, я безуспешно пробовал следующее:
Вот моя первоначальная конфигурация:
model = Sequential()
model.add(Dense(300, activation='relu',
input_dim=training_set.shape[1]))
model.add(Dense(100, activation='relu'))
model.add(Dense(100, activation='relu'))
model.add(Dense(1, activation='linear'))
model.compile(optimizer='Adam',loss='mse')
У кого-нибудь есть идеи?
Это числовые функции, и я масштабировал их так же, как и другие числовые функции. Я попробую их масштабировать и посмотреть, имеет ли это значение.
несколько вопросов: 1. это регресс таймсерии? 2. соответствуют ли три новые функции тому, что вы пытаетесь предсказать? 3. Сколько тренировочных данных у вас есть? Данные высокой размерности требуют большего количества обучающих данных, модели b / c пострадают от проклятия размерности
Я пытаюсь предсказать, сколько времени займет поездка из одной части города в другую, и модель действительно включает временные ряды. Добавленные мною функции были связаны с самым быстрым маршрутом, то есть кратчайшим расстоянием, самым быстрым временем в пути и количеством «шагов». У меня ~ 1,5 млн строк обучающих данных
Возможно, у вас слишком много нерелевантных функций, вы можете попробовать добавить регуляризацию L1, чтобы сделать выбор функций.
какого типа 3 новые функции? Значительно ли отличаются значения характеристик от первых 286 функций? Возможно, вам нужно по-другому нормализовать / стандартизировать ввод с помощью недавно добавленных функций.