Понимание кривой ROC

57

У меня проблемы с пониманием кривой ROC.

Есть ли какое-либо преимущество / улучшение в области под кривой ROC, если я строю разные модели из каждого уникального подмножества обучающего набора и использую его для получения вероятности? Например, если имеет значения , и я строю модель , используя из 1-го по 4-е значения и 8-го по 9-е значения и построить модель , используя оставшиеся данные поезда. Наконец, генерировать вероятность. Любые мысли / комментарии будут высоко оценены.y{a,a,a,a,b,b,b,b}AayyB

Вот код r для лучшего объяснения моего вопроса:

Y    = factor(0,0,0,0,1,1,1,1)
X    = matirx(rnorm(16,8,2))
ind  = c(1,4,8,9)
ind2 = -ind

mod_A    = rpart(Y[ind]~X[ind,])
mod_B    = rpart(Y[-ind]~X[-ind,])
mod_full = rpart(Y~X)

pred = numeric(8)
pred_combine[ind]  = predict(mod_A,type='prob')
pred_combine[-ind] = predict(mod_B,type='prob')
pred_full          = predict(mod_full, type='prob')

Так что мой вопрос, площадь под кривой ROC pred_combineпротив pred_full.

Тай Шин
источник
3
Лучший пример мог бы многое сделать для улучшения вопроса.
mpiktas
Насколько я понимаю, вы хотите увеличить AUC, выбрав некоторые конкретные образцы? Если это ваша цель, я твердо верю, что такой подход смещения выборки совершенно неверен, по крайней мере, если ваша цель - найти хорошую меру для эффективности классификации.
Рапайо

Ответы:

174

Я не уверен, что получил вопрос, но так как название требует объяснения кривых ROC, я попробую.

Кривые ROC используются для определения того, насколько хорошо ваш классификатор может разделять положительные и отрицательные примеры, и для определения наилучшего порога для их разделения.

Чтобы иметь возможность использовать кривую ROC, ваш классификатор должен быть ранжирован, то есть он должен иметь возможность ранжировать примеры таким образом, чтобы те, у кого более высокий ранг, с большей вероятностью были положительными. Например, Логистическая регрессия выводит вероятности, которые можно использовать для ранжирования.

Рисование ROC кривой

Учитывая набор данных и классификатор ранжирования:

  • упорядочить тестовые примеры по шкале от самой высокой до самой низкой
  • начать с(0,0)
  • для каждого примера в отсортированном порядке x
    • если положительный, переместите вверхx1/pos
    • если отрицателен, переместите вправоx1/neg

где и - это доли положительных и отрицательных примеров соответственно.posneg

Эта хорошая анимированная картинка должна проиллюстрировать этот процесс

построение кривой

На этом графике ось - истинно положительная скорость, а ось - ложноположительная скорость. Обратите внимание на диагональную линию - это базовая линия, которую можно получить с помощью случайного классификатора. Чем дальше наша кривая ROC выше линии, тем лучше.yx

Площадь под РПЦ

площадь под Рок

Область под кривой ROC (заштрихована), естественно, показывает, насколько далеко кривая от базовой линии. Для базовой линии это 0,5, а для идеального классификатора - 1.

Вы можете прочитать больше об AUC ROC в этом вопросе: что означает AUC и что это такое?

Выбор лучшего порога

Я кратко опишу процесс выбора наилучшего порога, и более подробную информацию можно найти в справочнике.

Чтобы выбрать лучший порог, вы видите каждую точку вашей кривой ROC в качестве отдельного классификатора. Этот мини-классификатор использует оценку, полученную баллом, как границу между + и - (т.е. он классифицируется как + все баллы выше текущего)

В зависимости от положительного / отрицательного коэффициента в нашем наборе данных - параллельно базовой линии в случае 50% / 50% - вы строите линии точности ISO и выбираете одну из них с максимальной точностью.

Вот иллюстрация, которая иллюстрирует это, и для деталей я снова приглашаю вас к ссылке

выбирая лучший порог

Ссылка

Алексей Григорьев
источник
Спасибо за отличный комментарий! Я сожалею, что не смогу проголосовать за ваш ответ. Кажется, мне нужно иметь более 15 репутации :(
Тай Шин
Просто любопытно, размер вашего шага должен зависеть от количества положительных / отрицательных ярлыков, произведенных вашим классификатором правильно? Т.е. в gif размер шага вверх равен .1, если бы у вас была дополнительная положительная метка (вместо отрицательной метки), то «кривая» оказалась бы на 1.1 по вертикальной оси (или, может быть, я что-то упустил ?). Итак, в таком случае размер вашего шага должен быть меньше?
kyphos
Нет, размер шага зависит от количества положительных / отрицательных примеров в наборе данных, а не от точности классификатора.
Алексей Григорьев
2
@ Гунг понял. Алексей: вместо положительных и отрицательных примеров, думаю, так и должно быть: истинные позитивы и ложные позитивы. Возможно, вы сможете увидеть мой вариант ответа, который был отменен бандой. спасибо
Escachator
3
@AlexeyGrigorev, любите ответ, который вы даете, и голосуйте. Я не уверен, есть ли два определения ROC. Я имею в виду определение ROC здесь ( en.wikipedia.org/wiki/Receiver_operating_characteristic ), ось X должна быть ложноположительной, то есть (число предсказаний должно быть положительным, но должно быть отрицательным) / (# всего отрицательный), я думаю, что в ссылке, я думаю, что ось х не рисует ложноположительный показатель, который не учитывает (# общего отрицательного)?
Лин Ма