Коротко о критериях оценки эффективности модели

машинное обучение

Серия «Введение в машинное обучение» (2) — Как создать полный проект машинного обучения, часть 10!

Первые 9 статей цикла:

Эта серия статей также подходит к концу, и, наконец, это в основном содержание части оценки модели.

В области машинного обучения оценка модели очень важна.Только путем выбора метода оценки, соответствующего задаче, можно быстро обнаружить проблему модели алгоритма или процесса обучения, а модель можно оптимизировать итеративно.

Оценка модели в основном делится на два этапа: автономная оценка и онлайн-оценка. И для разных типов задач машинного обучения, таких как классификация, регрессия, сортировка и прогнозирование последовательности, выбор показателей оценки также отличается.

Эта часть оценки модели охватывает следующие аспекты:

  • показатели эффективности
  • Методы оценки модели
  • Обобщение
  • переобучение, недообучивание
  • Настройка гиперпараметров

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

  • Точность и частота ошибок
  • Точность, отзыв и F1
  • Кривая ROC и AUC
  • матрица затрат
  • Показатели производительности для задач регрессии
  • Другие показатели оценки, такие как скорость вычислений, надежность и т. д.

1. Показатели производительности

Метрика производительности относится к стандарту оценки для измерения способности модели к обобщению.

1.1 Точность и частота ошибок

Две наиболее часто используемые метрики производительности в задачах классификации — точность и ошибка.

Точность: относится к доле правильно классифицированных проб к общему количеству проб, определяемой следующим образом:

Accuracy = \frac{n_{correct}}{N}

Частота ошибок: относится к доле неправильно классифицированных проб к общему количеству проб, определяемой следующим образом:

Error = \frac{n_{error}}{N}

Частота ошибок также является ошибкой, когда функция потерь равна 0-1 потерям.

Эти два критерия оценки являются самыми простыми и интуитивно понятными показателями оценки в задачах классификации. Но у всех у них есть проблема, в случае дисбаланса классов они не могут эффективно оценить обобщающую способность модели. То есть, если в это время имеется 99 % отрицательных выборок, то, когда модель предсказывает, что все выборки являются отрицательными, она может получить точность 99 %.

В этом случаеКогда категории несбалансированы, категория с большей долей часто становится наиболее важным фактором, влияющим на показатель точности.!

В настоящее время одним из решений является замена индекса оценки, например, использование более эффективной средней точности (Среднее арифметическое точности выборки для каждого класса),который:

A_{mean}=\frac{a_1+a_2+\dots+a_m}{m}

где m — количество категорий.

Для точности и частоты ошибок код Python реализован, как показано на следующем рисунке:

def accuracy(y_true, y_pred):
    return sum(y == y_p for y, y_p in zip(y_true, y_pred)) / len(y_true)

def error(y_true, y_pred):
    return sum(y != y_p for y, y_p in zip(y_true, y_pred)) / len(y_true)

Простой пример теста бинарной классификации:

y_true = [1, 0, 1, 0, 1]
y_pred = [0, 0, 1, 1, 0]

acc = accuracy(y_true, y_pred)
err = error(y_true, y_pred)
print('accuracy=', acc)
print('error=', err)

Результат выглядит следующим образом:

accuracy= 0.4
error= 0.6

1.2 Точность, полнота, кривая P-R и F1

1.2.1 Точность и отзыв

Точность, также известная как прецизионность, являетсяДоля истинно положительных результатов среди всех прогнозируемых положительных результатов. Формула выглядит следующим образом:

P = \frac{TP}{TP+FP}

Отзыв, также известный как отзыв, относится к доле всех положительных классов, найденных классификатором. Формула выглядит следующим образом:

R = \frac{TP}{TP+FN}

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

  • TP(True Positive): количество реальных положительных классов, то есть количество образцов, классифицированных как положительные классы, которые на самом деле являются положительными классами;
  • FP(Ложноположительный): количество ложноположительных классов, то есть количество образцов, классифицированных как положительные классы, но фактически отрицательные классы;
  • FN(False Negative): количество ложноотрицательных классов, то есть количество образцов, классифицированных как отрицательные классы, но на самом деле положительные классы;
  • TN(True Negative): количество истинно отрицательных классов, то есть количество образцов, которые классифицируются как отрицательные классы и фактически отрицательные классы.

