Я получаю следующую матрицу путаницы для своей несбалансированной многоклассовой классификации:
****************************
| 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, оно всегда выглядит аналогично тому, что показано выше.
Есть предложения, как поступить с этой проблемой?