Кривая ошибок

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(дополнение)
(переработка)
Строка 1: Строка 1:
-
'''Кривая ошибок''' или '''ROC-кривая''' – часто применяемый способ представления характеристик качества бинарного классификатора.
+
{{TOCright}}
 +
'''Кривая ошибок''' или '''ROC-кривая''' – графичекая характеристика качества бинарного классификатора, зависимость доли верных положительных классификаций от доли ложных положительных классификаций при варьировании порога решающего правила. Преимуществом ROC-кривой является её инвариантность относительно отношения [[цена ошибки|цены ошибки]] I и II рода.
-
== Кривая ошибок в задаче классификации ==
+
== Задача классификации ==
-
Рассмотрим задачу [[Логистическая регрессия|логистической регрессии]] в случае двух классов. Традиционно, один из этих классов будем называть классом «с положительными исходами», другой - «с отрицательными исходами» и обозначим множество классов через <tex>Y=\{-1,+1\}</tex>. Рассмотрим [[линейный классификатор]] для указанной задачи: <tex>a(x) = sign (f(x,w) - w_0) </tex>.
+
Рассмотрим задачу [[классификация|классификации]] в случае двух классов, называемых «положительным» и «отрицательным». Обозначим множество классов через <tex>Y=\{-1,+1\}</tex>. Большинство известных [[классификатор|классификаторов]] могут быть представлены в виде
 +
::<tex>a(x) = \textrm{sign} (f(x,w) - w_0),</tex>
 +
где
 +
<tex>x</tex> — произвольный [[объект]],
 +
<tex>f(x,w)</tex> — [[дискриминантная функция]],
 +
<tex>w</tex> — вектор параметров, определяемый по [[обучающая выборка|обучающей выборке]],
 +
<tex>w_0</tex> — порог.
 +
Уравнение <tex>f(x,w)=w_0</tex> определяет [[разделяющая поверхность|разделяющую поверхность]].
 +
Примером является [[линейный классификатор]], в котором дискриминантная функция имеет вид скалярного произведения вектора описания объекта на вектор параметров:
 +
<tex>a(x) = \textrm{sign} (\langle x,w \rangle - w_0)</tex>.
-
Параметр <tex>w_0</tex> полагается равным <tex>\frac{\lambda_{-1}}{\lambda_{+1}}</tex>, где <tex>\lambda_y</tex> – штраф за ошибку на объекте класса <tex>y</tex>, <tex>y \in \{-1, +1\}</tex>. Эти параметры выбираются из эмперических соображений и зависят от задачи.
+
Пусть <tex>\lambda_y</tex> – цена ошибки (штраф за ошибку) на объекте класса <tex>y \in \{-1, +1\}</tex>.
-
Нетрудно заметить, что в задаче существенны не сами параметры <tex>\lambda_y</tex>, а их отношение: <tex>\frac{\lambda_{-1}}{\lambda_{+1}}</tex>.
+
Для [[байесовский классификатор|байесовского классификатора]] при достаточно общих предположениях доказано, что оптимальное значение порога <tex>w_0</tex> зависит только от соотношения цены ошибок:
 +
:: <tex>w_0 = \frac{\lambda_{-1}}{\lambda_{+1}},</tex>
 +
тогда как оптимальное значение вектора параметров, наоборот, зависит от выборки и не зависит от цены ошибок.
 +
Таким образом, варьирование порога <tex>w_0</tex> для многих классификаторов эквивалентно варьированию отношения цены ошибок на отрицательных и положительных объектах.
 +
На практике цены ошибок зависят от особенностей конкретной задачи (например, от различных экономических соображений или экспертных оценок) и могут многократно пересматриваться.
-
'''RoC-кривая''' является распространённым способом оценки качества алгоритма, вне зависимости от выбора цен ошибок.
+
Заметим, что частным случаем линейного байесовского классификатора является [[логистическая регрессия]].
 +
 
 +
