Могут ли Precision, Recall и F1 иметь одинаковые значения? - PullRequest
0 голосов
/ 07 января 2019

В настоящее время я работаю над проблемой классификации ML и вычисляю Precision, Recall и F1, используя следующий импорт библиотеки sklearn и соответствующий код, как показано ниже.

from sklearn.metrics import precision_recall_fscore_support

print(precision_recall_fscore_support(y_test, prob_pos, average='weighted'))

Результаты

0.8806451612903226, 0.8806451612903226, 0.8806451612903226

Существует ли возможность получить одно и то же значение для всех 3, точности, отзыва и F1 для задачи классификации ML?

Любые разъяснения в этом отношении будут высоко оценены.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Это, кажется, из-за опции - средняя = 'взвешенная'

См. https://scikit -learn.org / stable / modules / Генерируемый / sklearn.metrics.precision_recall_fscore_support.html

'взвешенным': Рассчитайте метрики для каждой метки и найдите их средневзвешенные значения по поддержке (количество истинных экземпляров для каждой метки). Это изменяет «макрос», чтобы учесть дисбаланс меток; это может привести к F-значению, которое не находится между точностью и отзывом.

0 голосов
/ 07 января 2019

Да, это возможно. Давайте предположим, двоичная классификация с

Pr = TP  / (TP + FP); Re = (TP + FN); F1 = 2TP / (2TP + FP + FN)

Тривиальное решение для Pr = Re = F1 - TP = 0. Таким образом, мы знаем, что точность, отзыв и F1 могут иметь одинаковое значение в целом. Теперь это не относится к вашему конкретному результату. Если мы решаем систему уравнений, мы находим другое решение: FP = FN. Таким образом, если количество ложных срабатываний равно количеству ложных отрицаний, все три показателя имеют одинаковые значения.

Для задач мультиклассовой классификации у нас есть

F1 = 2 * (Pr * Re) / (Pr + Re)

Если Pr = Re, снова все три метрики идентичны.

...