Keras sample_weight для поезда и проверки не улучшают классификацию меньшинств - PullRequest
0 голосов
/ 12 марта 2019

Я работаю над проблемой последовательной маркировки с несбалансированными классами. Я использую keras sample_weight для улучшения обнаружения класса меньшинства, но это не помогает. Чего мне не хватает?

Мои несбалансированные выходные классы сбалансированы с class_weight:

class_weights = {0: 0.0  # ignore padding, mask_zero = True
                 1: 1.6
                 2: 0.44
                 3: 11.0
train_sample_weight = np.array([class_weights[cls] for cls in y_train])
val_sample_weight = np.array([class_weights[cls] for cls in y_val])

Я устанавливаю необходимые параметры в model.compile и model.fit

model.compile(optimizer="rmsprop", 
         loss="categorical_crossentropy", 
         sample_weight_mode="temporal", metrics=["accuracy"])

model.fit(X_train, y_train, batch_size=32, epochs=20,
         sample_weight=train_sample_weight,
         validation_data=[X_val, y_val, val_sample_weight])

Но мои результаты классификации не меняются. Для меня важен 1 класс. Хочу улучшить его обнаружение.

С весом образца:

              precision    recall  f1-score   support

           0       0.00      0.00      0.00         0
           1       0.54      0.91      0.68      2354
           2       0.97      0.77      0.86      8214
           3       0.61      0.83      0.70       333

   micro avg       0.80      0.80      0.80     10901
   macro avg       0.53      0.62      0.56     10901
weighted avg       0.86      0.80      0.81     10901

[[   0    0    0    0]
 [   0 2132  209   13]
 [   1 1739 6309  165]
 [   0   42   16  275]]

без веса образца

                precision    recall  f1-score   support

           0       0.00      0.00      0.00         0
           1       0.65      0.73      0.69      2354
           2       0.91      0.89      0.90      8214
           3       0.98      0.71      0.82       333

   micro avg       0.85      0.85      0.85     10901
   macro avg       0.64      0.58      0.60     10901
weighted avg       0.86      0.85      0.85     10901

[[   0    0    0    0]
 [   1 1723  630    0]
 [   2  896 7312    4]
 [   0   29   68  236]]

Эти отчеты clf создаются на основе данных проверки. Аналогичные результаты для данных испытаний, а также для разных моделей архитектуры.

Для класса 1 я вижу, что с весами выборки отзыв выше, но точность уменьшается. В целом - f1 остается прежним.

Какой из них лучше? Я что-то упускаю, чтобы добавить лучшие результаты с весом образца? Спасибо!

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