Efter min forståelse virker SGD-klassificeringsprogrammet og logistisk regression ens. En SGD-klassifikator med loss = “log” implementerer Logistisk regression og loss = “hængsel” implementerer Lineær SVM. Jeg forstår også, at logistisk regression bruger gradientnedstigning som optimeringsfunktionen, og SGD bruger stokastisk gradientnedstigning, som konvergerer meget hurtigere. Men hvilke af de to algoritmer, der skal bruges i hvilke scenarier? Hvordan er SGD og logistisk regression ens, og hvordan er de forskellige?
Kommentarer
- scikit-learn.org/stable/modules/generated/…
Svar
Velkommen til SE: Data Science.
SGD er en optimeringsmetode, mens Logistic Regression (LR) er en algoritme / model for maskinindlæring. Du kan tænke på, at en maskinlæringsmodel definerer en tabsfunktion, og optimeringsmetoden minimerer / maksimerer den.
Nogle maskinlæringsbiblioteker kan gøre brugerne forvirrede over de to begreber. For eksempel er der i scikit-learning en model kaldet SGDClassifier
, som kan vildlede nogle brugere til at tro, at SGD er en klassifikator. Men nej, det er en lineær klassificering optimeret af SGD.
Generelt kan SGD bruges til en lang række maskinindlæringsalgoritmer, ikke kun LR eller lineære modeller. Og LR kan bruge andre optimatorer som L-BFGS, konjugeret gradient eller Newton-lignende metoder.
Kommentarer
- Så hvis jeg skriver
clf = SGDClassifier( class_weight='balanced', alpha=i, penalty='l2', loss='hinge', random_state=42)
det er en implementering af Lineær SVM, og hvis jeg skriverclf = SGDClassifier( class_weight='balanced', alpha=i, penalty='l2', loss='log', random_state=42)
. Det er en implementering af logisitisk regression. Har jeg ret? - @AkashDubey Ja