Как выполнить логистическое лассо в питоне?
Пакет scikit-learn предоставляет функции Lasso()
а также LassoCV()
но нет возможности уместить логистическую функцию вместо линейной... Как выполнить логистическое лассо в python?
1 ответ
Лассо оптимизирует задачу наименьших квадратов со штрафом L1. По определению вы не можете оптимизировать логистическую функцию с помощью Лассо.
Если вы хотите оптимизировать логистическую функцию со штрафом L1, вы можете использовать LogisticRegression
оценщик со штрафом L1:
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
log = LogisticRegression(penalty='l1', solver='liblinear')
log.fit(X, y)
Обратите внимание, что только решатели LIBLINEAR и SAGA (добавлены в v0.19) обрабатывают штраф L1.
Вы можете использовать glment в Python. Glmnet использует теплый старт и конвергенцию активных наборов, поэтому он чрезвычайно эффективен. Эти методы делают glment быстрее, чем другие реализации лассо. Вы можете скачать его с https://web.stanford.edu/~hastie/glmnet_python/
1 scikit-learn: sklearn.linear_model.LogisticRegression
sklearn.linear_model.LogisticRegression
from scikit-learn, вероятно, лучший:
как сказал@TomDLT,Lasso
для случая наименьших квадратов (регрессия), а не для логистики (классификация).
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(
penalty='l1',
solver='saga', # or 'liblinear'
C=regularization_strength)
model.fit(x, y)
2 python-glmnet: glmnet.LogitNet
Вы также можете использовать библиотеку python-glmnet Civis Analytics. Это реализует scikit-learnBaseEstimator
API:
# source: https://github.com/civisanalytics/python-glmnet#regularized-logistic-regression
from glmnet import LogitNet
m = LogitNet(
alpha=1, # 0 <= alpha <= 1, 0 for ridge, 1 for lasso
)
m = m.fit(x, y)
Я не знаю, как скорректировать пенальти с помощью LogitNet
, но я позволю тебе понять это.
3 другие
PyMC
вы также можете использовать полностью байесовский подход. вместо того, чтобы использовать оптимизацию со штрафом L1, чтобы найти точечную оценку для ваших коэффициентов, вы можете приблизить распределение ваших коэффициентов с учетом ваших данных. это дает вам тот же ответ, что и оценка максимального правдоподобия со штрафом L1, если вы используете априор Лапласа для ваших коэффициентов. апор Лапласа вызывает разреженность.
у ребят из PyMC есть руководство по настройке чего-то подобного. удачи.