Для более наглядного описания вы можете обратиться к следующей таблице, такжематрица путаницыОпределение:

Прогноз: положительный класс Прогноз: отрицательный класс
Фактический: положительный класс TP FN
фактический: отрицательный класс FP TN

Точность и отзыв являются противоречивыми мерами.Обычно, когда уровень точности высок, уровень отзыва имеет тенденцию быть относительно низким, а когда уровень отзыва высок, уровень точности относительно низок по следующим причинам:

  • Чем выше точность, тем выше доля предсказанных положительных классов, и для этого обычноВыбирайте только надежные образцы. Самое простое — выбрать только наиболее уверенную выборку, в это времяFP=0,P=1,ноFNОн должен быть очень большим (если вы не уверены, класс будет оценен как отрицательный), а коэффициент отзыва будет очень низким;
  • Скорость отзыва высокая, то есть нужно найти все положительные классы, для этого проще всегоВсе категории оценены как положительные,ТакFN=0,ноFPОн тоже очень большой, а точность у всех очень низкая.

И разные вопросы имеют разные показатели оценки, такие как:

  • Для рекомендательных систем упор делается на точность. Другими словами, есть надежда, что рекомендуемые результаты - это результаты, которые интересуют пользователя, то есть доля информации, которая интересует пользователя, выше, потому что окно, отображаемое для пользователя, обычно ограничено, обычно может отображаться только 5 или 10, поэтому больше требуется рекомендовать пользователю информацию, представляющую неподдельный интерес;
  • Для медицинских диагностических систем основное внимание уделяется отзыву. То есть есть надежда, что больных с любым заболеванием не упустят, а если их упустить, то лечение больного может затянуться и его состояние ухудшится.

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

def precision(y_true, y_pred):
    true_positive = sum(y and y_p for y, y_p in zip(y_true, y_pred))
    predicted_positive = sum(y_pred)
    return true_positive / predicted_positive
def recall(y_true, y_pred):
    true_positive = sum(y and y_p for y, y_p in zip(y_true, y_pred))
    real_positive = sum(y_true)
    return true_positive / real_positive

Простой тестовый пример и вывод следующие:

y_true = [1, 0, 1, 0, 1]
y_pred = [0, 0, 1, 1, 0]

precisions = precision(y_true, y_pred)
recalls = recall(y_true, y_pred)

print('precisions=', precisions) # 输出为0.5
print('recalls=', recalls)       # 输出为 0.3333
1.2.2 Кривая P-R и F1

Во многих случаях мы можем сортировать образцы в соответствии с результатами прогнозирования классификатора.Чем выше классификатор, тем больше уверенности, что это положительный образец, а последний - это образец, который классификатор считает наименее вероятно, будет положительным классом.

Вообще говоря, этот результат прогнозирования на самом деле является уверенностью классификатора в оценке образца как определенной категории.Мы можем выбрать разные пороговые значения, чтобы настроить вывод классификатора для определенного образца.Например, если порог установлен на 0,9, тогда только достоверность. Только образцы, превышающие или равные 0,9, будут окончательно признаны положительными, а остальные - отрицательными.

Когда мы устанавливаем разные пороги, мы, естественно, получаем разное количество положительных и отрицательных классов, а затем вычисляем точность и скорость отзыва по очереди для разных ситуаций, и тогда мы можемС точностью по вертикальной оси и напоминанием по горизонтальной оси нарисуйте «кривую P-R».,Как показано ниже:

来自西瓜书

Конечно, приведенная выше кривая идеальна, а будущий рисунок удобен и красив.Реальное положение показано на следующем рисунке:

Для кривой P-R существуют:

1.Кривая сверху слева(0,1)в правом нижнем углу(1,0)Тенденция просто отражает, что показатель точности и показатель отзыва представляют собой пару противоречивых показателей., один высокий, а другой низкий:

  • Начните с высокой точности, так как порог установлен очень высокий, прогнозируется, что только первая выборка (классификатор, скорее всего, будет положительным классом) будет положительным классом, а все остальные - отрицательными классами, поэтому уровень точности высок, почти 1 , а скорость отзыва почти равна 0, найден только 1 положительный класс.
  • В правом нижнем углу скорость отзыва очень высока, а точность очень низка., в это время порог установлен на 0, поэтому классы прогнозируются как положительные классы, все положительные классы найдены, скорость отзыва высока, а уровень точности очень низок, поскольку большое количество отрицательных классов прогнозируется как позитивные занятия.

