Прогнозируемые классы из (двоичной) логистической регрессии определяются с использованием порога вероятностей членства в классе, генерируемых моделью. Насколько я понимаю, обычно используется 0.5 по умолчанию.
Но изменение порога изменит предсказанные классификации. Означает ли это, что порог является гиперпараметром? Если это так, то почему (например) невозможно легко выполнить поиск по сетке пороговых значений, используя метод scikit-learn GridSearchCV
(как вы сделали бы для параметра регуляризации C
).
Ответы:
Порог принятия решения создает компромисс между количеством прогнозируемых позитивов и количеством прогнозируемых негативов, поскольку тавтологически увеличение порога принятия решений приведет к уменьшению количества прогнозируемых позитивов и увеличению количества негативов, которые вы прогнозируете. ты предсказываешь.
Порог принятия решения не является гиперпараметром в смысле настройки модели, поскольку он не меняет гибкость модели.
То, как вы думаете о слове «настройка» в контексте порога принятия решения, отличается от того, как настраиваются гиперпараметры. ИзменениеC и других гиперпараметров модели меняет модель (например, коэффициенты логистической регрессии будут отличаться), в то время как настройка порога может сделать только две вещи: обмен TP на FN и FP на TN. Тем не менее, модель остается той же, потому что это не меняет коэффициенты. (То же самое верно для моделей, которые не имеют коэффициентов, таких как случайные леса: изменение порога ничего не меняет в деревьях.) Таким образом, в узком смысле, вы правы, находя лучший компромисс между ошибками это «настройка», но вы ошибаетесь, думая, что изменение порога связано с другими гиперпараметрами модели способом, который оптимизируется
GridSearchCV
.Иными словами, изменение порога принятия решения отражает ваш выбор относительно того, сколько ложных положительных и отрицательных отрицательных значений вы хотите иметь. Рассмотрим гипотетическое, что вы устанавливаете порог принятия решения на абсолютно неправдоподобное значение, такое как -1. Все вероятности неотрицательны, поэтому с этим порогом вы будете предсказывать «положительный» для каждого наблюдения. С определенной точки зрения, это здорово, потому что ваш ложноотрицательный коэффициент равен 0,0. Тем не менее, ваш уровень ложных срабатываний также находится на пределе 1,0, поэтому в этом смысле ваш выбор порога в -1 ужасен.
Идеально, конечно, иметь TPR 1,0, FPR 0,0 и FNR 0,0. Но это обычно невозможно в реальных приложениях, поэтому возникает вопрос: «Сколько FPR я готов принять за сколько TPR?» И это мотивация roc кривых.
источник
GridSearchCV
Да, это так, Сорта. Это гиперпараметр вашего правила принятия решений , но не основная регрессия.
Это ошибка дизайна в sklearn. Лучшая практика для большинства сценариев классификации - подгонять базовую модель (которая предсказывает вероятности), используя некоторую меру качества этих вероятностей (например, потери в логарифмической регрессии). После этого порог принятия решения по этим вероятностям должен быть настроен для оптимизации бизнес-цели вашего правила классификации. Библиотека должна упростить оптимизацию порога принятия решений на основе некоторого показателя качества, но я не верю, что это хорошо.
Я думаю, что это одно из тех мест, где склеарн ошибся. Библиотека включает метод
predict
для всех моделей классификации, пороговые значения которых составляют0.5
. Этот метод бесполезен, и я настоятельно рекомендую никогда не ссылаться на него. К сожалению, sklearn не способствует лучшему рабочему процессу.источник
predict
выбора метода по умолчанию, равного 0,5, в качестве порогового значения, но онGridSearchCV
принимаетscorer
объекты, которые могут настраивать модели с учетом потери перекрестной энтропии вне выборки. Я скучаю по твоей точке?