ラビットチャレンジ（E資格）】機械学習_主成分分析・k近傍法・k-平均法・SVM

#はじめに
本記事は、E資格の受験資格の取得を目的としたラビットチャレンジを
受講した際の勉強記録およびレポート記事である。
# 主成分分析
##主成分分析
多変量データの持つ構造をより少数個の指標に圧縮する分析手法。
少数変数を利用した分析や可視化（２・３次元の場合）が実現可能。

学習データ：$ \smash{ \boldsymbol{x}_{i} = (x\_{i1}, x\_{i2}, ... , x\_{im}) \in \mathbb{R}^{m} } $

平均（ベクトル）：$ \smash{ \bar{\boldsymbol{x}} = \dfrac{1}{n} \sum_{i=1}^{n}\boldsymbol{x}_{i} } $

データ行列：$ \smash{ \bar{\boldsymbol{X}} = (x_{1} - \bar{x}, x_{2} - \bar{x}, ... , x_{n} - \bar{x})^{T} \in \mathbb{R}^{ n \times m} } $

分散共分散行列：$ \smash{ \Sigma = Var(\bar{\boldsymbol{X}}) = \dfrac{1}{n}\bar{\boldsymbol{X}^{T}}\bar{\boldsymbol{X}} } $

線形変換後のベクトル：$ \smash{ \boldsymbol{s}_{j}=(s\_{1j}, \cdots ,s\_{nj})^{T} = \bar{\boldsymbol{X}} \boldsymbol{a}\_{j} } $　　　$ \boldsymbol{a}\_{j} \in \mathbb{R}^{m} $

線形変換後の分散：$ \smash{ Var(\boldsymbol{s}\_{j}) = \dfrac{1}{n}\boldsymbol{s}_{j}^{T}\boldsymbol{s}\_{j} = \dfrac{1}{n}(\bar{\boldsymbol{X}}\boldsymbol{a}\_{j})^{T}(\bar{\boldsymbol{X}}\boldsymbol{a}\_{j}) = \dfrac{1}{n}\boldsymbol{a}\_{j}^{T}\bar{\boldsymbol{X}}^{T}\bar{\boldsymbol{X}}\boldsymbol{a}\_{j} = \boldsymbol{a}\_{j}^{T} Var(\bar{X})\boldsymbol{a}\_{j} } $

##ラグランジュ関数
ラグランジュ関数：$ \smash{ E(\boldsymbol{a}\_{j}) = \boldsymbol{a}\_{j}^{T} Var(\bar{X})\boldsymbol{a}\_{j}  - \lambda(\boldsymbol{a}\_{j}^{T}\boldsymbol{a}\_{j} - 1) } $

##課題
32次元のデータを2次元上に次元圧縮した際に、うまく判別できるかを確認。

■結果
乳癌検査データ。特徴量30でロジスティック回帰を行ったところ、97％の精度で分類できることが確認された。２次元まで削減したところ、主成分寄与率 約0.43、第２成分寄与率 約0.19、累積寄与率 約0.62となっている。
2次元に可視化しても分離できていると考えられる。



![スクリーンショット (96).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/0385cd16-c75a-422f-932b-df26e5a4609d.png)
![スクリーンショット (97).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/0ef0a638-d35f-5636-7811-c7e8aefb1a03.png)
![スクリーンショット (98).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/887b2ef2-f2ff-3ee3-51b7-40ae82faab72.png)
![スクリーンショット (99).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/eb4fd43d-0ef2-c342-cded-7843082b9514.png)
![スクリーンショット (100).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/88dc555c-6b9c-82fd-ed43-50ff2375a51e.png)
![スクリーンショット (101).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/d6bb8926-1889-f12b-0669-931ca1cac34c.png)
![スクリーンショット (102).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/41bc40fc-2454-dd02-3ee7-66b9155c1094.png)
![スクリーンショット (103).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/0a86e62f-6edb-285a-d4cc-ee7f784bb54c.png)
![スクリーンショット (104).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/a3566ba8-6c55-a465-a3dd-e2cd16166ef9.png)

# k近傍法(kNN:k-Nearest Neighbor)
分類問題のための機械学習手法。
最近傍のデータをk個取ってきて、それらが最も多く所属するクラスに識別。

##課題
人口データと分類結果をプロットしてください。

