機械学習

機械学習

１．	機械学習の分類

A)	教師あり学習
(ア)	予測目的
①	線形（直線）・非線形（曲線）回帰
ある入力（例：立地）から出力（例：価格）を予測する（汎用的で誤差が少ない予測）

線形回帰の演習（ボストン不動産データ）

犯罪率からの不動産価格の予測結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453340/847b4d9c-bbec-b90b-de14-cba67490405e.png)

62ドルとしたときの予測
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453340/d79ebee0-c187-731f-ff19-276440ce240a.png)


(イ)	分類目的
①	サポートベクターマシン
２クラス分類のための学習方法
２クラス分類で最も適切な線形分類を見出す
サポートベクトルといわれる最も境界線から近いベクトルから境界線までの距離が最大になるように境界線を設定する
②	ソフトマージンサポートベクターマシン
線形分類できない場合も対応したサポートベクターマシン
誤差を許容する
カーネルトリック（次元を上げて非線形に、時には円形に分離する方法）によって非線形分離を行う。
③	ロジスティック回帰
入力からラベルを予測する
０から１の間で判断可能性を表現
入力→重みとの線形結合→ロジスティック関数→出力。

ロジスティック回帰の演習（タイタニック顧客データ）

チケット代(190ドル)のときの生存確率
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453340/2d7b9a47-df5f-6dbc-0884-d29394bfdc51.png)

元のデータをそのまま使うよりも、
元のデータから新しい定義のデータを作ってロジスティック回帰をしたほうがよい
実際下記のようにチケットランクごとで分類できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453340/bc8bafb3-a15d-754c-70fa-66a008a5f543.png)



④	最近傍法・K近傍法
すでにラベルづけがされているデータセットをもとに、
新しく入ってきたデータの分類を行う
近傍のデータ数（ｋ）にあるデータの中で、
最も数が多いデータカテゴリに新しいデータを分類判定する。

B)	教師なし学習

(ア)	K平均クラスタリング
与えられたデータを、人間があらかじめ定めたｋ個のクラスタに分類する
クラスタの中心の初期値も設定する必要がある
(イ)	主成分分析
多次元のデータを少次元の指標にまとめる。
分散が最大になる（つまり情報量が多い）新しいシンプルな軸を探す
	→分散が高いというのは、それだけ平均から離れた値があるということ
	　つまりデータとしての個性が失われていない（情報量が多い）、という
こと
全体の特徴量で特に情報が多い、つまり特徴量が多いことを寄与率が
高いと表現
制約を入れないと無限に解がある。
ラグランジュ関数を最大にする係数ベクトルを見つけ、係数ベクトルで微分して０とおき、買いを求める。固有ベクトルを最大にする係数ベクトルを出す。
第一主成分と第二主成分は直交する
つまりそのベクトルの内積は０になる


２．	パラメータの推定方法（使用する学習モデル）

A)	最小二乗法（線形回帰・非線形回帰）
実際のデータとモデルの二乗誤差を見つけ出す。
B)	マージン最大化（サポートベクターマシン）
分類のための境界線から、それぞれのデータの距離が最も大きくなる境界線を求める。
C)	勾配降下法
反復学習によりパラメータを逐次的に更新するアプローチ
最小二乗法を用いて微分が０になる値を求めることが困難な場合に使う。
学習を通して得られた更新分を、現在の重みから減算するが、その更新分を最後に学習率と呼ばれるハイパーパラメータで収束のしやすさを調節する
D)	確率的勾配降下法（ロジスティック回帰）
勾配降下法では、すべてのデータの和を求めてパラメータを更新
確率的勾配降下法はデータを一つずつランダム（つまり確率的）に選んでパラメータを更新することで、すべてのデータではなくランダム選んだ対象だけ学習すればよい
また学習を繰り返すことができる
（この反復回数のことを「エポック」と呼ぶ）
E)	最尤法（ロジスティック回帰）
あるデータ、結果を得たときに、判断基準となるパラメータがある値であることがどれほどありえそうか（尤度）を表す（尤度は出力予測、パラメータは決まっており、データそのものがそのパラメータに即してどれほど出力されやすいかを表すところが、確率と違う）
この大きければ大きいほど、正しいパラメータという判断ができる。
F)	ミニバッチ勾配降下法（ロジスティック回帰）
N個のデータを塊（50~100）に分けて学習を行う
塊が一つだけのときは、確率的勾配降下法と同じになる
G)	固有値分解（主成分分析）
固有値（＝分散の値）を分解し、分散が最大の軸を見つけ出す
最大固有値に対応する固有ベクトルで線形返還された特徴量を第一主成分と呼ぶ。