2.P-RКривая может очень интуитивно показать точность и полноту классификатора в выборке. Таким образом, вы можете сравнить производительность двух классификаторов на одном и том же тестовом наборе.P-RКривые для сравнения их классификационных способностей:

  • Если классификаторBизP-RКривая классифицируетсяAКривая полностью закрыта, как показано на левом рисунке ниже, можно сказать, чтоAпроизводительность лучше, чемB;
  • Если это правильное изображение ниже, кривые двух пересекаются, трудно напрямую судить о плюсах и минусах двух классификаторов, и их можно сравнивать только по конкретной точности и отзыву:
    • Разумным основанием являетсясравниватьP-RРазмер области под кривой, что в определенной степени характеризует долю классификатора, достигающего «двойного максимума» по точности и полноте, но это значение нелегко вычислить;
    • Другое сравнениеточка равновесия(точка безубыточности, BEP), этоЗначение, когда скорость точности равна скорости отзыва, как показано на правом рисунке ниже, и можно определить, чтоКривая с более дальней точкой баланса лучше.

Конечно, точка баланса все же слишком упрощена, так что естьЗначение F1Этот новый критерий оценкиГармоническое среднее значение точности и отзыва,определяется как:

F1 = \frac{2 \times P \times R}{P+R}=\frac{2\times TP}{样本总数+TP-TN}

F1 также имеет более общий вид:F_{\beta}, что позволяет нам выражать различные предпочтения в отношении точности и полноты, определяемые следующим образом:

F_{\beta}=\frac{(1+\beta^2)\times P\times R}{(\beta^2 \times P)+R}

в\beta > 0измеряет относительную важность отзыва к точности, когда\beta = 1, есть F1, если\beta > 1, скорость отзыва более важна; если\beta < 1, точность важнее.

1.2.3 Macro Precision/Micro Precision, Macro Recall/Micro Recall и Macro F1/Micro F1

Много раз мы будем получать более одной матрицы путаницы для бинарной классификации, например, многократное обучение/тестирование для получения нескольких матриц путаницы, обучение/тестирование нескольких наборов данных для оценки «глобальной» производительности алгоритма или выполнение множественной классификации. задачи множественные матрицы путаницы получаются путем объединения категорий попарно.

Таким образом, мы хотим объединить точность и полноту на n бинарных матрицах путаницы. Как правило, есть два способа исследования:

1. Первый находится непосредственно вТочность и скорость отзыва рассчитываются для каждой матрицы путаницы., обозначаемый как(P_1, R_1), (P_2, R_2), \cdots, (P_n, R_n),тогдаРассчитать среднее, получаются точность макроса (макро-P), отзыв макроса (макро-R) и макрос F1 (макро-F1), которые определяются следующим образом:

macro-P = \frac{1}{n}\sum_{i=1}^n P_i,\\ macro-R = \frac{1}{n}\sum_{i=1}^n R_i,\\ macro-F1 = \frac{2\times macro-P\times macro-R}{marco-P+macro-R}

2. ВторойУсреднение соответствующих элементов каждой матрицы путаницы,Получите среднее значение TP, FP, TN, FN, а затем на основе этих средних значений получают микроточность (микро-P), микро-отзыв (микро-R) и микро-F1 (микро-F1), которые определяются следующим образом:

micro-P = \frac{\overline{TP}}{\overline{TP}+\overline{FP}},\\ micro-R = \frac{\overline{TP}}{\overline{TP}+\overline{FN}},\\ micro-F1 = \frac{2\times micro-P\times micro-R}{micro-P + micro-R}

1.3 ROC и AUC

1.3.1 ROC-кривая

Аббревиатура кривой рабочей характеристики приемника кривой ROC, китайское название «рабочая характеристика приемника», возникла в военной области и широко использовалась в области медицины.

Его абсциссаЛожноположительный показатель (FPR), ординатаИстинная положительная скорость (TPR), которые определяются следующим образом:

TPR = \frac{TP}{TP+FN},\\ FPR = \frac{FP}{FP+TN}

Представительство ТПРВероятность предсказания положительного класса классификатором в положительном классе, что в точности равно скорости отзыва положительного класса;

