2017-05-14 50 views
3

scikit學習圖書館有以下分類看起來類似:SGDClassifier VS與SGD求解邏輯迴歸scikit學習庫

  • Logistic迴歸分類有不同的求解器和他們 之一是「新元」

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression

  • 它也有不同的分類 'SGDClassifier',損耗 參數可以作爲邏輯迴歸的'log'來提及。

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html#sklearn.linear_model.SGDClassifier

他們是基本相同或不同?如果它們不同,兩者之間的實施有何不同?在給定邏輯迴歸問題的情況下,你如何決定使用哪一個?

+1

的邏輯迴歸模塊沒有SGD-算法( '牛頓-CG', 'lbfgs', 'liblinear', 'sag'),但模塊SGDClassifier也可以解決LogisticRegression。這意味着你有5個解算器可以使用。這些文件和一些規則之間存在巨大差異,在文檔中給出了選擇(例如,組1中的哪一個)。 SGD通常用於非常有效的大規模問題。與其他人相比,它可能非常依賴於選擇的超參數(學習速率,衰減......)。不良的超參數不僅會導致性能下降,而且還會導致不好的結果(未達到global-min) – sascha

+0

謝謝。我在'sag'和'sgd'之間混淆了。 「下陷」是指隨機平均梯度?我認爲這與sgd類似,除非隨機平均梯度與隨機平均梯度下降大不相同。 – coffeebytes

+0

@sascha「** SAG **」代表「** S ** tochastic ** A **平均** ** G **漸變下降」。請參閱http://scikit-learn.org/stable/modules/linear_model.html#logistic-regression – shadowtalker

回答

2

Sklearn的Logistic迴歸雖然沒有「sgd」求解器。它實現了對數正則化邏輯迴歸:它使對數概率最小化。

SGDClassifier是一個廣義線性分類器,它將使用隨機梯度下降作爲求解器。正如http://scikit-learn.org/stable/modules/sgd.html這裏提到的那樣:「儘管SGD在很長一段時間一直在機器學習社區中出現,但它最近在大規模學習的情況下受到了相當多的關注。」 它很容易實現和高效。例如,這是用於神經網絡的解算器之一。

使用SGDClassifier,您可以使用許多不同的損失函數(一種函數來最小化或最大化以找到最佳解決方案),使您可以「調整」模型併爲數據找到最佳的基於sgd的線性模型。事實上,一些數據結構或一些問題需要不同的損失函數。

在您的示例中,SGD分類器將具有與Logistic迴歸相同的損失函數,但是具有不同的求解器。根據您的數據,您可以得到不同的結果。您可以嘗試使用交叉驗證找到最好的一個,或者嘗試使用網格搜索交叉驗證來查找最佳的超參數。

希望能回答你的問題。

+0

非常好的答案! – MaxU

0

所有的線性分類器(SVM,邏輯迴歸,AO)可以使用SGD:隨機梯度下降

相關問題