A quanto mi risulta, il classificatore SGD e la regressione logistica sembrano simili. Un classificatore SGD con loss = “log” implementa la regressione logistica e loss = “hinge” implementa Linear SVM. Capisco anche che la regressione logistica utilizza la discesa del gradiente come funzione di ottimizzazione e SGD utilizza la discesa del gradiente stocastico che converge molto più velocemente. Ma quale dei due algoritmi utilizzare in quali scenari? Inoltre, in che modo SGD e la regressione logistica sono simili e in che modo sono diversi?
Commenti
- scikit-learn.org/stable/modules/generated/…
Risposta
Benvenuto in SE: Data Science.
SGD è un metodo di ottimizzazione, mentre Logistic Regression (LR) è un algoritmo / modello di apprendimento automatico. Puoi pensare che un modello di apprendimento automatico definisce una funzione di perdita e il metodo di ottimizzazione la minimizza / massimizza.
Alcune librerie di machine learning potrebbero confondere gli utenti sui due concetti. Ad esempio, in scikit-learn cè un modello chiamato SGDClassifier
che potrebbe indurre in errore alcuni utenti a pensare che SGD sia un classificatore. Ma no, quello “è un classificatore lineare ottimizzato da SGD.
In generale, SGD può essere utilizzato per unampia gamma di algoritmi di apprendimento automatico, non solo LR o modelli lineari. E LR può utilizzare altri ottimizzatori come L-BFGS, coniugato gradiente o metodi simili a Newton.
Commenti
- Quindi, se scrivo
clf = SGDClassifier( class_weight='balanced', alpha=i, penalty='l2', loss='hinge', random_state=42)
è unimplementazione di Linear SVM e se scrivoclf = SGDClassifier( class_weight='balanced', alpha=i, penalty='l2', loss='log', random_state=42)
. È unimplementazione della regressione Logisitic. Ho ragione? - @AkashDubey Sì