Как я могу узнать, хорошо ли работает моя нейронная сеть или нет Mean_Square_Error (Keras) - PullRequest
1 голос
/ 28 января 2020

Я использую Keras и пытаюсь построить нейронную сеть для прогнозирования процентной ставки по данным. Данные выглядят так:

    loan_amnt   annual_inc  emp_length  int_rate
    10000    38000.0         5.600882          12.40
    13750    17808.0         5.600882          28.80
    26100    68000.0         10.000000         20.00
    13000    30000.0         1.000000          20.00
    7000     79950.0         7.000000          7.02

Функции (X): loan_amnt, annual_inc и emp_length. Цель (y): int_rate.

Вот мой процесс и то, что я сделал после нормализации данных:

      #Building out model
     model = Sequential([
     Dense(9, activation='relu', input_shape=(3,)),
     Dense(3, activation='relu'),
     Dense(1, activation='linear'),
     ])

      #Compiling model
      model.compile(loss='mean_absolute_percentage_error',
              metrics=['mse'],
              optimizer='RMSprop')

       hist = model.fit(X_train, Y_train,
          batch_size=100, epochs=20, verbose=1)

Вот пример выходных данных после выполнения model.fit():

    Epoch 1/20
    693/693 [==============================] - 1s 905us/step - loss: 96.2391 - mean_squared_error: 
    179.8007
    Epoch 2/20
    693/693 [==============================] - 0s 21us/step - loss: 95.2362 - mean_squared_error: 
    176.9865
    Epoch 3/20
    693/693 [==============================] - 0s 20us/step - loss: 94.4133 - mean_squared_error: 
    174.6367

Наконец, оценивая модель model.evaluate(X_train, Y_train) и получив следующий результат:

      693/693 [==============================] - 0s 372us/step
      [77.88501817667468, 132.0109032635049]

Вопрос в том, как узнать, хорошо ли работает моя модель, и как можно прочитать цифры?

Ответы [ 2 ]

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

Вы не должны проверять точность своей модели, используя данные обучения, потому что это делает ваше решение склонным к переоснащению. Вместо этого вам следует отложить некоторые данные (20% - это то, что я обычно использую) для проверки ваших результатов.

Если вы планируете много тестировать, вам следует отложить третий набор данных только для тестирования окончательного решения.

Вы также можете использовать перекрестную проверку k_folds, где вы тренируете набор для части данных, а остальные - для его оценки, но делаете это несколько раз, чтобы лучше понять, насколько точна ваша модель.

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

Вы используете вариант потери MSE, который определяется как:

MSE = mean((y_true - y_pred)^2)

Поэтому, когда у вас есть 132. в качестве метрики MSE, тогда вы действительно имеете среднее значение sqrt(132.) ~ = 11,5 означает разницу между y_true и y_pred. Это довольно мало для ваших данных, так как это показано для потери MSPE, у вас ошибка ~ 78% в ваших данных.

Например, если y_true было 20, вы могли бы либо предсказать 36 или 4. Что-то в этом роде.

Вы можете сказать, что ваша ошибка хороша, когда MSPE составляет 10%. Зависит от вашего случая

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