''ROC-кривая'' наглядно представляет, каким будет качество классификации при различных <tex>w_0</tex> и фиксированном <tex>w</tex>.
== TPR и FPR ==
== TPR и FPR ==
 +
[[Изображение:RoC-1.jpg|thumb|Рис.1. «Случайное гадание».]]
 +
[[Изображение:RoC-2.jpg|thumb|Рис.2. «Хороший» классификатор.]]
-
Рассмотрим два следующих функционала:
+
Пусть задана выборка объектов <tex>X^m = (x_1,\ldots,x_m)</tex> с соответствующими им верными ответами <tex>y_1,\ldots,y_m</tex>.
 +
Тогда для классификатора <tex>a(x)</tex> можно определить две характеристики качества:
 +
#Доля ложных положительных классификаций (False Positive Rate, FPR):
 +
#:<tex>\textrm{FPR}(a,X^m) = \frac{\sum_{i=1}^m [a(x_i) = +1][y_i = -1]}{\sum_{i=1}^m [y_i = -1]};</tex>
 +
#Доля верных положительных классификаций (True Positive Rate, TPR):
 +
#:<tex>\textrm{TPR}(a,X^m) = \frac{\sum_{i=1}^m [a(x_i) = +1][y_i = +1]}{\sum_{i=1}^m [y_i = +1]}.</tex>
-
1. False Positive Rate доля объектов [[выборка|выборки]] <tex>X^l</tex> '''ошибочно''' отнесённых [[алгоритм|алгоритмом]] <tex>a</tex> к классу {+1}:
+
== Чувствительность и специфичность ==
 +
Наряду с FPR и TPR используют также показатели ''чувствительности'' и ''специфичности'', которые также изменяются в интервале <tex>[0,1]</tex>:
 +
* ''чувствительность'' алгоритма <tex>a</tex> совпадает с <tex>\textrm{TPR}</tex>;
 +
* ''специфичность'' алгоритма <tex>a</tex> определяется как <tex>(1-\textrm{FPR})</tex>.
 +
<!-- [[Изображение:RoC-3.jpg|thumb|Рис. 3. Чувствительность и специфичность алгоритма на RoC-кривой]]-->
-
<tex>FPR(a,X^l)=\frac{\sum_{i=1}^l [a(x_i) = +1][y_i = -1]}{\sum_{i=1}^l [y_i = -1]}</tex>
+
Модель с высокой чувствительностью часто дает истинный результат при наличии положительного исхода (обнаруживает положительные примеры). Наоборот, модель с высокой специфичностью чаще дает истинный результат при наличии отрицательного исхода (обнаруживает отрицательные примеры). Если рассуждать в терминах медицины – задачи диагностики заболевания, где модель классификации пациентов на больных и здоровых называется ''диагностическим тестом'', то получится следующее:
 +
* чувствительный ''диагностический тест'' проявляется в гипердиагностике – максимальном предотвращении пропуска больных;
 +
* специфичный ''диагностический тест'' диагностирует только доподлинно больных. Это важно в случае, когда, например, лечение больного связано с серьезными побочными эффектами и гипердиагностика пациентов нежелательна.
-
2. True Positive Rate доля объектов [[выборка|выборки]] <tex>X^l</tex> '''правильно''' отнесённых [[алгоритм|алгоритмом]] <tex>a</tex> к классу {+1}:
+
== ROC-кривая ==
 +
ROC-кривая показывает зависимость TPR от FPR при варьировании порога <tex>w_0</tex>.
 +
