Kürzlich hat ein Projekt, an dem ich beteiligt bin, ein lineares Perzeptron für die multiple (21 Prädiktor-) Regression verwendet. Es wurde stochastische GD verwendet. Wie unterscheidet sich dies von der linearen OLS-Regression?
regression
machine-learning
Simon Kuang
quelle
quelle
Perceptron
Klasse, mit der Sie verknüpfen, ist eher für einen Klassifizierer (binäre Ausgabe) als für einen Regressor (kontinuierliche Ausgabe). Ist das der tatsächliche Code, den Sie verwendet haben? Wenn ja, ist das der Unterschied. :)SGDRegressor
. Wäre dies gleichbedeutend mit einer linearen Regression?SGDRegressor(loss='squared_loss', penalty='none')
haben, ist das OLS.Antworten:
Die
Perceptron
Klasse von scikit-learn (entsprichtSGDClassifier(loss="perceptron", penalty=None, learning_rate="constant", eta0=1)
) verwendet die folgende Zielfunktion: In diesem Fall . Wenn das richtige Vorzeichen hat, entsteht kein Verlust; Andernfalls ergibt sich ein linearer Verlust. Insbesondere das Perzeptron verwendet eine feste Lernrate, was ebenfalls zu einer gewissen Verrücktheit bei der Optimierung führen kann.Die Regression der kleinsten Quadrate verwendet dagegen Hier kann beliebig real sein; Sie können ihm Klassifizierungsziele in wenn Sie möchten, aber es wird Ihnen kein sehr gutes Modell geben. Sie können dies mit optimieren, wenn Sie möchten.
SGDRegressor(loss="squared_loss", penalty=None)
Die beiden definieren grundlegend unterschiedliche Modelle: Das Perzeptron sagt eine binäre Klassenbezeichnung mit voraus, während die lineare Regression mit einen reellen Wert vorhersagt . Diese Antwort spricht darüber, warum der Versuch, ein Klassifizierungsproblem mit einem Regressionsalgorithmus zu lösen, problematisch sein kann.sign(wTxi) wTxi
quelle