【ラビットチャレンジ】機械学習

# 線形回帰モデル 
●線形回帰モデル 　
　・回帰問題を解くための機械学習モデルの一つ 　
　・教師あり学習
　・入力とm次元パラメータの線形結合を出力するモデル
　・線形結合
　　→入力ベクトルと未知のパラメータの各要素を掛け算し足し合わせたもの
　　→入力ベクトルとの線形結合に加え、切片も足し合わせる
　　→出力は1次元となる
　・モデルのパラメータ
　　→モデルに含まれる推定すべき未知のパラメータ
　・パラメータは最小二乗法で推定
　・MSEを最小にするようなパラメータを探索

[実装演習結果]
![Unknown.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/10fae56d-6c34-3b58-fd71-0ce641dad21e.png)

# 非線形回帰モデル
●非線形回帰モデル
　・ある入力から出力を曲線で予測
　・未知のパラメータは最尤法か最小二乗法で推定
　・２次元ガウス型基底関数
　・未学習と過学習
　・対策
　　→学習データの数を増やす
　　→不要な基底関数を削除する
　　→正則化法を利用する
　・正則化項
　　→無い：最小二乗推定量
　　→L２ノルム：リッジ推定量
　　→L１ノルム：ラッソ推定量
　・精度の平均
　　→CV値と呼ぶ
　・グリッドサーチ
　　→全てのチューニングパラメータの組み合わせで評価値を算出
　　→最も良い評価値を持つチューニングパラメータを持つ組み合わせを採用
　　→最近だと、ベイス最適化でパラメータの調整をすることが多い

[実装演習結果]
![Unknown2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/895ee611-082f-576e-006a-82c9f07a0810.png)

# ロジスティック回帰モデル
●ロジスティック回帰モデル
　・識別式アプローチ
　・クラスkになる確率を出せる
　・シグモイド関数で実数を0,1にする
　　→シグモイド関数の微分は、自身で表現することが可能なため、
　　 尤度関数の微分をする際に計算が容易
　・分類問題を解くための教師あり機械学習モデル
　・尤度関数Lを最大とするパラメータを探す
　・対数を利用する利点
　　→桁落ちを防ぐ
　・確率的勾配降下法
　　→データを一つずつランダムに選んでパラメータを更新

[実装演習結果]
![Unknown3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/26205336-4016-ad22-7d1d-2b983f5eb71f.png)


# 主成分分析
●主成分分析
　・データの分散が最大になるように検索
　・様々なデータが残る
　・多変量データの持つ構造をより少数個の指標に圧縮
　　→変量の個数を減らすことに伴う、情報の損失はなるべく小さくしたい
　　→少数変数を利用した分析や可視化が実現可能
　・係数ベクトルが変われば線形変換後の値が変化
　　→情報の量を分散の大きさと捉える
　　→線形変換後の変数の分散が最大となる射影軸を探索

[実装演習結果]
![Unknown4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/1f42b452-f152-47de-e0ee-f3889146a6ed.png)

# アルゴリズム
●k近傍法
　・分類問題のための教師なし機械学習手法
　・最近傍のデータをk個撮ってきて、それらがもっとも多く所属するクラスに識別
　　→多数決のようなもの
　　→kを変化させると結果が変わる
　　→kを大きくすると決定境界は滑らかになる

[実装演習結果]
![Unknown5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/ce638563-fe29-c810-f4d5-28514e3c4fdf.png)

●k-平均法
　・クラスタリングの教師なし学習
　・与えられたデータをkこのクラスタに分類する
　・手順
　　①各クラスタ中心の初期値を設定する
　　②各データ店に対して、各クラスタ中心との距離を計算し、
　　　最も距離が近いクラスタを割り当てる
　　③各クラスタの平均ベクトルを計算する
　　④収束するまで②、③の処理を繰り返す
　・kの値を変えるとクラスタリンクの結果が変わる
　・初期値が近いとうまくクラスタリングできない
　　→対策としてk-平均法の改良版がある

 [実装演習結果]
![Unknown6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/5d69b903-ef1a-8585-21db-58981b9116fd.png)

# サポートベクターマシン
●2クラス分類
　・与えられた入力データが2つのカテゴリーのどちらに属するかを識別
　・SVMは2クラス分類問題の代表的な手法の1つ
　・未知データに対して高い予測精度を持つ関数が構築できる

●決定境界と分類境界
　・2クラス分類問題では、特徴ベクトルxがどちらのクラスに属するか判定するため
　　決定関数と呼ばれる関数f(x)が使われる
　・分類境界
　　→2つのクラスを分ける境界線

●線形サポートベクトル分類(ハードマージン)
　・訓練データ
　　→既にラベルの値が分かっている特徴ベクトルとラベルのセット
　・マージン
　　→分類境界を挟んで2つのクラスがどのくらい離れているか
　・マージン最大化
　　→マージンが大きいほど良い分類境界になるため、
　　　なるべく大きなマージンを持つ分類境界を探すという考え方
　・マージンを最大化すること
　　→分類境界と分類境界から最も近くにあるデータとの距離を最大化すること
　・ハードマージン
　　→分離可能性を仮定したSV分類
　・サポートベクトル
　　→分類境界に最も近いデータ

●線形サポートベクトル分類(ソフトマージン)
　・ソフトマージン
　　→SV分類を分離可能でないデータに適用できるように拡張したもの
　・スラック変数
　　→マージン内に入るデータや誤分類されたデータに対する誤差
　・正則化係数
　　→学習前に与えておく必要があるハイパーパラメータ
　　→大きいほどハードマージンの場合に近づき、∞の場合、ハードマージンに一致する
　　→小さいほど誤分類が許容されやすくなる

●SVMにおける双対表現
　・SV分類における双対問題には主問題と比べて次のメリットがある
　　→変数を少なくできる
　　→分類境界の非線形化を考える上で有利

●双対問題の導出
　・主変数
　　→元々の最適化問題に登場する変数
　・双対変数
　　→新たに導入した変数
　・双対問題
　　→ラグランジュ関数に関する最適化問題のこと

●主問題と双対問題の関係
　・SV分類の主問題はラグランジュ関数を用いて表現できる
　・双対問題と主問題が等価であることがわかる
　・弱双対性
　　→双対問題の最適値は主問題の最適値以下となる
　・強双対性
　　→SV分類の場合

●カーネルを用いた非線形分離への拡張
　・カーネルトリック
　　→入力データを高次元に拡張することで、線形分離を可能にする
　・カーネル関数を用いることで、特徴空間が高次元の場合でも、
　　双対問題を解く計算コストを大幅に削減することができる。
　・代表的な関数は下記の3つ
　　→多項式カーネル
　　→ガウスカーネル(RBFカーネル)
　　→シグモイドカーネル

[実装演習結果]
![Unknown7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/89f10501-d887-659a-fede-0bc3c7d78599.png)

![Unknown8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/8662b0d8-2325-4bdf-5789-a17d85c6e40f.png)

![Unknown9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/3dd2614b-70c1-b608-4eb9-1f71b24f4d32.png)