O scikit-learn usa regularização por padrão?

12

Acabei de ajustar uma curva logística a alguns dados falsos. Fiz os dados essencialmente uma função de etapa.

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

Mas quando olho para a curva ajustada, a inclinação é muito pequena. A função que melhor minimiza a função de custo, assumindo entropia cruzada, é a função de etapa. Por que não se parece com uma função de etapa? Existe alguma regularização, L1 ou L2, feita por padrão?

Regressão logística usando o scikit-learn

sebastianspiegel
fonte

Respostas:

8

Por favor, dê uma olhada na documentação . A primeira linha mostra os parâmetros padrão, que incluem penalty='l2'e C=1.0.

Na verdade, você não pode desativar completamente a regularização, apenas pode regularizar menos ... tente definir, C=1e10por exemplo.

stmax
fonte
2
Agora você pode (a partir da versão 0.21.0) passar penalty='none'. scikit-learn.org/stable/whats_new.html#id15
Ben Reiniger
6

Sim, há regularização por padrão. Parece ser a regularização L2 com uma constante de 1.

Eu brinquei com isso e descobri que a regularização L2 com uma constante de 1 me dá um ajuste que se parece exatamente com o que o sci-kit aprende me fornece sem especificar a regularização.

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

é o mesmo que

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

Quando escolhi C=10000, recebi algo que parecia muito mais com a função step.

sebastianspiegel
fonte