Scikit-learn utilise-t-il la régularisation par défaut?

12

Je viens d'ajuster une courbe logistique à de fausses données. J'ai fait des données essentiellement une fonction pas à pas.

data = -------------++++++++++++++

Mais quand je regarde la courbe ajustée, la pente est très petite. La fonction qui minimise le mieux la fonction de coût, en supposant une entropie croisée, est la fonction de pas. Pourquoi ne ressemble-t-elle pas à une fonction pas à pas? Y a-t-il une régularisation, L1 ou L2, effectuée par défaut?

Régression logistique avec scikit-learn

sebastianspiegel
la source

Réponses:

8

Veuillez consulter la documentation . La première ligne montre les paramètres par défaut, qui incluent penalty='l2'et C=1.0.

En fait, vous ne pouvez pas désactiver complètement la régularisation, vous ne pouvez que régulariser moins ... essayez de définir C=1e10par exemple.

stmax
la source
2
Vous pouvez maintenant (à partir de la version 0.21.0) réussir penalty='none'. scikit-learn.org/stable/whats_new.html#id15
Ben Reiniger
6

Oui, il y a régularisation par défaut. Il semble s'agir d'une régularisation L2 avec une constante de 1.

J'ai joué avec cela et j'ai découvert que la régularisation L2 avec une constante de 1 me donne un ajustement qui ressemble exactement à ce que sci-kit m'apprend sans spécifier de régularisation.

from sklearn.linear_model import LogisticRegression    
model = LogisticRegression()
model.fit(X, y)

est le même que

model = LogisticRegression(penalty="l2", C=1)
model.fit(X, y)

Quand j'ai choisi C=10000, j'ai obtenu quelque chose qui ressemblait beaucoup plus à la fonction pas à pas.

sebastianspiegel
la source