３．	過学習を防ぐ方法

A)	重みの制限法
(ア)	正則化（ネットワークの自由度を抑制する仕組み）
①	Lasso
MSE（平均二乗誤差）の値をパラメータ空間の原点に近いところに近づける
Lasso回帰はリッジ回帰と違って不要と判断される説明変数の係数（重み）が0になる性質がある
モデル構築においていくつかの特徴量（説明変数）が完全に無視される
つまり不要なパラメータを使いというときに使われる。
モデルの選択と同時に説明変数の数を削減して、説明変数（特徴量）の選択を自動で行ってくれるともいえる
L1正則化項を使う。

②	Ridge 
MSEの値をパラメータの一部を0になるように近づける→次元削減
重みの二乗和
L2正則化項による正則化では重みは完全に０にはならない性質がある
説明変数が非常に多い時にはモデルの解釈が複雑になるという欠点（パラメータを完全に削るわけではないから）

B)	学習データの選択法
(ア)	ホールドアウト法
手元のデータを二つに分割し、一方を学習に使い、もう一方はテストのために取り置き、汎用度を測る。
欠点として手元のデータが少ないときには、テスト用データにデータをとられ、学習用データが少なすぎることがある。逆もまたしかり。
(イ)	クロスバリデーション
データを学習用とテスト用に分割することを、繰り返す。その際テスト用のデータは毎回変える。

４．	分類結果の評価方法

A)	正解率
True PositiveとTrue Negativeの全体における割合
偏りがあるデータで学んだとき正解率が高くても意味をなさない。
B)	適合率
あるものを（positiveであれnegativeであれ）分類したとき、その分類判断通りの結果であってほしいときに使う指標。Positive(Negative)判定=positive(negative)は死守、negative(positive)判定=positive(negative)が混じってもよいとき。
C)	再現率
あるものを（positiveであれnegativeであれ）分類したとき、その分類判断の通りでないものが混じっても、もれなく分類してほしいときに使う。positive(negative)判定=negative(positive)があってもよいが、negative(positive)判定=positive(negative)はあってはならない。
D)	F値
再現率と適合率はトレードオフにあるので、バランスをとりたいときに使う。

【語録】

重回帰
多次元のこと（説明変数が複数ある。）

ロジスティック関数
結果をパーセンテージに返還するための関数

シグモイド関数
ロジスティック関数の一種
いかなる入力でも、関数を通すと出力結果が必ず１以下の数値になる

回帰係数
回帰方程式における説明変数にかかる定数のこと

誤差関数
学習データ（結果）とモデルの差異を表す尺度のこと。
二乗誤差関数や、交差エントロピー（尤度関数）が代表的。

回帰方程式
原因と結果の関係にある量の関係を表す方程式

バリアンス
モデルの複雑さの度合い（モデルの分散そのもののこと）

バイアス（１）
モデルと学習データの平均的なズレ。モデルと実際の値の誤差。

バイアス（２）
あるユニットが発火する傾向の高さを表す量（バイアスが高ければ受け取る前の層の出力が小さくても発火する。逆にバイアスがマイナスであれば出力が大きくても発火しない。）
バリアンスが小さくなるとバリアンスが大きくなる。（逆もしかり）

正則化
過学習をせず、汎用的にするために、重みに制限を加えること

尤度
あるデータ、結果を得たときに、判断基準となるパラメータがある値であることがどれほどありえそうかを表す（確率はパラメータは決まっており、データそのものがそのパラメータに即してどれほど出力されやすいかを表す。）
大きければ大きいほど、正しいパラメータという判断ができる。（最尤法）

尤度関数

対数尤度関数
尤度関数を最大化するよりも、対数尤度関数を最大化するほうが計算が楽なので、採用される

イータ
学習率のこと

学習率
機械学習の最適化において、どのくらい値を動かすかというパラメータ。

サポートベクターとは