ФПР означаетВероятность того, что классификатор в отрицательном классе предскажет положительное значение, который равен 1 минус отзыв отрицательного класса, который выглядит следующим образом:называется истинной отрицательной ставкой (TNR), также известный как специфичность, представляет долю правильно классифицированных отрицательных классов.

TNR =\frac{TN}{FP+TN}

Как и рисунок кривой P-R, кривая ROC на самом деле рисуетсяПостоянно настраивайте порог для различения положительных и отрицательных результатовЧтобы нарисовать его, его вертикальная ось - TPR, а его горизонтальная ось - FPR. Вот введение, основанное на примере в "Машинное обучение сотен лиц". Прежде всего, это таблица, показанная на рисунке ниже. Таблица выборка выходных данных модели с двумя классами.Например, есть 20 выборок, а затем есть соответствующие метки истинности, где p представляет положительный класс, а n представляет отрицательный класс. Затем выходная вероятность модели представляет уверенность модели в том, что выборка является положительным классом.

Если в начале порог установлен на бесконечность, то модель будет оценивать все выборки как отрицательные, TP и FP будут равны 0, то есть TPR и FPR также должны быть равны 0, первая координата ROC-кривой равна (0, 0) . Затем порог устанавливается на 0,9.В это время образец с номером образца 1 будет оцениваться как положительный образец, и это действительно положительный образец, тогда TP = 1, а количество положительных образцов равно 10 , все TPR = 0,1; Тогда нет ошибочно предсказанного положительного класса, то есть FP = 0, FPR = 0, а вторая координата кривой в этот момент равна (0, 0,1).

Путем непрерывной регулировки порога можно получить различные координаты кривой и, наконец, получить кривую ROC, показанную на рисунке ниже.

Второй способ более интуитивно нарисовать кривую ROC состоит в том, чтобы сначала подсчитать количество положительных и отрицательных выборок, предполагая P и N соответственно, а затем установить интервал шкалы по горизонтальной оси равным 1/N и интервал шкалы по вертикальной оси. к 1 /п. Затем выборки сортируются в соответствии с вероятностью, выдаваемой моделью, и выборки проходятся по порядку, начиная с нулевой точки, чтобы нарисовать кривую ROC,Каждый раз, когда встречается положительный образец, по вертикальной оси строится кривая с тиковым интервалом.,Когда встречается отрицательный образец, нарисуйте кривую тикового интервала вдоль горизонтальной оси., пока не будут пройдены все образцы, кривая окончательно останется в точке (1,1), и построение кривой ROC будет завершено.

Конечно, на рисунке ниже показана более общая ROC-кривая, которая будет более гладкой.Приведенный выше рисунок вызван ограниченным количеством выборок.

Для ROC-кривой характерны следующие характеристики:

1. Кривая ROC обычно начинается с нижнего левого угла (0,0) и заканчивается в верхнем правом углу (1,1).

  • С начала,Прогнозируется, что первый образец будет положительным классом, остальные прогнозируются как отрицательные категории;
    • TPR будет очень низким, почти 0. Приведенный выше пример равен 0,1.В настоящее время классификатор не находит большое количество положительных классов;
    • FPR также очень низкий, который может быть равен 0. Пример выше равен 0. В это время образцы, предсказанные как положительные, на самом деле могут быть положительными, поэтому почти нет ошибочно предсказанных положительных образцов.
  • когда это закончится,Прогнозируется, что все образцы будут положительными..
    • TPR почти равен 1, поскольку прогнозируется, что все образцы будут положительными, поэтому должны быть найдены все положительные образцы;
    • FPR также почти равен 1, потому что все отрицательные образцы ошибочно расцениваются как положительные.

2. На ROC-кривой:

  • Диагональная линия соответствует модели случайного угадывания, то есть вероятность равна 0,5;
  • точка(0,1)это идеальная модель, потому что в это времяTPR=1,FPR=0, то есть предсказываются все положительные классы, и ошибки предсказания нет;
  • как правило,Кривая ROC приближается к точке(0, 1)лучшее.

3. Работу двух классификаторов также можно оценить по ROC-кривой:

  • еслиКлассификаторAизROCКривая классифицируетсяBКривая полностью замкнута, можно сказать, чтоBпроизводительность лучше, чемA, что соответствует точке, где кривая ROC ближе к точке, упомянутой в предыдущей статье(0, 1)лучшее;
  • Если два классификатораROCЕсли кривые пересекаются, также трудно напрямую судить об их эффективности.ROCДля суждения используется площадь под кривой, и эта площадь называетсяAUC:Area Under ROC Curve.

