После алгоритма классификации, такого как ClassificationNaiveBayes или TreeBagger прошел обучение по данным, возможно, вам захочется изучить производительность алгоритма в конкретном наборе тестовых данных. Одним из распространенных способов достижения этой цели было бы вычисление общего показателя производительности, такого как квадратичные потери или точность, усредненные по всему набору тестовых данных.
Может потребоваться более тщательный контроль производительности классификатора, например, путем построения графика рабочих характеристик приемника (ROC). По определению кривая ROC [1,2] показывает истинную положительную скорость в сравнении с ложноположительной скоростью (эквивалентно, чувствительность в сравнении с 1-специфичностью) для различных пороговых значений выхода классификатора. Его можно использовать, например, для нахождения порога, который максимизирует точность классификации, или для оценки в более широком смысле того, как классификатор работает в регионах высокой чувствительности и высокой специфичности.
perfcurveperfcurve вычисляет показатели для графика производительности классификатора. Эту утилиту можно использовать для оценки производительности классификатора на тестовых данных после обучения классификатора. Различные измерения, такие как среднеквадратичная ошибка, ошибка классификации или экспоненциальные потери, могут суммировать прогнозирующую мощность классификатора в одном числе. Однако кривая производительности предоставляет больше информации, поскольку позволяет исследовать производительность классификатора в диапазоне пороговых значений на выходе.
Вы можете использовать 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 означает «правда».
F означает «ложь».
Например, первая строка матрицы путаницы определяет, как классификатор идентифицирует экземпляры положительного класса: C(1,1) является количеством правильно идентифицированных положительных экземпляров и C(1,2) - число положительных экземпляров, неверно идентифицированных как отрицательные.
Матрица затрат определяет стоимость неправильной классификации для каждой категории:
(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 с учетом предыдущих вероятностей в настоящее время:
шкала (N) * FP
Если все баллы в данных превышают определенный порог, perfcurve классифицирует все экземпляры как 'positive'. Это означает, что TP - общее число экземпляров в положительном классе и FP - общее число экземпляров в отрицательном классе. В этом случае PPV просто дается предшествующим:
предшествующий (N)
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 count в отрицательном классе. Для иллюстрации рассмотрим пример с двумя строками в положительном и двумя строками в отрицательном классе, каждая пара имеет 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-axis и FP рассчитывает на Y-axis. В этом случае возвращенная матрица показывает, как FP компонент разделен по отрицательным классам.
Также можно использовать perfcurve для оценки доверительных интервалов. perfcurve вычисляет доверительные границы с помощью перекрестной проверки или начальной загрузки. При поставке массивов ячеек для labels и scores, perfcurve использует перекрестную проверку и обрабатывает элементы в массивах ячеек как складки перекрестной проверки. Если задан входной параметр NBoot на положительное целое число, perfcurve производит nboot загрузочные реплики для вычисления точечных доверительных границ.
perfcurve оценивает доверительные границы, используя один из двух методов:
Вертикальное усреднение (VA) - оценка доверительных границ на Y и T при фиксированных значениях X. Используйте XVals входной параметр для использования этого метода для вычисления доверительных границ.
Пороговое усреднение (TA) - оценка доверительных границ для X и Y при фиксированных порогах для положительного балла класса. Используйте TVals входной параметр для использования этого метода для вычисления доверительных границ.
Для использования весов наблюдения вместо счетчиков наблюдения можно использовать 'Weights' параметр в вызове perfcurve. При использовании этого параметра для вычисления X, Y и T или для вычисления доверительных границ путем перекрестной проверки, perfcurve использует предоставленные веса наблюдения вместо счетчиков наблюдения. Чтобы вычислить доверительные границы по начальной загрузке, perfcurve образцы N из N с заменой с использованием весов в качестве вероятностей полиномиальной выборки.