После алгоритма классификации, такого как ClassificationNaiveBayes
или TreeBagger
обученный на данных, вы можете захотеть изучить эффективность алгоритма на определенном тестовом наборе данных. Одним из распространенных способов сделать это было бы вычисление валовой меры эффективности, такой как квадратичные потери или точность, усредненная по всему набору тестовых наборов данных.
Можно хотеть проверить классификатор эффективности более тщательно, для примера, путем построения графика кривого Приемника рабочей характеристики (ROC). По определению, кривая ROC [1,2] показывает истинную положительную скорость по сравнению с ложноположительной частотой (эквивалентно, чувствительность по сравнению с 1-специфичностью) для различных порогов выхода классификатора. Можно использовать его, например, чтобы найти порог, который максимизирует точность классификации или оценить, в более широких терминах, как классификатор работает в областях с высокой чувствительностью и высокой специфичностью.
perfcurve
perfcurve
вычисляет измерения для графика эффективности классификатора. Можно использовать эту утилиту для оценки эффективности классификатора по тестовым данным после обучения классификатора. Различные измерения, такие как средняя квадратичная невязка, ошибка классификации или экспоненциальные потери, могут суммировать прогнозирующую степень классификатора в одном числе. Однако кривая эффективности предлагает больше информации, поскольку она позволяет исследовать эффективность классификатора по области значений порогов на ее выходе.
Можно использовать perfcurve
с любым классификатором или, более широко, с любым методом, который возвращает числовой счет для образца входных данных. По принятой здесь конвенции,
Высокий счет, возвращенный классификатором для любого данного образца, означает, что образец вероятно из положительного класса.
Низкий счет означает, что образец вероятно из отрицательных классов.
Для некоторых классификаторов можно интерпретировать счет как апостериорную вероятность наблюдения образца положительного класса в точке X
. Примером такого счета является доля положительных наблюдений в листе дерева решений. В этом случае счета попадают в область значений от 0 до 1, а счета от положительных и отрицательных классов складываются в единицу. Другие методы могут вернуть счета в диапазоне от минус до плюс бесконечности, без какого-либо очевидного отображения от счета до апостериорной вероятности класса.
perfcurve
не предъявляет никаких требований к входной области значений счетов. Из-за этого отсутствия нормализации можно использовать perfcurve
для обработки счетов, возвращенных любым методом классификации, регрессии или подгонки. perfcurve
не делает никаких предположений о характере входа счетов или отношений между счетами для разных классов. В качестве примера рассмотрим задачу с тремя классами, A
, B
, и C
, и предположим, что счета, возвращенные некоторым классификатором для двух образцов, следующие:
A | B | C | |
образец 1 | 0.4 | 0.5 | 0.1 |
образец 2 | 0.4 | 0.1 | 0.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
, определяется как
где
P обозначает «положительный».
N обозначает «отрицательный».
T обозначает «true».
F обозначает «ложь».
Например, первая строка матрицы неточностей определяет, как классификатор идентифицирует образцы положительного класса: C(1,1)
количество правильно идентифицированных положительных образцов и C(1,2)
- количество положительных образцов, неправильно идентифицированных как отрицательные.
Матрица затрат определяет стоимость неправильной классификации для каждой категории:
где 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
с учетом предыдущих вероятностей теперь:
Если все счета в данных выше определенного порога, perfcurve
классифицирует все образцы как 'positive'
. Это означает, что TP
- общее количество образцов в положительном классе и FP
- общее количество образцов в отрицательном классе. В этом случае PPV
просто определяется предыдущим:
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 опущены.
TP | FN | FP | TN |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
Если вы добавляете строки с NaN
оценивает в категорию false в своих соответствующих классах, perfcurve
вычисляет показатели эффективности как в следующей таблице. Например, срез 0,5 соответствует средней строке, где теперь строки 2 и 4 считаются неправильно классифицированными. Заметьте, что только FN
и FP
столбцы различаются между этими двумя таблицами.
TP | FN | FP | TN |
0 | 2 | 1 | 1 |
1 | 1 | 1 | 1 |
1 | 1 | 2 | 0 |
Для данных с тремя или более классами, 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 с заменой, используя ваши веса в качестве вероятностей полиномиальной выборки.