Как настроить "cost_matrix" для взвешенной категориальной кроссентропии в Keras LSTM? - PullRequest
0 голосов
/ 02 марта 2020

Я получаю следующую матрицу путаницы для своей несбалансированной многоклассовой классификации:

****************************
| MODEL PERFORMANCE REPORT |
****************************
Average F1 score = 0.71.
Balanced accuracy score = 0.48.
Confusion matrix
[[29884   246     5  3497]
 [    0   262    21  5217]
 [    0   244    19  4914]
 [    1   435    29 15397]]
Other metrics
              precision    recall  f1-score   support

           0       1.00      0.89      0.94     33632
           1       0.22      0.05      0.08      5500
           2       0.26      0.00      0.01      5177
           3       0.53      0.97      0.69     15862

    accuracy                           0.76     60171
   macro avg       0.50      0.48      0.43     60171
weighted avg       0.74      0.76      0.71     60171

Для разработки модели LSTM в Керасе я использую матрицу затрат, как предложено в этой проблеме на GitHub :

cost_matrix = np.ones((num_classes, num_classes))
cost_matrix[1, 3] = 4.5
cost_matrix[2, 3] = 4.5
cost_matrix[3, :] = 3.0

optimizer = Adam(clipnorm=0.001, lr=0.001)  # clipvalue=0.5, 

model.compile(loss = WeightedCategoricalCrossentropy(cost_matrix),  # "categorical_crossentropy",
            metrics = [WeightedCategoricalAccuracy(cost_matrix)],  # ["accuracy"],
            optimizer = optimizer
           )

Независимо от того, как я изменяю cost_matrix для классов 1 и 2, оно всегда выглядит аналогично тому, что показано выше.

Есть предложения, как поступить с этой проблемой?

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