■結果
numpyでの実装、scikit-learnでの実装ともに同様の結果が出ていることがわかる。

![スクリーンショット (105).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/56745fac-c6f2-6cab-5010-d112ff63f03b.png)
![スクリーンショット (106).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/78308918-7807-6057-dbcb-fc8e76bb1ddf.png)
![スクリーンショット (107).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/4320d6cf-0bfa-1c74-0174-7059925902d8.png)
![スクリーンショット (108).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/3f7bdc69-4874-ec66-0f41-ef51c7e1fd11.png)
![スクリーンショット (109).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/84fe223f-abd4-07ef-b423-1d9978e7f87f.png)

#k-平均法(k-means)
教師なし学習。
クラスタリング手法。
与えられたデータをk個のクラスタに分類する。

####k平均法のアルゴリズム
1. 各クラスタ中心の初期値を設定する。
2. 各データ点に対して、各クラスタ中心との距離を計算し、最も距離が近い
　　クラスタを割り当てる。
3. 各クラスタの平均ベクトル（中心）を計算する。
4. 収束するまで2、3の処理を繰り返す。

##ハンズオン
■結果

![スクリーンショット (111).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/7bf07842-3d18-ac31-d924-90e64f29f0f2.png)
![スクリーンショット (112).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/33a59b7f-952b-5830-0432-9ba7f46c9e5e.png)
![スクリーンショット (113).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/cbce0096-d863-8325-37dd-7f2f48915c34.png)
![スクリーンショット (114).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/9f90b2d9-032f-2b77-26ca-b8ef07547678.png)
![スクリーンショット (115).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/beaabbce-a1b3-611b-ac8b-a567977f05f2.png)
![スクリーンショット (116).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/51692008-5c22-a188-df45-70022b083169.png)
![スクリーンショット (117).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/c8920e3f-50aa-b52a-5f46-025077fdc979.png)

#サポートベクターマシン(SVM)
２クラス分類のための機械学習手法。
線形モデルの正負で２値分類。

##ハンズオン
■結果

以下の場合について実施している。

- 線形分離可能な場合
- 線形分離不可能な場合
- ソフトマージン

![スクリーンショット (118).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/ef6e5cdc-3618-1c6b-1b41-e68eddf05fe0.png)
![スクリーンショット (119).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/dbae22e7-73c1-a319-d974-14327618e2e9.png)
![スクリーンショット (120).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/06bdcdda-ea96-a913-94b2-e0ba9eb27523.png)
![スクリーンショット (121).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/f76ef69f-cb8b-6485-1919-38ca3be10556.png)
![スクリーンショット (122).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/c4a76dfb-be88-cf0d-0e24-f684b10e5135.png)
![スクリーンショット (123).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/7dcff9ac-74bc-ef0c-28df-e5a0a423d685.png)
![スクリーンショット (124).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/d8c05233-9ac3-dd51-87e0-724acb36b2e1.png)
![スクリーンショット (125).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/7bb79631-23f2-ad87-b067-61db29087347.png)
![スクリーンショット (126).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/0a058054-74f9-6ecc-010e-202b73348dc2.png)
![スクリーンショット (127).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/16ea1655-672f-6e76-c63e-b4d37c49d81c.png)
![スクリーンショット (128).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/23b432b7-8a63-702a-c384-bfa8d68af552.png)
![スクリーンショット (129).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/47df11b6-bbba-53ef-b01c-9c54255d6742.png)
![スクリーンショット (130).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/c487af4f-c329-ab07-f8cb-0ae4cccbf428.png)
![スクリーンショット (131).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/c68e67e1-76a9-0b06-4b73-3591e9188f9b.png)
![スクリーンショット (132).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/242c8c5e-c84f-9bab-456b-d074651dbf4c.png)
![スクリーンショット (133).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/c5e1e08a-4bfb-5478-da99-585e93cbc14d.png)
![スクリーンショット (134).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/03f3963d-b1d9-bf8e-851e-9a78bebc7ed6.png)
![スクリーンショット (135).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/9b286056-6dc8-0cd2-6301-1b6ad8b1d54e.png)
![スクリーンショット (136).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/3d87061a-16b7-f474-2ff5-b184e06751e5.png)
![スクリーンショット (137).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/791052/6f1f9b29-0b56-ff68-5663-7a6a61031329.png)