Обзор оценки индикаторных функций для различных сценариев классификации в sklearn

искусственный интеллект scikit-learn
Обзор оценки индикаторных функций для различных сценариев классификации в sklearn

Это 15-й день моего участия в ноябрьском испытании обновлений. Узнайте подробности события:Вызов последнего обновления 2021 г.

В склеарне,sklearn.metricsНекоторые функции потерь, подсчета очков и полезности реализованы в модуле для измерения эффективности классификации. Для некоторых метрик могут потребоваться оценки вероятности для положительных классов, значений достоверности или значений бинарного решения. И большинство функций реализованы таким образом, чтобы каждая выборка вносила взвешенный вклад в общую оценку с помощью параметра sample_weight.

Давайте кратко представим функции индикатора оценки модели, реализованные sklearn для различных сценариев классификации.

Метрики оценки для сценариев бинарной классификации

Вот некоторые описания функций, ограниченные сценариями бинарной классификации:

функция описывать
precision_recall_curve(y_true, probas_pred, *) Вычислите пары точность-отзыв на основе различных порогов вероятности.
roc_curve(y_true, y_score, *[ pos_label, …]) Рассчитайте кривую ROC.
det_curve(y_true, y_score[ pos_label, …]) Рассчитайте частоту ошибок при различных пороговых значениях вероятности.

Метрики оценки для бинарных и мультиклассовых сценариев

Вот некоторые описания функций, которые также можно использовать в сценариях с несколькими классами (и также можно использовать в двоичных сценариях):

функция описывать
balanced_accuracy_score(y_true, y_pred, *[ …]) Рассчитать точность балансировки.
В сценариях бинарной и мультиклассовой классификации сбалансированная точность используется для работы с несбалансированными наборами данных. Он определяется как среднее значение отзыва, полученного в каждом классе.
cohen_kappa_score(y1, y2, *[ метки, …]) Рассчитайте коэффициент Каппа, статистический показатель согласия между экспертами.
confusion_matrix(y_true, y_pred, *[ …]) Рассчитайте матрицу путаницы, чтобы оценить точность классификации.
hinge_loss(y_true, pred_decision, *[ …]) Рассчитайте среднюю потерю петли (нерегуляризованную). Функцию потерь шарнира можно использовать для классификации «максимальной маржи», и ее наиболее известным применением является функция потерь для SVM.
matthews_corrcoef(y_true, y_pred, *[ …]) Рассчитайте коэффициент корреляции Мэтьюса (MCC).
top_k_accuracy_score(y_true, y_score, *[ …]) Вычислите точность TOP_k, которая подсчитывает количество раз, когда правильная метка находится среди k лучших предсказанных меток (ранжированных по оценке предсказания). Обратите внимание, что случай с несколькими метками здесь не рассматривается.

Метрики оценки для бинарных сценариев, сценариев с несколькими классами и несколькими метками

Ниже приведены некоторые описания функций, которые также можно применять к сценариям с несколькими метками (можно применять как к двоичным сценариям, так и к сценариям с несколькими классами):

функция описывать
accuracy_score(y_true, y_pred, *[ …]) Рассчитать точность.
classification_report(y_true, y_pred, *[ …]) Создавайте текстовые отчеты, показывающие ключевые показатели классификации.
f1_score(y_true, y_pred, *[ метки, …]) рассчитатьF1F1ценность.
fbeta_score(y_true, y_pred, *, бета[ …]) рассчитатьFβ F_{\beta}ценность.
hamming_loss(y_true, y_pred, *[, sample_weight]) Рассчитайте средние потери Хэмминга.
jaccard_score(y_true, y_pred, *[ метки, …]) Рассчитайте коэффициент подобия Жаккара.
log_loss(y_true, y_pred, *[ eps, …]) Вычислите логарифмические потери, также известные как логистические потери или кросс-энтропийные потери.
multilabel_confusion_matrix(y_true, y_pred, *) Рассчитайте матрицу путаницы для каждого класса или образца.
precision_recall_fscore_support(y_true, …) Вычислите точность, полноту, F-значение и количество вхождений каждого класса в основную истину для каждого класса.
precision_score(y_true, y_pred, *[ метки, …]) Рассчитать точность.
recall_score(y_true, y_pred, *[ метки, …]) Рассчитать отзыв.
roc_auc_score(y_true, y_score, *[ среднее, …]) Рассчитайте площадь под кривой ROC (AUC) на основе прогнозируемых оценок.
zero_one_loss(y_true, y_pred, *[ …]) Вычисляет потери 0-1, подходит для задач классификации.

