Кривая эффективность

Введение в кривую эффективность

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

Что такое кривые ROC?

Можно хотеть проверить классификатор эффективности более тщательно, для примера, путем построения графика кривого Приемника рабочей характеристики (ROC). По определению, кривая ROC [1,2] показывает истинную положительную скорость по сравнению с ложноположительной частотой (эквивалентно, чувствительность по сравнению с 1-специфичностью) для различных порогов выхода классификатора. Можно использовать его, например, чтобы найти порог, который максимизирует точность классификации или оценить, в более широких терминах, как классификатор работает в областях с высокой чувствительностью и высокой специфичностью.

Оценка эффективности классификатора с помощью perfcurve

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

Можно использовать perfcurve с любым классификатором или, более широко, с любым методом, который возвращает числовой счет для образца входных данных. По принятой здесь конвенции,

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

  • Низкий счет означает, что образец вероятно из отрицательных классов.

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

perfcurve не предъявляет никаких требований к входной области значений счетов. Из-за этого отсутствия нормализации можно использовать perfcurve для обработки счетов, возвращенных любым методом классификации, регрессии или подгонки. perfcurve не делает никаких предположений о характере входа счетов или отношений между счетами для разных классов. В качестве примера рассмотрим задачу с тремя классами, A, B, и C, и предположим, что счета, возвращенные некоторым классификатором для двух образцов, следующие:

 ABC
образец 10.40.50.1
образец 20.40.10.5

Если необходимо вычислить кривую эффективности для разделения классов A и B, с C проигнорированный, необходимо устранить неоднозначность при выборе A над B. Можно было бы принять решение использовать коэффициент счета, s(A)/s(B), или различие счета, s(A)-s(B); этот выбор может зависеть от характера этих счетов и их нормализации. perfcurve всегда принимает по одному счету за образец. Если вы поставляете счетам только для A классов, perfcurve не различает наблюдения 1 и 2. Кривая эффективности в этом случае может быть не оптимальной.

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

Для входа, perfcurve принимает истинные метки классов для некоторых данных и счетов, присвоенных классификатором этим данным. По умолчанию эта утилита вычисляет кривой Приемник рабочей характеристики (ROC) и возвращает значения 1-специфичности или ложноположительной скорости для X и чувствительность, или истинная положительная скорость, для Y. Можно выбрать другие критерии для X и Y путем выбора одного из нескольких предоставленных критериев или определения произвольного критерия через анонимную функцию. Можно отобразить вычисленную кривую эффективности с помощью plot(X,Y).

perfcurve может вычислить значения для различных критериев для построения графика на оси X или ось Y Все такие критерии описаны матрицей неточностей 2 на 2, матрицей затрат 2 на 2 и вектором шкал 2 на 1, примененных к отсчетам классов.

confusionchart матрица, C, определяется как

(TPFNFPTN)

где

  • P обозначает «положительный».

  • N обозначает «отрицательный».

  • T обозначает «true».

  • F обозначает «ложь».

Например, первая строка матрицы неточностей определяет, как классификатор идентифицирует образцы положительного класса: C(1,1) количество правильно идентифицированных положительных образцов и C(1,2) - количество положительных образцов, неправильно идентифицированных как отрицательные.

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

(Cost(P|P)Cost(N|P)Cost(P|N)Cost(N|N))

где Cost(I|J) - стоимость назначения образца класса J в I классов. Обычно Cost(I|J)=0 для I=J. Для гибкости, perfcurve позволяет вам также задать ненулевые затраты для правильной классификации.

Эти две шкалы включают предшествующую информацию о вероятностях классов. perfcurve вычисляет эти шкалы путем принятия scale(P)=prior(P)*N и scale(N)=prior(N)*P и нормализация суммы scale(P)+scale(N) по 1. P=TP+FN и N=TN+FP - общее количество образцов в положительном и отрицательном классах, соответственно. Затем функция применяет шкалы как мультипликативные множители к отсчетам из соответствующего класса: perfcurve умножает счетчики из положительного класса на scale(P) и отсчитывает из отрицательного класса по scale(N). Рассмотрим, например, расчет положительного прогнозирующего значения, PPV = TP/(TP+FP). TP счетчики происходят от положительного класса и FP счетчики происходят из отрицательного класса. Поэтому нужно масштабировать TP по scale(P) и FP по scale(N)и измененную формулу для PPV с учетом предыдущих вероятностей теперь:

PPV=scale(P)*TPscale(P)*TP+scale(N)*FP

Если все счета в данных выше определенного порога, perfcurve классифицирует все образцы как 'positive'. Это означает, что TP - общее количество образцов в положительном классе и FP - общее количество образцов в отрицательном классе. В этом случае PPV просто определяется предыдущим:

