Scikit-Learn utilizza la regolarizzazione per impostazione predefinita?


12

Ho appena adattato una curva logistica ad alcuni dati falsi. Ho reso i dati essenzialmente una funzione di passaggio.

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

Ma quando guardo la curva adattata, la pendenza è molto piccola. La funzione che minimizza al meglio la funzione di costo, assumendo l'entropia incrociata, è la funzione di passaggio. Perché non sembra una funzione step? C'è una regolarizzazione, L1 o L2, eseguita di default?

Regressione logistica mediante scikit-learn

Risposte:


8

Si prega di dare un'occhiata alla documentazione . La prima riga mostra i parametri predefiniti, che includono penalty='l2'e C=1.0.

In realtà non puoi disabilitare completamente la regolarizzazione, puoi solo regolarizzare di meno ... prova C=1e10ad esempio l' impostazione .


2
Ora puoi (a partire dalla versione 0.21.0) passare penalty='none'. scikit-learn.org/stable/whats_new.html#id15
Ben Reiniger

6

Sì, c'è la regolarizzazione di default. Sembra essere la regolarizzazione L2 con una costante di 1.

Ho giocato con questo e ho scoperto che la regolarizzazione L2 con una costante di 1 mi dà un adattamento che assomiglia esattamente a ciò che l'apprendimento di sci-kit mi dà senza specificare la regolarizzazione.

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

equivale a

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

Quando ho scelto C=10000, ho ottenuto qualcosa che assomigliava molto di più alla funzione step.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.