Метрики оценки для сценариев двоичной и многокомпонентной классификации

Есть также некоторые описания функций для сценариев бинарной и многоуровневой классификации (но не для сценариев с несколькими классами):

функция описывать
average_precision_score(y_true, y_score, *) Вычисляет среднюю точность (AP) на основе оценки прогноза, которая представляет собой значение от 0 до 1, чем выше, тем лучше.

Некоторые пояснения от бинарной классификации к многоклассовой и многоуровневой классификации

Некоторые метрики изначально определены для задач бинарной классификации (например,f1_score,roc_auc_score). По умолчанию оцениваются только положительные метки, и мы предполагаем, что положительный класс по умолчанию помечен 1 (хотя это можно сделать с помощьюpos_labelпараметры для настройки).

При расширении метрики оценки бинарной классификации до задач классификации с несколькими классами или метками данные обрабатываются как набор задач бинарной классификации, где каждый класс является элементом набора. (То есть многоклассовая или многоуровневая классификация основана на наборе двух классификаций. Для каждой метки это двухклассовая модель. Например, есть три классификации: красная, желтая и синяя. Если красная — положительная метка, желтый и синий — отрицательная метка, и на ее основе обучается модель. Если желтый — положительная метка, а красный и синий — отрицательные метки, модель обучается на ее основе.)

В sklearn есть много методов для усреднения бинарных метрик в наборе классов, каждый из которых может быть полезен в определенных ситуациях. Там, где это возможно, вы должны использоватьaverageпараметр в {macro,micro,weighted,samples,None} выбирать.

  • macro: Среднее значение макроса, сначала вычислите баллы, когда каждый класс считается положительным, а затем вычислите среднее значение (каждому классу присваивается равный вес). В задачах, где менее распространенные классы по-прежнему важны, усреднение макросов может быть средством выделения их производительности. С другой стороны, если предположить, что все категории одинаково важны, это часто неверно, потому что макроусреднение делает чрезмерный акцент на эффективности необычных категорий.
  • weighted: средневзвешенное значение, из вышеизложенного мы знаем, что одна проблема с макроэкономическим средним заключается в том, что этот метод расчета не учитываетДисбаланс категорий, потому что последнее делениеКоличество категорийзначитКаждая категория считается равной, при этом возможноНекоторые категории имеют большое количество прогнозов, а некоторые категории имеют небольшое количество прогнозов.. Взвешенная оценка является улучшением этого, веса оценок, рассчитанных для каждой категории, больше не1/Количество категорий, но вy_trueдоли каждой категории.
  • micro: Среднее микро, при расчете точности и отзыва все классы напрямую объединяются для расчета. Принимая точность в качестве примера, при расчете сначала возьмите сумму предсказанных правильных TP, когда каждый тип используется в качестве положительного.Разделить наСумма TP+FP, когда каждый тип является положительным. Микроусреднение часто используется в сценариях классификации с несколькими метками или в сценарии классификации с несколькими классами, где большинство классов игнорируется.
  • samples: выборочное среднее, только для задач классификации с несколькими метками. Вместо вычисления метрик для каждого класса он вычисляет метрики для истинного и предсказанного классов для каждой выборки в данных оценки и возвращает их среднее значение.
  • None:когдаaverage=None, возвращает массив, содержащий баллы (точность, полнота и т. д.) для каждого класса.

Кроме того, для модели бинарной классификацииaverageТакже можно выбрать параметрыbinary.

когдаaverage=binaryслучае, вход вy_trueиy_predвсе двоичные (только 0 и 1) и относятся к другому параметру функции подсчета очковpos_label,pos_labelобозначен какpositive_labelЗначение по умолчанию равно 1, то есть 1 считается значением по умолчанию.positive.average=binaryзаключается в расчете только заданногоpos_labelточность, полнота и т.

Примечание:

Когда метрики предоставляются для данных с несколькими категориями, например, целевое значение является двоичным, обычно метки классов задаются в виде массива, а для данных с несколькими метками они указываются как индикаторная матрица, где, если образец i имеет метку j , ячейка [i, j] имеет значение 1, в противном случае значение равно 0.

Справочная документация