Она проходит из точки <tex>(0,0)</tex>, соответствующей максимальному значению <tex>w_0</tex>, в точку <tex>(1,1)</tex>, соответствующую минимальному значению <tex>w_0</tex>.
-
<tex>TPR(a,X^l)=\frac{\sum_{i=1}^l [a(x_i) = +1][y_i = +1]}{\sum_{i=1}^l [y_i = +1]}</tex>
+
При <tex>w_0 \;>\, \max_{1=1..m} f(x_i,w)</tex> все объекты классифицируются как отрицательные, и ошибки возникают на всех положительных объектах, <tex>\textrm{FPR}=0</tex>, <tex>\textrm{TPR}=0</tex>.
-
Подробнее об этих функционалах можно прочесть [http://en.wikipedia.org/wiki/ROC_curve#Basic_concept здесь].
+
При <tex>w_0 \;<\, \min_{1=1..m} f(x_i,w)</tex> все объекты классифицируются как положительные, и ошибки возникают на всех отрицательных объектах, <tex>\textrm{FPR}=1</tex>, <tex>\textrm{TPR}=1</tex>.
-
[[Изображение:RoC-1.jpg|thumb|Рис.1. «Случайное гадание»]] [[Изображение:RoC-2.jpg|thumb|Рис.2. Хороший случай]]
+
ROC-кривая монотонно не убывает.
 +
Чем выше лежит кривая, тем лучше качество классификации.
-
ROC-кривая показывает зависимость количества верно классифицированных положительных объектов из <tex>X^l</tex> (по оси Y) от количества неверно классифицированных отрицательных объектов из <tex>X^l</tex> (по оси X).
+
На рисунке 1 приведена ROC-кривая, соответствующая худшему случаю — алгоритму «случайного гадания».
 +
На рисунке 2 изображён общий случай.
 +
Лучший случай — это кривая, проходящая через точки <tex>(0,0);\; (0,1);\; (1,1)</tex>
-
На рисунке 1 приведена RoC-кривая, соответствующая алгоритму «случайного гадания», когда классификация объекта происходит методом «подбрасывания монетки» с вероятностью исходов <tex>\frac12</tex>. На рисунке 2 изображён общий случай.
+
== Площадь под ROC-кривой AUC ==
-
Визуально, чем выше лежит кривая, тем лучше характеристики качества алгоритма.
+
Площадь под ROC-кривой AUC (Area Under Curve) является агрегированной характеристикой качества классификации, не зависящей от соотношения цен ошибок.
 +
Чем больше значение AUC, тем «лучше» модель классификации.
 +
Данный показатель часто используется для сравнительного анализа нескольких моделей классификации.
 +
== Алгоритм построения ROC-кривой ==
-
== Алгоритм построения RoC-кривой ==
+
Следующий алгоритм строит ROC-кривую за <tex>m</tex> обращений к дискриминантной функции.
-
На основе обучающей выборки <tex>X^l</tex> можно очень эффективно аппроксимировать RoC-кривую для заданного классификатора. Ниже приведён алгоритм, строящий эту зависимость.
+
'''Входные данные:'''
 +
* Обучающая выборка <tex>X^m</tex>
 +
* Функция <tex>f(x,w)</tex> при фиксированном векторе параметров <tex>w</tex>.
-
===Входные данные===
+
'''Результат:'''
-
* Обучающая выборка <tex>X^l</tex>
+
* <tex>\{(\textrm{FPR}_i, \textrm{TPR}_i)\}_{i=0}^m </tex> — последовательность из <tex>(m+1)</tex> точек ROC-кривой;
-
* <tex>f(x_i,w), \ i=\overline{1,l}</tex> — вероятность того, что <tex>x_i</tex> принадлежит классу {+1}.
+
* <tex>\textrm{AUC}</tex> — площадь под ROC-кривой;
-
===Результат===
+
1. вычислить количество представителей классов <tex>+1</tex> и <tex>-1</tex> в обучающей выборке:
-
<tex>\{(FPR_i, TPR_i)\}_{i=0}^l </tex> — последовательность из <tex>(l+1)</tex> точек на координатной плоскости из области <tex>[0,1] \times [0,1]</tex>, аппроксимирующая RoC-кривую по обучающей выборке <tex>X^l</tex>.
+
<tex>m_- := \sum_{i=1}^m [y_i= -1], \ \ m_+:= \sum_{i=1}^m [y_i= +1] </tex>;
-
 
+
2. упорядочить выборку <tex>X^m</tex> по убыванию значений <tex>f(x_i,w)</tex>;
-
===Описание алгоритма===
+
3. установить начальную точку ROC-кривой:
-
 
+
<tex>(\textrm{FPR}_0,\textrm{TPR}_0) := (0,0)</tex>;
-
1. Вычислим количество представителей классов {+1} и {-1} в обучающей выборке:
+
<tex>\textrm{AUC} := 0</tex>;
-
<tex>l_-:= \sum_{i=1}^l [y_i= -1], \ l_+:= \sum_{i=1}^l [y_i= +1] </tex>;
+
4. для всех <tex> i:= 1..m </tex>
-
2. Упорядочим выборку <tex>X^l</tex> по убыванию значения <tex>f(x_i,w)</tex>;
+
если <tex>(y_i = -1)</tex>, то сместиться на один шаг вправо:
-
3. Начальная точка кривой <tex>(FPR_0,TPR_0):=(0,0)</tex>;
+
<tex>\textrm{FPR}_i := \textrm{FPR}_{i-1} + \frac{1}{m_-}; \ \ \textrm{TPR}_i := \textrm{TPR}_{i-1}</tex>;
-
4. Повторять для всех <tex> i= \overline{1,l} </tex>:
+
<tex>\textrm{AUC} := \textrm{AUC} + \frac{1}{m_-} \textrm{TPR}_i;
-
Если <tex>(y_i = -1)</tex>, то сместиться вправо:
+
5. иначе сместиться вверх:
-
<tex>FPR_i:= FPR_{i-1} + \frac{1}{l_-}, \ TPR_i:= TPR_{i-1}</tex>;
+
<tex>\textrm{FPR}_i := \textrm{FPR}_{i-1}; \ \ \textrm{TPR}_i := \textrm{TPR}_{i-1} + \frac{1}{m_+}</tex>;
-
иначе сместиться вверх:
+
-
<tex>FPR_i:= FPR_{i-1} + \frac{1}{l_-}, \ TPR_i:= TPR_{i-1}+\frac{1}{l_+}</tex>;
+
-
 
+
-
== Функционал качества ==
+
-
 
+
-
В качестве функционала качества, инвариантного относительно выбора цен ошибок, используют площадь под RoC-кривой. Эту величину также называют AUC (Area Under Curve). Чем больше значение AUC, тем «лучше» алгоритм. Данный показатель предназначен скорее для сравнительного анализа нескольких моделей, не предоставляя полезной информации о конкретном классификаторе.
+
-
 
+
-
Намного большую информацию о ценности бинарного классификатора несут в себе такие показатели, как ''чувствительность'' и ''специфичность'':
+
-
[[Изображение:RoC-3.jpg|thumb|Рис. 3. Чувствительность и специфичность алгоритма на RoC-кривой]]
+
-
 
+
-
* ''Чувствительность'' алгоритма — совпадает с True Positive Rate <tex>(TPR)</tex>, изменяется в интервале <tex>[0,1]</tex>;
+
-
* ''Специфичность'' алгоритма — вводится, как <tex>(1-FPR)</tex>, и также изменяется в интервале <tex>[0,1]</tex>.
+
-
 
+
-
Идеальный случай — когда значения показателей чувствительности и специфичности близки к 1, однако на практике это достигается редко.
+
-
 
+
-
Модель с высокой чувствительностью часто дает истинный результат при наличии положительного исхода (обнаруживает положительные примеры). Наоборот, модель с высокой специфичностью чаще дает истинный результат при наличии отрицательного исхода (обнаруживает отрицательные примеры). Если рассуждать в терминах медицины – задачи диагностики заболевания, где модель классификации пациентов на больных и здоровых называется ''диагностическим тестом'', то получится следующее:
+
-
* Чувствительный ''диагностический тест'' проявляется в гипердиагностике – максимальном предотвращении пропуска больных;
+
-
* Специфичный ''диагностический тест'' диагностирует только доподлинно больных. Это важно в случае, когда, например, лечение больного связано с серьезными побочными эффектами и гипердиагностика пациентов нежелательна.
+
== См. также ==
== См. также ==
Строка 80: Строка 101:
== Ссылки ==
== Ссылки ==
-
* [http://www.basegroup.ru/library/analysis/regression/logistic/ Логистическая регрессия и RoC-анализ]
+
* [http://www.basegroup.ru/library/analysis/regression/logistic/ Логистическая регрессия и ROC-анализ]
* [http://en.wikipedia.org/wiki/ROC_curve RoC-curve (english wikipedia)]
* [http://en.wikipedia.org/wiki/ROC_curve RoC-curve (english wikipedia)]
[[Категория:Классификация]]
[[Категория:Классификация]]
-
 
-
{{Задание|osa|Константин Воронцов|21 января 2010}}
 

Версия 22:13, 21 июля 2011

Содержание

Кривая ошибок или ROC-кривая – графичекая характеристика качества бинарного классификатора, зависимость доли верных положительных классификаций от доли ложных положительных классификаций при варьировании порога решающего правила. Преимуществом ROC-кривой является её инвариантность относительно отношения цены ошибки I и II рода.

Задача классификации

Рассмотрим задачу классификации в случае двух классов, называемых «положительным» и «отрицательным». Обозначим множество классов через Y=\{-1,+1\}. Большинство известных классификаторов могут быть представлены в виде

a(x) = \textrm{sign} (f(x,w) - w_0),

где x — произвольный объект, f(x,w)дискриминантная функция, w — вектор параметров, определяемый по обучающей выборке, w_0 — порог. Уравнение f(x,w)=w_0 определяет разделяющую поверхность. Примером является линейный классификатор, в котором дискриминантная функция имеет вид скалярного произведения вектора описания объекта на вектор параметров: a(x) = \textrm{sign} (\langle x,w \rangle - w_0).

Пусть \lambda_y – цена ошибки (штраф за ошибку) на объекте класса y \in \{-1, +1\}.

Для байесовского классификатора при достаточно общих предположениях доказано, что оптимальное значение порога w_0 зависит только от соотношения цены ошибок:

w_0 = \frac{\lambda_{-1}}{\lambda_{+1}},

тогда как оптимальное значение вектора параметров, наоборот, зависит от выборки и не зависит от цены ошибок. Таким образом, варьирование порога w_0 для многих классификаторов эквивалентно варьированию отношения цены ошибок на отрицательных и положительных объектах. На практике цены ошибок зависят от особенностей конкретной задачи (например, от различных экономических соображений или экспертных оценок) и могут многократно пересматриваться.

Заметим, что частным случаем линейного байесовского классификатора является логистическая регрессия.

ROC-кривая наглядно представляет, каким будет качество классификации при различных w_0 и фиксированном w.

TPR и FPR

Рис.1. «Случайное гадание».
Рис.1. «Случайное гадание».
Рис.2. «Хороший» классификатор.
Рис.2. «Хороший» классификатор.

Пусть задана выборка объектов X^m = (x_1,\ldots,x_m) с соответствующими им верными ответами y_1,\ldots,y_m. Тогда для классификатора a(x) можно определить две характеристики качества:

  1. Доля ложных положительных классификаций (False Positive Rate, FPR):
    \textrm{FPR}(a,X^m) = \frac{\sum_{i=1}^m [a(x_i) = +1][y_i = -1]}{\sum_{i=1}^m [y_i = -1]};
  2. Доля верных положительных классификаций (True Positive Rate, TPR):
    \textrm{TPR}(a,X^m) = \frac{\sum_{i=1}^m [a(x_i) = +1][y_i = +1]}{\sum_{i=1}^m [y_i = +1]}.

Чувствительность и специфичность

Наряду с FPR и TPR используют также показатели чувствительности и специфичности, которые также изменяются в интервале [0,1]:

  • чувствительность алгоритма a совпадает с \textrm{TPR};
  • специфичность алгоритма a определяется как (1-\textrm{FPR}).

Модель с высокой чувствительностью часто дает истинный результат при наличии положительного исхода (обнаруживает положительные примеры). Наоборот, модель с высокой специфичностью чаще дает истинный результат при наличии отрицательного исхода (обнаруживает отрицательные примеры). Если рассуждать в терминах медицины – задачи диагностики заболевания, где модель классификации пациентов на больных и здоровых называется диагностическим тестом, то получится следующее:

  • чувствительный диагностический тест проявляется в гипердиагностике – максимальном предотвращении пропуска больных;
  • специфичный диагностический тест диагностирует только доподлинно больных. Это важно в случае, когда, например, лечение больного связано с серьезными побочными эффектами и гипердиагностика пациентов нежелательна.

ROC-кривая

ROC-кривая показывает зависимость TPR от FPR при варьировании порога w_0. Она проходит из точки (0,0), соответствующей максимальному значению w_0, в точку (1,1), соответствующую минимальному значению w_0.

При w_0 \;>\, \max_{1=1..m} f(x_i,w) все объекты классифицируются как отрицательные, и ошибки возникают на всех положительных объектах, \textrm{FPR}=0, \textrm{TPR}=0.

При w_0 \;<\, \min_{1=1..m} f(x_i,w) все объекты классифицируются как положительные, и ошибки возникают на всех отрицательных объектах, \textrm{FPR}=1, \textrm{TPR}=1.

ROC-кривая монотонно не убывает. Чем выше лежит кривая, тем лучше качество классификации.

На рисунке 1 приведена ROC-кривая, соответствующая худшему случаю — алгоритму «случайного гадания». На рисунке 2 изображён общий случай. Лучший случай — это кривая, проходящая через точки (0,0);\; (0,1);\; (1,1)

Площадь под ROC-кривой AUC

Площадь под ROC-кривой AUC (Area Under Curve) является агрегированной характеристикой качества классификации, не зависящей от соотношения цен ошибок. Чем больше значение AUC, тем «лучше» модель классификации. Данный показатель часто используется для сравнительного анализа нескольких моделей классификации.

Алгоритм построения ROC-кривой

Следующий алгоритм строит ROC-кривую за m обращений к дискриминантной функции.

Входные данные:

  • Обучающая выборка X^m
  • Функция f(x,w) при фиксированном векторе параметров w.

Результат:

  • \{(\textrm{FPR}_i, \textrm{TPR}_i)\}_{i=0}^m — последовательность из (m+1) точек ROC-кривой;
  • \textrm{AUC} — площадь под ROC-кривой;
1. вычислить количество представителей классов +1 и -1 в обучающей выборке:
   m_- := \sum_{i=1}^m [y_i= -1], \ \  m_+:= \sum_{i=1}^m [y_i= +1] ;
2. упорядочить выборку X^m по убыванию значений f(x_i,w);
3. установить начальную точку ROC-кривой: 
   (\textrm{FPR}_0,\textrm{TPR}_0) := (0,0);
   \textrm{AUC} := 0;
4. для всех  i:= 1..m 
     если (y_i = -1), то сместиться на один шаг вправо:
     \textrm{FPR}_i := \textrm{FPR}_{i-1} + \frac{1}{m_-}; \ \ \textrm{TPR}_i := \textrm{TPR}_{i-1};
     \textrm{AUC} := \textrm{AUC} + \frac{1}{m_-} \textrm{TPR}_i;
5.   иначе сместиться вверх:
     <tex>\textrm{FPR}_i := \textrm{FPR}_{i-1}; \ \ \textrm{TPR}_i := \textrm{TPR}_{i-1} + \frac{1}{m_+};

См. также

Ссылки

Личные инструменты