Я делаю многоклассовую классификацию с несбалансированными категориями.
Я заметил, что f1 всегда меньше, чем среднее значение прямой гармоники для точности и отзыва, а в некоторых случаях, f1 даже меньше, чем для точности и отзыва.
К вашему сведению, я назвал metrics.precision_score(y,pred)
для точности и т. Д.
Мне известно о разнице микро / макро среднего значения, и я проверил, что они не являются микро, используя результаты категории precision_recall_fscore_support()
.
Не уверен, что это связано с использованием макро-среднего значения или другими причинами?
Обновлены подробные результаты, как показано ниже:
n_samples: 75, n_features: 250
MultinomialNB (альфа = 0,01, fit_prior = True)
2-кратное резюме:
1й прогон:
F1: 0.706029106029
Precision: 0.731531531532
Recall: 0.702702702703
precision recall f1-score support
0 0.44 0.67 0.53 6
1 0.80 0.50 0.62 8
2 0.78 0.78 0.78 23
avg / total 0.73 0.70 0.71 37
2й прогон:
F1: 0.787944219523
Precision: 0.841165413534
Recall: 0.815789473684
precision recall f1-score support
0 1.00 0.29 0.44 7
1 0.75 0.86 0.80 7
2 0.82 0.96 0.88 24
avg / total 0.84 0.82 0.79 38
Общее:
Overall f1-score: 0.74699 (+/- 0.02)
Overall precision: 0.78635 (+/- 0.03)
Overall recall: 0.75925 (+/- 0.03)
Определения о микро / макро-усреднении из Scholarpedia :
В классификации по нескольким меткам самый простой метод для вычисления
совокупный балл по категориям - это усреднение баллов по всем
бинарное задание Полученные оценки называются «усредненными по макросам»,
точность, F1 и т. д. Другой способ усреднения заключается в суммировании по TP, FP,
TN, FN и N сначала по всем категориям, а затем вычисляют каждое из
вышеуказанные показатели. Полученные результаты называются микро усредненными.
Макроусреднение дает равный вес каждой категории, и часто
преобладает производительность системы в редких категориях (
большинство) в степенном, как распределение. Микро-усреднение дает
равный вес для каждого документа, и часто преобладают
производительность по наиболее распространенным категориям.
Это текущий открытый выпуск в Github, # 83.
Следующий пример демонстрирует, как микро, макро и взвешенное (текущее в Scikit-learn) усреднение могут различаться:
y = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2]
pred = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 2, 0, 1, 2, 2, 2, 2]
Матрица путаницы:
[[9 3 0]
[3 5 1]
[1 1 4]]
Wei Pre: 0.670655270655
Wei Rec: 0.666666666667
Wei F1 : 0.666801346801
Wei F5 : 0.668625356125
Mic Pre: 0.666666666667
Mic Rec: 0.666666666667
Mic F1 : 0.666666666667
Mic F5 : 0.666666666667
Mac Pre: 0.682621082621
Mac Rec: 0.657407407407
Mac F1 : 0.669777037588
Mac F5 : 0.677424801371
F5 выше является сокращением для F0.5 ...