Warum gibt die logistische Regression in Spark und R verschiedene Modelle für dieselben Daten zurück?
-
16-10-2019 - |
Frage
Ich habe die logistischen Regressionsmodelle auf R (verglichenglm
) und auf Funken (LogisticRegressionWithLBFGS
) auf einem Datensatz von 390 obs. von 14 Variablen.
Die Ergebnisse unterscheiden sich im Intercept und den Gewichten völlig. Wie kann man das erklären?
Hier sind die Ergebnisse von Spark (logisticRegression withlbfgs):
model.intercept :
1.119830027739959
model.weights :
GEST 0.30798496002530473
DILATE 0.28121771009716895
EFFACE 0.01780105068588628
CONSIS -0.22782058111362183
CONTR -0.8094592237248102
MEMBRAN-1.788173534959893
AGE -0.05285751197750732
STRAT -1.6650305527536942
GRAVID 0.38324952943210994
PARIT -0.9463956993328745
DIAB 0.18151162744507293
TRANSF -0.7413500749909346
GEMEL 1.5953124037323745
Hier ist das Ergebnis von R:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.0682091 3.3944407 0.904 0.366052
GEST 0.0086545 0.1494487 0.058 0.953821
DILATE 0.4898586 0.2049361 2.390 0.016835 *
EFFACE 0.0131834 0.0059331 2.222 0.026283 *
CONSIS 0.1598426 0.2332670 0.685 0.493196
CONTR 0.0008504 0.5788959 0.001 0.998828
MEMBRAN -1.5497870 0.4215416 -3.676 0.000236 ***
AGE -0.0420145 0.0326184 -1.288 0.197725
STRAT -0.3781365 0.5860476 -0.645 0.518777
GRAVID 0.1866430 0.1522925 1.226 0.220366
PARIT -0.6493312 0.2357530 -2.754 0.005882 **
DIAB 0.0335458 0.2163165 0.155 0.876760
TRANSF -0.6239330 0.3396592 -1.837 0.066219 .
GEMEL 2.2767331 1.0995245 2.071 0.038391 *
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Lösung
Ein kurzer Blick auf die docs for logisticregression withlbfgs Zeigt an, dass die Feature-Skalierung und die L2-Regularisierung standardmäßig verwendet werden. Ich vermute, dass R ist glm
Gibt eine maximale Wahrscheinlichkeitsschätzung des Modells während des Sparks zurück LogisticRegressionWithLBFGS
Gibt eine regulierte Modellschätzung zurück. Beachten Sie, wie die geschätzten Modellgewichte des Sparkmodells alle in der Größe kleiner sind als die im R -Modell.
Ich bin mir nicht sicher, ob oder nicht glm
In R implementiert die Skalierung von Funktionen, dies würde jedoch auch zu verschiedenen Modellwerten beitragen.