Introduction
SVMはDeep learningが主流になる前、人気だったとどこかで拝見しました。
SVMの詳しい理論の説明は別の機会に必ず書きます。
# 第一弾書きました。
SVMの理論 part 1
computerはwindowsでOSはwindows10です。Python3で実装します。
このプログラムには内点法という最適化を使っています。
Dataset
次の二つのdastasetを使います。一つは、完全に分離できるような分布のデータです・
もう一つは完全に分離できないような分布のデータです。
例えば、data1の分布はこのような形になります。
この分布ならきれいに二つのクラスを分けるような線が引けそうですね。
もう一つのデータは次のようなデータを使います。
このデータはきれいに分けるような線は引けなさそうです。
この二つのデータを用いて、線形SVMを使っていきましょう。
Implementation
- data1
きれいにいい感じのところに引けてます。
- data2
このデータについては様々なCを用いて計算してみました。
Cの値が小さければ小さいほど、誤分類を認めてしまうことになります。
このデータではCの影響を確認しずらいかもしれませんが、\(C=1\) の時、よく見ると、赤色のデータが一つ境界面を飛び出しています。
線形でないSVMを使うとCの影響がもっとわかりやすいかもしれません。
非線形なSVMについては、別の記事で書こうと思います。
CODE
コードはすべてgithubに乗せています。My SVM code is here
今回使ったファイルはgit_SVM_check.pyとgit_SVM_def.pyです。
git_SVM_check.py には次のようなコードが入ったメインファイルです。
if __name__ == '__main__':
git_SVM_def にはSVMのクラスと、内点法の実装が入っています。次は非線形のSVMについても書きたいと思います。
もし、そちらの記事も見ていただけたらハッピーです。
コメント
コメントを投稿