実装リニア、バイナリSVM(サポートベクトルマシン)
-
20-09-2019 - |
質問
を実装したい簡単なSVM識別の場合には高次元のバイナリデータ(テキスト)、と思う単純な線形SVMをするのがいいでしょう。の理由で行われている自分自身は基本的にはたい、と願っていることだと思うかい、ライブラリーを使用してはいないんです。
この問題は、ほとんどのチュートリアルに方程式を解決することができとして、"次の問題"い合、実際のアルゴリズム!できないので、代わり点に私は非常に単純な実装を勉強できたことは、より良い)をチュートリアル合うように実施いんですよ。
おみやげをたくさん!
解決
一部の疑似コードを参考にし 逐次最小限の最適化 (SMO)の方法でこの論文におけるサステイナビリティ*プラット: 高速研修のサポートベクターマシンを逐次最小限の最適化.また、Javaの実装は、SMOアルゴリズム開発のための研究や教育目的SVM-JAVA).
その他一般的に使用されている方法を解決するQP最適化問題を含む:
- 制約のある共役勾配
- 内点法
- 活動の設定方法
だますことをあらかじめご了解の数学の知識を理解するために不可欠なこともラグランジュ乗数,Karush–Kuhn–Tucker条件ます。
他のヒント
あなたはカーネルを使用してかどうかに興味がありますか?カーネルがなければ、最適化問題のこれらの種類を解決する最良の方法は、確率的勾配降下法の様々な形を介して行われます。良いバージョンは http://ttic.uchicago.edu/~shai/papersに記述されています/ShalevSiSr07.pdf とそれが明示的なアルゴリズムを持っています。
明示的なアルゴリズムは、カーネルでは動作しませんが、変更することができます。しかし、それは両方のコードと実行時の複雑さの点では、より複雑になります。
liblinear時および非線形SVMのLIBSVM
のために見てください以下の論文「ペカザス:SVMのためのプライマル推定サブ勾配ソルバは、」11ページの最上部にはkernels.ItにもPegasosのアルゴリズムを説明するには、<のhref = "http://ttic.uchicago.edu/からダウンロードすることができます〜NATI /出版/ PegasosMPB.pdf」のrel = "nofollowを"> http://ttic.uchicago.edu/~nati/Publications/PegasosMPB.pdf の
座標降下し、劣勾配降下のハイブリッドであるように思われます。また、アルゴリズムの6行目は間違っています。述語にy_i_tの第二の外観ではなくy_jに置き換える必要があります。