Etter min forståelse virker SGD-klassifisereren og logistisk regresjon lik. En SGD-klassifikator med loss = «log» implementerer Logistisk regresjon og loss = «hengsel» implementerer Lineær SVM. Jeg forstår også at logistisk regresjon bruker gradientnedstigning som optimaliseringsfunksjon og SGD bruker Stokastisk gradientnedstigning som konvergerer mye raskere. Men hvilke av de to algoritmene som skal brukes i hvilke scenarier? Hvordan er SGD og logistisk regresjon like og hvordan er de forskjellige?
Kommentarer
- scikit-learn.org/stable/modules/generated/…
Svar
Velkommen til SE: Data Science.
SGD er en optimaliseringsmetode, mens Logistic Regression (LR) er en maskinlæringsalgoritme / -modell. Du kan tenke på at en maskinlæringsmodell definerer en tapsfunksjon, og optimaliseringsmetoden minimerer / maksimerer den.
Noen maskinlæringsbiblioteker kan gjøre brukerne forvirrede om de to konseptene. For eksempel, i scikit-learn er det en modell kalt SGDClassifier
som kan villede noen brukere til å tro at SGD er en klassifiseringsenhet. Men nei, det er en lineær klassifikator optimalisert av SGD.
Generelt kan SGD brukes til et bredt spekter av maskinlæringsalgoritmer, ikke bare LR eller lineære modeller. Og LR kan bruke andre optimaliserere som L-BFGS, konjugert 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 av Lineær SVM, og hvis jeg skriverclf = SGDClassifier( class_weight='balanced', alpha=i, penalty='l2', loss='log', random_state=42)
. Det er en implementering av logisittisk regresjon. Har jeg rett? - @AkashDubey Ja