Я использую объект LogisticRegression scikit-learn для упорядоченной двоичной классификации. Я прочитал документацию по intercept_scaling
, но не понимаю, как разумно выбирать это значение.
Наборы данных выглядят так:
- 10-20 признаков, 300-500 повторений
- Сильно негауссовый, на самом деле большинство наблюдений - нули
- Выходные классы не обязательно равновероятны. В одних случаях они почти 50/50, в других больше похожи на 90/10.
- Обычно
C=0.001
дает хорошие результаты перекрестной проверки.
Документация содержит предупреждения о том, что сам перехват подлежит регуляризации, как и любая другая функция, и что для решения этой проблемы можно использовать intercept_scaling
. Но как выбрать это значение? Один простой ответ — изучить множество возможных комбинаций C
и intercept_scaling
и выбрать параметры, обеспечивающие наилучшую производительность. Но этот поиск параметров займет довольно много времени, и я хотел бы избежать этого, если это возможно.
В идеале я хотел бы использовать перехват для управления распределением выходных прогнозов. То есть я хотел бы убедиться, что вероятность того, что классификатор предсказывает «класс 1» в обучающем наборе, равна доле данных «класса 1» в обучающем наборе. Я знаю, что это имеет место при определенных обстоятельствах, но в моих данных это не так. Я не знаю, связано ли это с регуляризацией или с негауссовым характером входных данных.
Спасибо за любые предложения!