После алгоритма классификации, такого как 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, вектор шкал применился к количествам класса.
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
- 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 с заменой с помощью весов в качестве вероятностей выборки многочлена.