Функция потери Hyperas для задачи регрессии

#python #machine-learning #keras #regression #hyperas

#python #машинное обучение #keras #регрессия #hyperas

Вопрос:

Я построил модель с использованием Keras для решения задачи регрессии. Я хочу выполнить оптимизацию гиперпараметров для этой модели. В качестве показателей я использовал val_mean_absolute_error . В примере рассматривается только проблема классификации (доступна на https://github.com/maxpumperla/hyperas)

 validation_acc = np.amax(result.history['val_acc']) 
print('Best validation acc of epoch:', validation_acc)
return {'loss': -validation_acc, 'status': STATUS_OK, 'model': model}
  

Как адаптировать этот код для задачи регрессии (для использования val_mean_absolute_error в качестве метрики)?

Ответ №1:

Для задач регрессии мы обычно не определяем отдельную метрику, используя саму потерю для оценки производительности модели (чем ниже, тем лучше); итак, предполагая, что вы используете mae в качестве потери, и вы скомпилировали свою модель как

 model.compile(loss='mae', optimizer={{choice(['rmsprop', 'adam', 'sgd'])}})
  

вот как вы должны изменить код из связанного примера:

 #get the lowest validation loss of the training epochs
validation_loss = np.amin(result.history['val_loss']) 
print('Best validation loss of epoch:', validation_loss)
return {'loss': validation_loss, 'status': STATUS_OK, 'model': model}
  

Это правда, что некоторые люди добавляют аргумент компиляции для metrics=['mae'] в подобных случаях, но в этом нет необходимости.