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

Например, модель, которая правильно предсказывает 97% транзакций как обычные транзакции, однако не учитывает тот факт, что оставшиеся 3% могут иметь мошеннические транзакции. В реальном мире на мошеннические транзакции приходится менее 1% транзакций.

Здесь точность неукоснительно игнорирует мошеннические транзакции, несмотря на то, что показатель точности составляет 97%. Следовательно, регулируя появление истинно положительных и ложноположительных результатов в модели, мы можем оценить производительность намного лучше, чем показатель точности. Одним из таких показателей оценки является AUC.

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

Прежде чем вдаваться в подробности AUC, давайте разберемся с глоссарием.

AUC - числовое представление производительности двоичного классификатора.

ROC - иначе называемый «Приемник. Рабочая характеристика» - это визуальное представление работы двоичного классификатора. Частота ложных положительных результатов и частота истинных положительных результатов нанесены на график, чтобы получить визуальное представление о производительности классификатора.

Истинно положительный коэффициент (TPR):
TPR или чувствительность - это соотношение истинно положительных результатов вне определенных условий.
TPR = истинно положительное / истинное положительное + ложно отрицательное.

Это соответствует первому столбцу таблицы непредвиденных обстоятельств.

Частота ложных срабатываний (FPR):
Частота ложных срабатываний или выпадений - это соотношение ложных срабатываний вне определенных условий.

FPR = ложноположительный / ложноположительный + истинно отрицательный

Это соответствует второму столбцу таблицы непредвиденных обстоятельств.

Давайте разберемся с концепцией на примере данных PimaIndiansDiabetes:

library(mlbench)
data(PimaIndiansDiabetes)

Давайте запустим модель логистической регрессии на данных размерности 768x9, при этом столбец диабета будет целевым, основанным на 8 упомянутых числовых характеристиках.

library(nnet)
fit <- multinom(diabetes ~., data = data)
pred <- predict(fit,data)
#confusion matrix for the predicted results
tab <- table(pred,data$diabetes)
tab

Теперь эта матрица путаницы сформулирована аналогично таблице непредвиденных обстоятельств 2x2, которую мы видели ранее. т.е. прогнозируемые результаты против фактических результатов.

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

Точность = (истинно положительный + истинно отрицательный) / n

Таким образом, здесь точность будет (445 + 156) / 768, что составляет 78%, в результате чего коэффициент ошибочной классификации составит 22% (точность 1).

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

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

Перед этим мы определим распределение вероятностей и пороговое значение (вероятность), которое позволит различить человека как диабетика или недиабета.

pred <- predict(fit, data,type='prob')
pred <- prediction(pred,data$diabetes)
hist(pred)

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

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

eval <- performance(pred, 'acc')
plot(eval)

На приведенном выше графике точность достигает максимума при пороговом значении около 0,5.

plot(eval)
abline(h=0.785,v = 0.486)

Обратите внимание, что значения h и v можно найти в сводке оценки. т.е. Максимальные значения координат x и y, которые можно нарисовать, как показано ниже. Таким образом, вероятность отсечки составляет 0,48 с максимальной точностью 78%.

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

roc <- performance(pred,"tpr","fpr")
plot(roc)
abline(a=0,b=1)

Линия, проведенная по диагонали для обозначения разбиения графа на 50–50. Если кривая ближе к линии, уменьшите производительность классификатора, что не лучше, чем простая случайная догадка. Наша модель показала хорошие результаты, так как она находится дальше от диагональной линии.

# Calculating Area under Curve
perf <- performance(pred,"auc")
auc <- as.numeric([email protected])
auc

Из приведенного выше кода значение AUC рассчитывается как 0,83, что неплохо для двоичного классификатора.