PPV=prior(P)prior(P)+prior(N)

The perfcurve функция возвращает два вектора, X и Y, показателей эффективности. Каждая мера является некоторой функцией confusion, cost, и scale значения. Можно запросить конкретные измерения по имени или указать указатель на функцию для вычисления пользовательской меры. Функция, которую вы предоставляете, должна занять confusion, cost, и scale как свои три входных параметра и возврат вектор выхода значений.

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

По умолчанию perfcurve вычисляет значения X и Y критерии для всех возможных порогов счета. Кроме того, он может вычислить уменьшенное количество конкретных X значения, предоставляемые в виде входного параметра. В любом случае для M запрошенные значения, perfcurve вычисляет M+1 значения для X и Y. Первое значение из этих M+1 значения особенны. perfcurve вычисляет его путем установки TP счетчик образцов равен нулю и установка TN к общему количеству в отрицательном классе. Это значение соответствует 'reject all' порог. На стандартной кривой ROC это переводится в дополнительную точку, расположенную на (0,0).

Если есть NaN значения среди входных счетов, perfcurve может обрабатывать их любым из двух способов:

  • Это может сбросить строки с NaN счета.

  • Он может добавить их к ложным отсчетам классификации в соответствующем классе.

То есть для любого порога, образцы с NaN счета из положительного класса считаются ложноотрицательными (FN) и образцы с NaN счета из отрицательного класса считаются ложноположительными (FP). В этом случае первое значение X или Y вычисляется настройкой TP нули и установка TN к общему количеству минус NaN отсчет в отрицательном классе. Для рисунка рассмотрим пример с двумя строками в положительном и двумя строками в отрицательном классе, при этом каждая пара имеет NaN счет:

КлассСчет
Отрицательный0.2
ОтрицательныйNaN
Положительный0.7
ПоложительныйNaN

Если вы отбрасываете строки с NaN оценивает, затем, когда ограничение по счету изменяется, perfcurve вычисляет показатели эффективности как в следующей таблице. Например, срез 0,5 соответствует средней строке, где строки 1 и 3 классифицированы правильно, а строки 2 и 4 опущены.

TPFNFPTN
0101
1001
1010

Если вы добавляете строки с NaN оценивает в категорию false в своих соответствующих классах, perfcurve вычисляет показатели эффективности как в следующей таблице. Например, срез 0,5 соответствует средней строке, где теперь строки 2 и 4 считаются неправильно классифицированными. Заметьте, что только FN и FP столбцы различаются между этими двумя таблицами.

TPFNFPTN
0211
1111
1120

Для данных с тремя или более классами, perfcurve принимает один положительный класс и список отрицательных классов для входа. Функция вычисляет X и Y значения, использующие счетчики в положительном классе для оценки TP и FN, и использование отсчётов во всех отрицательных классах для оценки TN и FP. perfcurve можно опционально вычислить Y значений для каждого отрицательного класса отдельно и, в дополнение к Y, возвращает матрицу размера M-by- C, где M количество элементов в X или Y и C количество отрицательных классов. Можно использовать эту функциональность для мониторинга компонентов отрицательного вклада класса. Для примера можно построить график TP рассчитывает на X-ось и FP рассчитывает на Y-ось. В этом случае возвращенная матрица показывает, как FP компонент разделяется на отрицательные классы.

Вы также можете использовать perfcurve для оценки доверительных интервалов. perfcurve вычисляет доверительные границы с помощью перекрестной валидации или bootstrap. Если вы поставляете массивы ячеек для labels и scores, perfcurve использует перекрестную валидацию и обрабатывает элементы в массивах ячеек как складки перекрестной валидации. Если вы задаете входной параметр NBoot в положительное целое число, perfcurve генерирует nboot bootstrap для вычисления точных доверительных границ.

perfcurve оценивает доверительные границы одним из двух методов:

  • Вертикальное среднее (VA) - оценка доверительных границ на Y и T при фиксированных значениях X. Используйте XVals входной параметр, чтобы использовать этот метод для вычисления доверительных границ.

  • Среднее пороговое (TA) - оценка доверительных границ для X и Y при фиксированных порогах для положительного счета класса. Используйте TVals входной параметр, чтобы использовать этот метод для вычисления доверительных границ.

Чтобы использовать веса наблюдений вместо счетчиков наблюдений, можно использовать 'Weights' параметр в вызове perfcurve. Когда вы используете этот параметр, чтобы вычислить X, Y и T или для вычисления доверительных границ путем перекрестной валидации, perfcurve использует ваши предоставленные веса наблюдений вместо счетчиков наблюдений. Чтобы вычислить доверительные границы bootstrap, perfcurve выборки N из N с заменой, используя ваши веса в качестве вероятностей полиномиальной выборки.

См. также

|