Verwendet scikit-learn standardmäßig die Regularisierung?


12

Ich habe gerade eine logistische Kurve an einige gefälschte Daten angepasst. Ich habe die Daten im Wesentlichen zu einer Schrittfunktion gemacht.

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

Aber wenn ich mir die angepasste Kurve anschaue, ist die Steigung sehr klein. Die Funktion, die die Kostenfunktion unter der Annahme einer Kreuzentropie am besten minimiert, ist die Schrittfunktion. Warum sieht es nicht wie eine Sprungfunktion aus? Gibt es eine Regularisierung, L1 oder L2, die standardmäßig durchgeführt wird?

Logistische Regression mit Scikit-Learn

Antworten:


8

Bitte schauen Sie sich die Dokumentation an . Die erste Zeile zeigt die Standardparameter, einschließlich penalty='l2'und C=1.0.

Sie können die Regularisierung tatsächlich nicht vollständig deaktivieren, Sie können nur weniger regulieren ... versuchen Sie beispielsweise die Einstellung C=1e10.


2
Sie können jetzt (ab Version 0.21.0) bestehen penalty='none'. scikit-learn.org/stable/whats_new.html#id15
Ben Reiniger

6

Ja, es gibt standardmäßig eine Regularisierung. Es scheint sich um eine L2-Regularisierung mit einer Konstanten von 1 zu handeln.

Ich habe damit herumgespielt und herausgefunden, dass die L2-Regularisierung mit einer Konstante von 1 mir eine Anpassung gibt, die genau so aussieht, wie es mir das Sci-Kit-Lernen gibt, ohne die Regularisierung anzugeben.

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

ist das gleiche wie

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

Als ich mich entschied C=10000, bekam ich etwas, das viel mehr wie eine Schrittfunktion aussah.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.