Какие могут быть причины для высокого MAE и MSE в Керасе? - PullRequest
0 голосов
/ 23 января 2020

У меня MAE и MSE довольно высокие. Но данные обучения (не включая тестовые данные 20%) (1030, 23) случаев (после применения IQR и Z-счет). Кстати, все категориальные столбцы были полностью закодированы.

Epoch: 1900, loss:50195632.3010,  mae:3622.3535,  mse:50195636.0000,  val_loss:65308249.2427,  val_mae:4636.2290,  val_mse:65308244.0000,  

Ниже приведены мои настройки для Keras.

model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=[len(dftrain.keys())]),
    layers.Dense(64, activation='relu'),
    layers.Dense(1)
  ])

  optimizer = tf.keras.optimizers.RMSprop(0.001)

  model.compile(loss='mse',
                optimizer=optimizer,
                metrics=['mae', 'mse'])

EPOCHS = 2000

history = model.fit(
    normed_train_data, 
    train_labels,
    epochs=EPOCHS, 
    validation_split = 0.2, 
    verbose=0,
    callbacks=[tfdocs.modeling.EpochDots()])

Как вы думаете?

Ответы [ 3 ]

1 голос
/ 23 января 2020

«Высокий» MAE сам по себе относителен и варьируется в зависимости от данных, и этому может быть несколько факторов.

Если вы только начинаете, я рекомендую вам выполнить исследовательский анализ данных (EDA) и придумать функции, а также подготовить эти данные для обучения. После проверки данных попробуйте настроить параметры модели в соответствии с вашим вариантом использования. ML больше о экспериментах, чем о кодировании.

Ноутбуки, подобные этим, в Kaggle помогут вам начать работу.

  1. Модель нейронной сети для цен на жилье
  2. Комплексное исследование данных с Python
0 голосов
/ 23 января 2020

В других ответах уже упоминались некоторые хорошие моменты, но вы можете также нормализовать свои данные, если вы еще этого не сделали. NN очень чувствительны к этому . Вот некоторые методы, которые вы можете попробовать: Пакетная нормализация , Стандартный скалер или Мин-Макс Скалер .

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

Эти ссылки могут быть полезны:

  1. ссылка1
  2. ссылка2
0 голосов
/ 23 января 2020

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

Если да, то все остальное будет в определении вашей сети, используете ли вы правильную функцию потерь, layer et c?

Попробуйте Архитектура модели basi c для вашей задачи. Эта модель архитектуры basi c может быть взята из реализаций для аналогичной проблемы, обнаруженной в inte rnet. Это даст вам хорошую отправную точку.

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