Функция создания модели логистической регрессии в sklearn:
model = LogisticRegression( solver='saga', penalty='l2', max_iter=10000, random_state=42 )
Теоретическая справка по параметрам:
-
solver — алгоритм оптимизации. Варианты:
-
'liblinear' — для небольших наборов с L1 или L2 регуляризацией.
-
'lbfgs' — быстрый и устойчивый, подходит для L2.
-
'sag' и 'saga' — стохастические градиенты, эффективны для больших наборов и регуляризаций L1, L2, Elastic Net.
'saga' — наиболее универсальный и современный solver, поддерживает все типы регуляризаций, подходит для разреженных данных.
-
penalty — тип регуляризации для предотвращения переобучения:
-
'l2' (по умолчанию) — классическая Ridge-регуляризация, штрафует большие коэффициенты.
-
'l1' — Lasso-регуляризация, способствует разреженности коэффициентов (некоторые станут ровно 0, что выполняет отбор признаков).
-
'elasticnet' — комбинированная регуляризация (L1 + L2).
-
'none' — без регуляризации (рекомендуется редко).
-
max_iter — максимальное число итераций для сходимости оптимизатора. Отвечает за то, сколько раз алгоритм обновляет коэффициенты. Значение 10000 очень большое и обычно достаточно, чтобы добиться сходимости.
-
random_state — обеспечивает повторяемость результатов путем фиксирования генератора случайных чисел.
Что лучше использовать?
-
Для больших или разреженных данных и возможности L1-регуляризации выбирайте solver='saga'.
-
Если данные небольшие и предпочтительна простота, лучше solver='liblinear'.
-
Регуляризация 'l2' — универсальный, надежный выбор.
-
Если хотите делать отбор признаков в модели, используйте 'l1' или 'elasticnet' с solver 'saga'.
-
Устанавливайте max_iter достаточно большим (1000–10000), чтобы избежать проблем со сходимостью.
-
Всегда масштабируйте признаки для улучшения сходимости, особенно при использовании saga или sag.
Пример
model = LogisticRegression(solver='saga', penalty='l2', max_iter=10000, random_state=42)
означает, что модель будет обучаться стохастическим методом оптимизации с классической L2-регуляризацией, с максимальным числом итераций 10,000 для обеспечения сходимости, и с фиксированным random_state для воспроизводимости.
Это современный, универсальный и надежный выбор для большинства задач логистической регрессии.