LoginSignup
1
1

More than 3 years have passed since last update.

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

Posted at

はじめに

本記事は、E資格の受験資格の取得を目的としたラビットチャレンジを
受講した際の勉強記録およびレポート記事である。

主成分分析

主成分分析

多変量データの持つ構造をより少数個の指標に圧縮する分析手法。
少数変数を利用した分析や可視化(2・3次元の場合)が実現可能。

学習データ:$ \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%の精度で分類できることが確認された。2次元まで削減したところ、主成分寄与率 約0.43、第2成分寄与率 約0.19、累積寄与率 約0.62となっている。
2次元に可視化しても分離できていると考えられる。

スクリーンショット (96).png
スクリーンショット (97).png
スクリーンショット (98).png
スクリーンショット (99).png
スクリーンショット (100).png
スクリーンショット (101).png
スクリーンショット (102).png
スクリーンショット (103).png
スクリーンショット (104).png

k近傍法(kNN:k-Nearest Neighbor)

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

課題

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

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

スクリーンショット (105).png
スクリーンショット (106).png
スクリーンショット (107).png
スクリーンショット (108).png
スクリーンショット (109).png

k-平均法(k-means)

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

k平均法のアルゴリズム

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

ハンズオン

■結果

スクリーンショット (111).png
スクリーンショット (112).png
スクリーンショット (113).png
スクリーンショット (114).png
スクリーンショット (115).png
スクリーンショット (116).png
スクリーンショット (117).png

サポートベクターマシン(SVM)

2クラス分類のための機械学習手法。
線形モデルの正負で2値分類。

ハンズオン

■結果

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

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

スクリーンショット (118).png
スクリーンショット (119).png
スクリーンショット (120).png
スクリーンショット (121).png
スクリーンショット (122).png
スクリーンショット (123).png
スクリーンショット (124).png
スクリーンショット (125).png
スクリーンショット (126).png
スクリーンショット (127).png
スクリーンショット (128).png
スクリーンショット (129).png
スクリーンショット (130).png
スクリーンショット (131).png
スクリーンショット (132).png
スクリーンショット (133).png
スクリーンショット (134).png
スクリーンショット (135).png
スクリーンショット (136).png
スクリーンショット (137).png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1