【ラビットチャレンジ】【機械学習】サポートベクターマシン

「ラビットチャレンジ」 提出レポート
##１．サポートベクターマシンの概要
■　2クラス分類のための機械学習手法
■　線形モデルの正負で2値分類
■　決定境界はいくつも考えられる
##２．サポートベクターマシンの求め方
■　線形判別関数ともっとも近いデータ点との距離をマージンという
■　マージンが最大となる線形判別関数を求める
■　SVMの主問題について、制約条件付きの最適化問題としてラグランジュ未定乗数法で解くことを考える
■　**ラグランジュ未定乗数法**
【定義】（引用）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/1805b264-4f70-0420-088f-557b4a39b2f9.png)
[（参考）ラグランジュの未定乗数法の解説と直感的な証明](https://www.yunabe.jp/docs/lagrange_multiplier.html)
[(参考）ラグランジュの未定乗数法でサポートベクターマシンの主問題を解く](https://kenyu-life.com/2019/04/01/svm_lagrange/)
##３．ソフトマージンSVM
■　サンプルを線形分離できないとき
■　誤差を許容し、誤差に対してペナルティを与える
■　マージン内に入るデータや誤分類されたデータに対して誤差を表す変数を導入する
[(参考)　ソフトマージンSVM](http://aidiary.hatenablog.com/entry/20100503/1272889097)
##４．非線形分離
■　線形分離できないとき
■　特徴空間に写像し、その空間で線形に分離する
##５．実装演習１
実施ファイル：np_svm.ipynb
###サポートベクターマシン(SVM)
####【実施結果】
■　**訓練データ生成① （線形分離可能）**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/caa2663b-eb69-5f56-8f39-c6e4a5fbca16.png)
　●　**学習**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/3bd636c8-83d7-a6ba-8b85-1b8cc5f31fcf.png)
　●　**予測**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/4b22df8c-cbee-c085-2f7e-385fb5f6bcb6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/8dd45464-b365-b127-42c5-968154b8f7e1.png)
■　**訓練データ生成② （線形分離不可能)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/dc4c659f-9c05-75f0-005c-83bc74c3990b.png)
　●　**学習**
元のデータ空間では線形分離は出来ないが、特徴空間上で線形分離することを考える。
今回はカーネルとしてRBFカーネル（ガウシアンカーネル）を利用する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/a3177e18-85f2-8a56-1562-01b3dcc64800.png)
　●　**予測**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/5c4845a5-f749-ce23-0f29-5bec627ca850.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/3236e279-894c-416f-1ee5-03a0c1551b48.png)

####【考察】
●　線形分離可能データでも、線形分離不可能でデータでも2クラス分類できたことが分かった。（線形分離不可能の場合、特徴空間上で線形分離することを考える）
###ソフトマージンSVM
####【実施結果】
■　**訓練データ生成③（重なりあり）**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/c04162c1-2b3a-9fa9-a2e1-08a726620772.png)
　●　**学習**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/b52f7cc6-bbdc-0e88-5216-68b681ad2c9d.png)
　●　**予測**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/f6c812de-308a-2ab2-0ba5-e74713481d29.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/ed58f5ba-0a4f-b689-c764-99a7c01887c3.png)
####【考察】
●　ソフトマージンSVMは線形分離できない場合でも対応できることが確認できた。（分離不可能な場合は学習できないが、データ点がマージン内部に入ることや誤分類を許容することでその問題を回避する）
##６．実装演習２
実施ファイル：skl_svm-checkpoint.ipynb
###Titanic Dataset
####【実施結果】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/6ee969e3-ce7d-73aa-1f37-38a3501f140c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/0e7cf7af-3c66-3c1a-9110-787eb91640fd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/6afe12fd-ef1e-9721-1d80-32e81f2b6a7c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/a2ddb379-347c-1657-2345-8febc8fffb56.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/d8aa217d-204e-7ded-4f74-18e52b6ddc61.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/5198fee8-1976-0851-fa35-20e962215cca.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/1d3d5f37-752a-cc15-49ff-e1369ffebb3b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/487cf6e9-29f7-dfcd-0ac5-f850faec0e8b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/374d84b3-c541-fad0-fe48-5e6b9bf3ee98.png)
####【考察】
　●　線形モデルのSVMの学習は線形カーネルを用いるSVMの学習と同様結果が得られると見える。
　●　ガウシアンカーネル（RBF)を用いると、上記のグラフから見ると、超学習と見れる。
　●　多項式カーネルの場合は良い結果が得られる。
###MNIST
####【実施結果】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/a9d1bb83-b25a-d268-2a17-43007bddad27.png)
####【考察】
　●　SVMの手法を利用することでは、MNISTの手書き数字データに対して **94%** という正解率が得られることが分かった。
###IRIS Dataset
####【実施結果】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/2b25a42a-ad13-4ae2-7ee8-66b1d8eee582.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/8e023794-7f22-1b14-1460-dd18d2ed10e7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/415781c3-2596-f938-40c9-e29a9cbfdf9b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/a9b55d1d-60dd-da79-f69c-91623e828402.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/3a497051-4c82-3916-0f8a-709e68a8469e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552833/5c1230ad-311e-d16f-ee13-87d980699e85.png)
####【考察】
　●　上のグラフより、パラメータ $C$ の大小で決定境界の形状が変化する。
　●　$C$の値が大きいと、誤分類のペナルティが大きくなる（誤差許容度が減り）ので、分類境界が細かくなっている。
　●　もっとも予測精度が高くなるようにパラメータ（$C,\gamma$ )を調節する必要がある。

##【機械学習】レポート一覧
[【ラビットチャレンジ】【機械学習】線形回帰モデル](https://qiita.com/HienDT27/items/0cbed5d1771b13d0311c)
[【ラビットチャレンジ】【機械学習】非線形回帰モデル](https://qiita.com/HienDT27/items/0f785e4835a85a8cd4ad)
[【ラビットチャレンジ】【機械学習】ロジスティク回帰モデル](https://qiita.com/HienDT27/items/cd067099c970a9786a47)
[【ラビットチャレンジ】【機械学習】主成分分析](https://qiita.com/HienDT27/items/bd53678695d33a6f8ee5)
[【ラビットチャレンジ】【機械学習】アルゴリズム](https://qiita.com/HienDT27/items/aa7317a8394212940068)