私は機械学習に不慣れで、私のプロジェクトの分類アルゴリズムを分析しようとしています。 SGDClassifier
ライブラリでsklearn
に出くわしました。しかし、多くの論文がSGDを最適化手法と呼んでいます。誰かがSGDClassifier
がどのように実装されているか説明できますか?
SGDsikitから取得-ドキュメントを学ぶ
loss="hinge"
:(ソフトマージン)線形サポートベクターマシン、loss="modified_huber"
:平滑化されたヒンジ損失、loss="log"
:ロジスティック回帰
[〜#〜] sgd [〜#〜] は確かに、関数の最小値を見つけるために使用される手法です。 SGDClassifier
は、トレーニングにSGDを使用する(つまり、SGDを使用して損失の最小値を探す)線形分類器(デフォルトではsklearn
では線形SVMです)です。 ドキュメント によると:
SGDClassifierは、SGDトレーニングを使用した線形分類器(SVM、ロジスティック回帰、a.o。)です。
この推定量は、確率的勾配降下法(SGD)学習を使用して正則化線形モデルを実装します。損失の勾配は一度に各サンプルで推定され、モデルは強度スケジュール(学習率)の減少とともに更新されます。 SGDは、ミニバッチ(オンライン/アウトオブコア)学習を可能にします。partial_fitメソッドを参照してください。デフォルトの学習率スケジュールを使用して最良の結果を得るには、データの平均と単位分散がゼロである必要があります。
この実装は、フィーチャの浮動小数点値の密または疎配列として表されるデータで機能します。適合するモデルは、損失パラメーターで制御できます。デフォルトでは、線形サポートベクターマシン(SVM)に適合します。
SGDClassifier は、確率的勾配降下(SGD)学習を使用して正則化された線形モデルを実装する線形分類器です。
その他の分類子:
classifiers = [
("ASGD", SGDClassifier(average=True, max_iter=100)),
("Perceptron", Perceptron(tol=1e-3)),
("Passive-Aggressive I", PassiveAggressiveClassifier(loss='hinge',
C=1.0, tol=1e-4)),
("Passive-Aggressive II", PassiveAggressiveClassifier(loss='squared_hinge',
C=1.0, tol=1e-4)),
("SAG", LogisticRegression(solver='sag', tol=1e-1, C=1.e4 / X.shape[0]))
]
確率的勾配降下法( sgd )はソルバーです。これは、(線形)サポートベクターマシンやロジスティック回帰などの凸損失関数の下で線形分類器を識別学習するためのシンプルで効率的なアプローチです。
neural_network.MLPClassifier のsgdの他の代替ソルバーは、lbfgsおよびです。アダム
solver : {‘lbfgs’, ‘sgd’, ‘adam’}, default ‘adam’
重み最適化のソルバー。
「lbfgs」は、準ニュートン法のファミリーのオプティマイザーです。
「sgd」は確率的勾配降下法を指します。
「adam」は、Kingma、Diederik、およびJimmyBaによって提案された確率的勾配ベースのオプティマイザを指します
SGDClassifierの実装に関する詳細は、@ SGDClassifier ドキュメントページで読むことができます。
簡単に言えば:
この推定量は、確率的勾配降下法(SGD)学習を使用して正則化線形モデルを実装します。損失の勾配は一度に各サンプルで推定され、モデルは強度スケジュール(学習率)の減少とともに更新されます。 SGDはミニバッチ(オンライン/アウトオブコア)学習を可能にします