Простая реализация кода выглядит следующим образом:

def true_negative_rate(y_true, y_pred):
    true_negative = sum(1 - (yi or yi_hat) for yi, yi_hat in zip(y_true, y_pred))
    actual_negative = len(y_true) - sum(y_true)
    return true_negative / actual_negative


def roc(y, y_hat_prob):
    thresholds = sorted(set(y_hat_prob), reverse=True)
    ret = [[0, 0]]
    for threshold in thresholds:
        y_hat = [int(yi_hat_prob >= threshold) for yi_hat_prob in y_hat_prob]
        ret.append([recall(y, y_hat), 1 - true_negative_rate(y, y_hat)])
    return ret

Простой тестовый пример выглядит следующим образом:

y_true = [1, 0, 1, 0, 1]
y_hat_prob = [0.9, 0.85, 0.8, 0.7, 0.6]

roc_list = roc(y_true, y_hat_prob)
print('roc_list:', roc_list)
# 输出结果是 roc_list: [[0, 0], [0.3333333333333333, 0.0], [0.3333333333333333, 0.5], [0.6666666666666666, 0.5], [0.6666666666666666, 1.0], [1.0, 1.0]]
1.3.2 Сравнение кривых ROC и PR

Та же точка

1.Оба описывают влияние выбора порога на показатели классификации.. Хотя каждый классификатор будет выводить вероятность для каждой выборки, то есть достоверность, но обычно мы искусственно устанавливаем порог, чтобы повлиять на окончательный результат оценки классификатора, например, устанавливаем очень высокий порог — 0,95 или относительно низкий порог --0,3.

  • Если он смещен в сторону точности, увеличьте порог, чтобы гарантировать, что только достоверные образцы оцениваются как положительные.В настоящее время пороговое значение может быть установлено на 0,9 или выше;
  • Снизьте порог, если склонны к отзыву, чтобы гарантировать, что большее количество образцов будет оценено как положительное, и будет легче найти все истинно положительные образцы.В настоящее время порог установлен на 0,5 или ниже.

2. Каждая точка двух кривыхВыбор, соответствующий определенному порогу, точка находится под порогом(精确率,召回率) / (TPR, FPR). Тогда по горизонтальной оси соответствует уменьшение порога.

разные

В сравненииP-Rизгиб,ROCХарактерной чертой кривой является то, чтоПри изменении распределения положительных и отрицательных образцов форма его кривой может оставаться в основном неизменной.. Как показано ниже:

После сравнения десятикратного увеличения отрицательных проб соответственноP-RиROCИзменение кривой можно увидетьROCФорма кривой практически не меняется, ноP-RКривая сильно изменилась.

такROCЭта характеристика кривойМожет уменьшить помехи, вызванные различными наборами тестов,Более объективно оценивать производительность самой модели, поэтому он применим к большему количеству сценариев, таких как сортировка, рекомендации, реклама и другие поля.

Это также связано сМногие проблемы в реальных сценариях будут иметь дисбаланс в количестве положительных и отрицательных образцов.Например, модель коэффициента конверсии часто используется в сфере вычислительной рекламы, и количество положительных образцов часто составляет одну тысячную или даже одну десятитысячную от числа отрицательных образцов.ROCКривая является скорее тестовой, чтобы отразить качество самой модели.

Конечно, если вы хотите увидеть, как модель работает с конкретным набором данных,P-RКривая будет отражать его производительность более интуитивно. Поэтому необходимо детально анализировать конкретные проблемы.

1.3.3 Кривая AUC

AUCдаROCПлощадь кривой, ее физический смысл: случайным образом выбрать образец из всех положительных образцов, и вероятность того, что модель предсказывает его как положительный образец, равнаp_1; случайным образом выбрать образец из всех отрицательных образцов, вероятность того, что модель предсказывает его как положительный образец, равнаp_0.p_1 > p_0ВероятностьAUC.

