Naar mijn mening lijken de SGD-classificator en Logistische regressie op elkaar. Een SGD-classifier met loss = “log” implementeert Logistische regressie en loss = “hinge” implementeert Lineaire SVM. Ik begrijp ook dat logistische regressie gradiëntafdaling gebruikt als de optimalisatiefunctie en SGD gebruikt stochastische gradiëntafdaling die veel sneller convergeert. Maar welke van de twee algoritmen moeten in welke scenarios worden gebruikt? En hoe zijn SGD en logistieke regressie vergelijkbaar en hoe verschillen ze?
Reacties
- scikit-learn.org/stable/modules/generated/…
Antwoord
Welkom bij SE: Data Science.
SGD is een optimalisatiemethode, terwijl Logistic Regression (LR) een algoritme / model voor machine learning is. U kunt zich voorstellen dat een machine learning-model een verliesfunctie definieert en dat de optimalisatiemethode deze minimaliseert / maximaliseert.
Sommige machine learning-bibliotheken kunnen gebruikers in verwarring brengen over de twee concepten. In scikit-learn is er bijvoorbeeld een model genaamd SGDClassifier
dat sommige gebruikers zou kunnen misleiden door te denken dat SGD een classificator is. Maar nee, dat is een lineaire classificator die is geoptimaliseerd door de SGD.
In het algemeen kan SGD worden gebruikt voor een breed scala aan algoritmen voor machine learning, niet alleen voor LR of lineaire modellen. En LR kan andere optimizers gebruiken, zoals L-BFGS, geconjugeerde gradiënt of Newton-achtige methoden.
Opmerkingen
- Dus, als ik
clf = SGDClassifier( class_weight='balanced', alpha=i, penalty='l2', loss='hinge', random_state=42)
het is een implementatie van Linear SVM en als ik schrijfclf = SGDClassifier( class_weight='balanced', alpha=i, penalty='l2', loss='log', random_state=42)
. Het is een implementatie van Logisitische regressie. Heb ik gelijk? - @AkashDubey Ja