После того, как алгоритм классификации, такой как ClassificationNaiveBayes
или TreeBagger
обучался на данных, можно хотеть исследовать производительность алгоритма на определенном тестовом наборе данных. Один распространенный способ сделать это состоял бы в том, чтобы вычислить грубую меру производительности, такой как квадратичная потеря или точность, усредненная по целому тестовому набору данных.
Можно хотеть осмотреть производительность классификатора более тесно, например, путем графического вывода кривой Рабочей характеристики получателя (ROC). По определению кривая ROC [1,2] показывает истинный положительный уровень по сравнению с ложным положительным уровнем (эквивалентно, чувствительность по сравнению с 1 спецификой) для различных порогов классификатора вывод. Можно использовать его, например, чтобы найти порог, который максимизирует точность классификации или оценить в большем количестве общих черт, как классификатор выполняет в областях высокой чувствительности и высокой специфики.
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
over 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, вектор шкал применился к количествам класса.
Матрица confusion
, C
, задана как
где
P обозначает "положительный".
N обозначает "отрицательный".
T обозначает "истинный".
F обозначает "ложь".
Например, первая строка матрицы беспорядка задает, как классификатор идентифицирует экземпляры положительного класса: C(1,1)
является количеством правильно идентифицированных положительных экземпляров, и C(1,2)
является количеством положительных экземпляров, не распознанных как отрицательным.
Матрица стоимости задает стоимость misclassification для каждой категории:
где 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
просто дан предшествующим:
Функция 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
к ложной категории в их соответствующих классах, 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
вычисляет доверительные границы с помощью или перекрестной проверки или начальной загрузки. Если вы предоставляете массивы ячеек для labels
и scores
, perfcurve
использует перекрестную проверку и обрабатывает элементы в массивах ячеек, когда перекрестная проверка сворачивается. Если вы устанавливаете входной параметр NBoot
на положительное целое число, perfcurve
генерирует копии начальной загрузки nboot
, чтобы вычислить pointwise доверительные границы.
perfcurve
оценивает доверительные границы с помощью одного из двух методов:
Вертикальное усреднение (VA) — оценивает доверительные границы на Y
и T
в фиксированных значениях X
. Используйте параметр входа XVals
, чтобы использовать этот метод для вычислительных доверительных границ.
Пороговое усреднение (TA) — оценивает доверительные границы для X
и Y
в фиксированных порогах для положительного счета класса. Используйте параметр входа TVals
, чтобы использовать этот метод для вычислительных доверительных границ.
Чтобы использовать веса наблюдения вместо количеств наблюдения, можно использовать параметр 'Weights'
в вызове perfcurve
. Когда вы используете этот параметр, чтобы вычислить X
, Y
и T
или вычислить доверительные границы перекрестной проверкой, perfcurve
использует ваши предоставленные веса наблюдения вместо количеств наблюдения. Вычислить доверительные границы начальной загрузкой, выборками perfcurve
N из N с заменой с помощью весов в качестве вероятностей выборки многочлена.