AUCКривая имеет следующие характеристики:

  • Если выборки классифицированы совершенно случайно, тоp_1 > p_0Вероятность равна 0,5, тогдаAUC=0.5;

  • AUCОн по-прежнему применим при условии несбалансированности выборки..

    Например, в сценарии борьбы с мошенничеством предполагается, что нормальные пользователи являются положительными (99,9%), а мошеннические пользователи — отрицательными (0,1%).

    При использовании оценки точности прогнозирование всех пользователей как положительного класса дает точность 99,9%. Очевидно, это не очень хороший прогноз, так как мошеннические пользователи вообще не были обнаружены.

    При использованииAUCоценка, тоFPR=1,TPR=1,соответствующийAUC=0.5. следовательноAUCУспешно указал, что это не очень хороший предсказатель.

  • AUCответВозможность модели сортировать образцы(отсортировано по вероятности того, что образцы будут положительными). как:AUC=0.8Представление: Учитывая положительный образец и отрицательный образец, в80%В случае вероятность того, что модель предсказывает положительный класс для положительных выборок, больше, чем вероятность того, что она предсказывает положительный класс для отрицательных выборок.

  • AUCНечувствительность к равномерной выборке. Например, в приведенном выше сценарии защиты от мошенничества предполагается, что нормальные пользователи имеют равномерную субдискретизацию. Пусть для любой отрицательной выборки n модель предсказывает ее как положительный класс с вероятностью Pn. До и после понижающей дискретизации, благодаря равномерной выборке, доля истинных выборок, вероятность которых быть предсказанным как положительный класс, больше, чем Pn, и меньше, чем Pn, не меняется. следовательноAUCпостоянный.

    Но в случае неравномерной субдискретизации изменяется доля истинных выборок, для которых вероятность оказаться в положительном классе больше, чем Pn, и меньше, чем Pn, что также приводит кAUCизменять.

  • Чем больше разрыв между прогнозируемой вероятностью положительного класса между положительными и отрицательными выборками, темAUCвыше. Потому что это показывает, что чем больше уверенность в упорядочении между положительными и отрицательными образцами, тем выше степень дискриминации.

    Например: в сценарии электронной коммерции модель CTRAUCниже, чем модель покупки-конверсииAUC. Поскольку стоимость клика ниже, чем стоимость покупки, разница между положительными и отрицательными выборками в модели CTR меньше, чем разница между положительными и отрицательными выборками в модели покупки-конверсии.

AUCможно рассчитать поROCСуммируйте площади частей под кривой. ПредположениеROCКривая формируется путем соединения следующих точек по порядку:

{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)}, 其中\ x_1=0, x_m=1

ТакAUCОценить можно так:

AUC = \frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)\times (y_i+y_{i+1})

Код реализован следующим образом:

def get_auc(y, y_hat_prob):
    roc_val = iter(roc(y, y_hat_prob))
    tpr_pre, fpr_pre = next(roc_val)
    auc = 0
    for tpr, fpr in roc_val:
        auc += (tpr + tpr_pre) * (fpr - fpr_pre) / 2
        tpr_pre = tpr
        fpr_pre = fpr
    return auc

Простой тестовый пример выглядит следующим образом:

y_true = [1, 0, 1, 0, 1]
y_hat_prob = [0.9, 0.85, 0.8, 0.7, 0.6]

auc_val = get_auc(y_true, y_hat_prob)
print('auc_val:', auc_val) # 输出是 0.5

1.4 Матрица затрат

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

Следовательно, для измерения различных потерь, вызванных разными типами, можно присвоить погрешности.неравная стоимость.

Для задачи двухклассовой классификации мы можем установитьматрица затратcost_{ij}означает, чтоiПредполагается, что образец класса будет первымjСтоимость образцов класса и стоимость правильного прогнозирования равна 0 . Как показано в таблице ниже:

