Enligt min förståelse verkar SGD-klassificeraren och logistisk regression likna. En SGD-klassificering med förlust = ”log” implementerar logistisk regression och förlust = ”gångjärn” implementerar linjär SVM. Jag förstår också att logistisk regression använder gradientnedstigning som optimeringsfunktion och SGD använder stokastisk gradientnedstigning som konvergerar mycket snabbare. Men vilka av de två algoritmerna som ska användas i vilka scenarier? Hur liknar SGD och logistisk regression och hur skiljer de sig?
Kommentarer
- scikit-learn.org/stable/modules/generated/…
Svar
Välkommen till SE: Data Science.
SGD är en optimeringsmetod, medan Logistic Regression (LR) är en algoritm / modell för maskininlärning. Du kan tänka dig att en maskininlärningsmodell definierar en förlustfunktion, och optimeringsmetoden minimerar / maximerar den.
Vissa maskininlärningsbibliotek kan göra användarna förvirrade över de två begreppen. Till exempel finns det i scikit-learn en modell som heter SGDClassifier
som kan vilseleda vissa användare att tro att SGD är en klassificerare. Men nej, det är en linjär klassificering optimerad av SGD.
I allmänhet kan SGD användas för ett brett spektrum av maskininlärningsalgoritmer, inte bara LR eller linjära modeller. Och LR kan använda andra optimerare som L-BFGS, konjugerad gradient eller Newton-liknande metoder.
Kommentarer
- Så om jag skriver
clf = SGDClassifier( class_weight='balanced', alpha=i, penalty='l2', loss='hinge', random_state=42)
det är en implementering av Linear SVM och om jag skriverclf = SGDClassifier( class_weight='balanced', alpha=i, penalty='l2', loss='log', random_state=42)
. Det är en implementering av logisitisk regression. Har jag rätt? - @AkashDubey Ja