¿Scikit-learn usa la regularización por defecto?

12

Acabo de ajustar una curva logística a algunos datos falsos. Hice los datos esencialmente una función de paso.

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

Pero cuando miro la curva ajustada, la pendiente es muy pequeña. La función que minimiza mejor la función de costo, suponiendo la entropía cruzada, es la función de paso. ¿Por qué no parece una función de paso? ¿Hay alguna regularización, L1 o L2, realizada por defecto?

Regresión logística usando scikit-learn

sebastianspiegel
fuente

Respuestas:

8

Por favor, eche un vistazo a la documentación . La primera línea muestra los parámetros predeterminados, que incluyen penalty='l2'y C=1.0.

En realidad, no puede deshabilitar la regularización por completo, solo puede regularizar menos ... intente configurar, C=1e10por ejemplo.

stmax
fuente
2
Ahora puede (a partir de la versión 0.21.0) pasar penalty='none'. scikit-learn.org/stable/whats_new.html#id15
Ben Reiniger
6

Sí, hay regularización por defecto. Parece ser una regularización L2 con una constante de 1.

Jugué con esto y descubrí que la regularización L2 con una constante de 1 me da un ajuste que se ve exactamente como lo que me da el aprendizaje de sci-kit sin especificar la regularización.

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

es lo mismo que

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

Cuando elegí C=10000, obtuve algo que se parecía mucho más a la función de paso.

sebastianspiegel
fuente