2015-08-13 2 views
2

Следующее изображение определенно имеет смысл для меня. enter image description hereЭксплуатационная характеристика приемника (ROC) на тестовом наборе

Скажите, что у вас есть несколько подготовленных бинарных классификаторов A, B (B не намного лучше, чем случайное угадывание и т. Д.), И тестовый набор, состоящий из n тестовых образцов, которые идут со всеми этими классификаторами. Поскольку Precision и Recall вычисляются для всех n выборок, эти точки, соответствующие классификаторам, имеют смысл.

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

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

+0

Это может быть хороший вопрос, чтобы спросить о http://stats.stackexchange.com - они больше сосредоточены на статистических данных и таких там. – lmjohns3

ответ

1

Кривая ROC хорошо определена для бинарного классификатора, который выражает свой результат как «счет». Оценкой может быть, например, вероятность быть в положительном классе, или это также может быть разность вероятностей (или даже отношение логарифмов) между распределениями вероятностей по каждому из двух возможных результатов.

Кривая получена путем установления порога принятия решения для этой оценки на разных уровнях и измерения истинно-положительных и ложноположительных показателей с учетом этого порога.

Там хороший пример этого процесса в Wikipedia's "Receiver Operating Characteristic" page:

Например, представьте, что уровни белка в крови у больных людей и здоровых людей, как правило, распределяются с помощью 2 г/дл и 1 г/дл соответственно. Медицинский тест может измерять уровень определенного белка в образце крови и классифицировать любое число выше определенного порога как указание на заболевание. Экспериментатор может настроить порог (черная вертикальная линия на рисунке), которая, в свою очередь, изменит ложную положительную скорость. Увеличение порога приведет к меньшему количеству ложных срабатываний (и более ложных негативов), что соответствует левому движению на кривой. Фактическая форма кривой определяется тем, насколько перекрываются два распределения.

Если код говорит более ясно вам, вот код в scikit-узнать, что computes an ROC curve дано множество предсказаний для каждого элемента в наборе данных. Основная операция, кажется (direct link):

desc_score_indices = np.argsort(y_score, kind="mergesort")[::-1] 
y_score = y_score[desc_score_indices] 
y_true = y_true[desc_score_indices] 

# accumulate the true positives with decreasing threshold 
tps = y_true.cumsum() 
fps = 1 + list(range(len(y_true))) - tps 
return fps, tps, y_score 

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

А вот пример, показывающий, как это привыкает: http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html

+0

«Кривая получается путем установки порога принятия решения для этого показателя на разных уровнях и измерения истинно-положительных и ложноположительных коэффициентов, учитывая, что порог» означает, что полностью параметризованный классификатор не имеет кривой ROC, но единственная точка на ROC из координат (точность, 1-вызов). Это означает, что только алгоритмы, которые отображают функции в класс, имеют ROC-кривые справа? – valentin

+0

Да, это мое понимание этого. – lmjohns3

+0

Так же, как умственное упражнение, скажем, классификатор фиксирован и порог установлен (например, svm), если вы начнете исследовать свой тестовый набор в небольших четких кусках с такой гипотезой, а сюжет (точность, 1-отзыв) указывает каждый время ... Интересно, должно ли оно напоминать дискретную кривую ROC: D – valentin

0

Кривая ROC показывает «Сколько чувствительности вы получите, если увеличить количество FPR на определенную величину». Компромисс между TPR и FPR. Изменчивость исходит из изменения некоторого параметра классификатора (для случая логистической регрессии ниже - это пороговое значение).

Например, логистическая регрессия дает вероятность того, что объект принадлежит положительному классу (значения в [0..1]), но это просто вероятность. Это не класс. Поэтому в общем случае вам нужно указать порог вероятности, выше которого вы классифицируете объект как положительный. Вы можете изучить логистическую регрессию, получить от нее вероятности положительного класса для каждого объекта вашего набора, а затем просто изменить этот пороговый параметр с некоторым шагом от 0 до 1, порождая ваши вероятности (вычисленные на предыдущем шаге) с этим порогом вы получите метки классов для каждого объекта и вычислите TPR и FPR из этих меток. Таким образом, вы получите TPR и FPR для каждого порога. Вы можете пометить их на сюжете и, в конце концов, после того, как вы вычислите пары (TPR, FPR) для всех пороговых значений - проведите через них линию.

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

Смежные вопросы