Прогноз: Класс 0 Прогноз: Категория 1
Верно: Категория 0 0 cost_{01}
Реальный: Категория 1 cost_{10} 0
  1. При неравных затратах надежда состоит не в том, чтобы найти модель, которая просто минимизирует частоту ошибок, а в том, чтобы найтиМинимизируйте общую стоимостьtotal costмодель.

  2. При неравных затратахROCКривая не отражает напрямую ожидаемую общую стоимость классификатора, и в этом случае необходимо использовать кривую стоимости.cost curve

    • Горизонтальная ось кривой затратПоложительная вероятностная стоимость, как показано ниже, где p — вероятность положительного примера (класс 0)
    P_{+cost} = \frac{p\times cost_{01}}{p\times cost_{01}+(1-p)\times cost_{10}}
    • Вертикальная ось кривой затрат представляет собой нормализованную стоимость следующим образом:

      cost_{norm} = \frac{FNR\times p\times cost_{01}+FPR\times (1-p)\times cost_{10}}{p\times cost_{01}+(1-p)\times cost_{10}}

      Среди них частота ложноположительныхFPRПредставляет вероятность того, что модель предсказывает отрицательную выборку как положительный класс, определяемый следующим образом:

      FPR = \frac{FP}{TN+FP}

      ложноотрицательный показательFNRпредставляет вероятность предсказания положительного образца как отрицательного класса, определяемого следующим образом:

      FNR = 1 - TPR = \frac{FN}{TP+FN}

      Кривая затрат представлена ​​на следующем рисунке:

1.5 Показатели производительности для задач регрессии

Для задач регрессии обычно используются следующие показатели производительности:

1. Среднеквадратическая ошибка (MSE), определяемая следующим образом:

MSE=\frac{1}{N}\sum_{i=1}^N(y_i-\hat{y_i})^2

2. Среднеквадратичная ошибка (RMSE), определяемая следующим образом:

RMSE = \sqrt{\frac{1}{N}\sum_{i=1}^N(y_i-\hat{y_i})^2}

3. Среднеквадратичная логарифмическая ошибка (RMSLE), определяемая следующим образом.

RMSLE=\sqrt{\frac{1}{N}\sum_{i=1}^N[log(y_i+1)- log(\hat{y_i}+1)]^2}

4. Средняя абсолютная ошибка (MAE), определяемая следующим образом:

MAE = \frac{1}{N}\sum_{i=1}^N |y_i-\hat{y_i}|

Среди этих четырех стандартов чаще используются первый и второй, а именноMSEиRMSE, эти два критерия в целом могут отражать степень отклонения между предсказанным значением регрессионной модели и истинным значением, но если вы встретитеВыбросы с очень большими индивидуальными отклонениями, даже небольшое число сделало бы оба индикатора плохими.

В этом случае есть три решения:

  • Выбросы обрабатываются как шумовые точки, то есть часть предварительной обработки данных должна отфильтровывать эти шумовые точки;
  • Начиная с производительности модели, улучшите прогностическую способность модели и смоделируйте механизм, генерируемый этими выбросами, в модель, но этот метод будет более сложным;
  • Используйте другие показатели, такие как третий показательRMSLE, который фокусируется на доле ошибки прогноза, которая может уменьшить влияние выбросов, даже если они существуют; илиMAPE, Средняя абсолютная ошибка в процентах, определяемая как:
MAPE = \sum_{i=1}^n |\frac{y_i-\hat{y_i}}{y_i}|\times\frac{100}{n}

RMSEПростая кодовая реализация кода выглядит так:

def rmse(predictions, targets):
    # 真实值和预测值的误差
    differences = predictions - targets
    differences_squared = differences ** 2
    mean_of_differences_squared = differences_squared.mean()
    # 取平方根
    rmse_val = np.sqrt(mean_of_differences_squared)
    return rmse_val

1.6 Другие показатели оценки

  1. Скорость вычислений: время, необходимое для обучения модели и прогнозирования;
  2. Надежность: возможность обработки пропущенных значений и выбросов;
  3. Масштабируемость: возможность обработки больших наборов данных;
  4. Интерпретируемость: понятность критериев прогнозирования модели, таких как правила, генерируемые деревьями решений, легко понять, и причина, по которой нейронные сети называют черными ящиками, заключается в том, что их большое количество параметров нелегко понять.

резюме

В этой статье в основном представлены несколько оценок производительности для задач классификации, основанных на задаче бинарной классификации.Все они являются очень часто используемыми индикаторами оценки.Обычно они в основном используются в качестве методов для оценки производительности модели в практических приложениях.


Ссылаться на:

Добро пожаловать, чтобы обратить внимание на мою общедоступную учетную запись WeChat — машинное обучение и компьютерное зрение, или отсканируйте QR-код ниже, давайте общаться, учиться и прогрессировать вместе!

Прекрасная рекомендация в прошлом

Серия машинного обучения
Рекомендация руководства по проектам и ресурсам Github