keitom61 / rabbit_challenge

Repository for the reports of "rabbit challenge"
0 stars 0 forks source link

レポート【b】機械学習 #2

Open keitom61 opened 3 years ago

keitom61 commented 3 years ago

線形回帰モデル 【要点】 回帰問題とはある入力から出力を予測する問題である。 扱うデータは 入力:m次元のベクトル 出力:スカラー値 である。

線形回帰モデルとは回帰問題を解くための機械学習モデルの一つである。 m次元の入力\bf{x}とm次元パラメータ\bf{w}の線形結合を出力するモデルである。 出力(予測値)\hat{y}は以下の式で表される。 \hat{y} = \bf{w}^{T} \bf{x} + w_{0}

パラメータは入力(特徴量)が予測値に対してどのように影響を与えるかを決定する重みの集合である。 パラメータは未知であるため、最小二乗法にて推定する。 訓練に用いる入力および出力の組の個数をnとする。 平均二乗誤差MSEは次の式で定義される。 MSE = \frac{1}{n} \sum_{i=1}^{n} (\hat{y_{i}} - y_{i} )^2 最小二乗法はMSEを最小とするパラメータを探索する。

そのためにはMSEを\bf{w}に関して微分したものが、言い換えるとMSEの勾配が、0となる\bf{w}点を求める。 これを解くとパラメータ\hat{\bf{w}}は以下の通り求まる。 \hat{\bf{w}} = (X^{T} X )^{-1} X^{T} \bf{y}

keitom61 commented 3 years ago

【実装演習結果のサマリーと考察】 Boston Hausing Dataを用いた回帰モデルを複数作成した。 説明変数が 1.RMのみの単回帰分析 2.CRIM,RMの2変数重回帰分析 3.13変数全てを用いた重回帰分析 の3モデルを作成した。

決定係数にてモデルの評価を行った。 単回帰決定係数: 0.483, 重回帰(2変数)決定係数 : 0.542, 重回帰(13変数)決定係数 : 0.741 となり、変数が増えるほどモデルの表現力が高まったと考えられる。

keitom61 commented 3 years ago

非線形回帰モデル 【要点】 基底展開法は非線形回帰モデルの一種である。回帰関数として、基底関数と呼ばれる既知の非線形関数\bf{\phi(x_{i})}
とパラメータベクトル\bf{w}
の線形結合を使用する。 パラメータベクトルは線形結合されているため、線形回帰と同じ枠組みで推定可能であるため、最小二乗法等を用いて推定する。 非線形関数の計画行列を \bf{\Phi} = (\bf{\phi(x_1)}, \bf{\phi(x_2)}, \cdot\cdot\cdot ,\bf{\phi(x_n)})^T とするときパラメータベクトル\hat{\bf{w}}の推定値は以下の式で表させる。 \hat{\bf{w}} =  (\bf{\Phi} ^T \bf{\Phi})^{-1} \bf{\Phi} ^T \bf{y}

モデルが学習データに対して高精度になった反面、テストデータに対して低精度になり、精度差が大きいことを過学習と呼ぶ。 モデルの過学習を避けるための対策は以下の3つである。 1.学習データの数を増やす 2.不要な基底関数を削除する 3.誤差関数に正則化項を加える

正則化項は\gamma \bf{R(w)}
で表される。 γは正の実数である。 R(w)はパラメータwの関数であり、 一般にL2ノルムを用いた場合はRidge,L1ノルムを用いた場合はLassoと呼ばれる。 Ridgeを用いた場合、wは0に近づけるように推定される。 Lassoを用いた場合、wはスパースな解となる。

モデルの精度を確認するため、一般的にデータは学習データと検証データに分割する。 学習データと検証データに最初に分割し、入れ替えずに検証を行うことをホールドアウト法と呼ぶ。 一方、検証データを入れ替えながら各モデルの精度を計測し、精度の平均(CV値)にて評価する方法をクロスバリデーションと呼ぶ。

keitom61 commented 3 years ago

【実装演習結果のサマリーと考察】 回帰手法であるサポートベクター回帰(SVR)にて演習を行った。

まず、4次関数にノイズを加えたデータを用意した。 データに回帰モデルを適合させて、表現力を確認する。

カーネルを線形とした場合、回帰モデルの表現力は不足傾向であった。 image 一方カーネルをガウスカーネル(RBF)とし非線形にした場合、 モデルは適切に表現する傾向が確認できた。 image

keitom61 commented 3 years ago

ロジスティック回帰モデル 【要点】 分類問題とはある入力(数値)からクラスに分類する問題である。 2クラス問題の場合、入力はm次元ベクトル、出力は0又は1の離散値となる。

ロジスティック回帰モデルとは、分類問題を解くための教師あり機械学習モデルである。 まず非線形回帰モデルと同様に、入力とm次元パラメータを線形結合した値zを用意する。 z = \bf{w^T x} + w_0 zをシグモイド関数に代入した結果\sigma (z)がy=1になる確率の値となる。 \sigma (z) = \frac{1}{1+exp(-az)}

ロジスティック回帰モデルの出力結果は確率となるため、分類せずに判断を保留することも可能になる。すなわち0.2以下であれば0、0.8以上であれば1、それ以外は確率が低いため保留、とすることが可能になる。

ロジスティック回帰の最適化には最尤推定を用いる。最尤推定とは尤度関数を最大化するようなパラメータを選ぶ推定方法である。2クラス問題の場合、尤度関数にベルヌーイ分布を用いる。 ベルヌーイ分布とは確率pでy=1、確率1-pでy=0をとる分布であり、 P(y) = p^y (1-p)^{1-y}
で表される。 この時、尤度関数Lは L(\bf{w})=  \prod_{i=1}^{n} p_i^{y_i} (1-p_i)^{1-y_i} となる。 負の対数尤度関数が最小となるパラメータが最尤推定値となる。最尤推定値は解析的に求まらないため、勾配降下法にてパラメータを逐次的に更新して、収束する点を最尤推定値とする。

keitom61 commented 3 years ago

【実装演習結果のサマリーと考察】 タイタニックデータにてロジスティック回帰モデルを実施した。 特徴量エンジニアリングにて家族構成人数の変数を増やした。 ①年齢 ②社会階級+性別 ③家族構成人数 の3変数によるロジスティック回帰を実施した。

①②の2変数によるロジスティック回帰では①10 ②3であれば、生存と判定されていた。 しかし、3変数によるロジスティック回帰で③を5とした場合、判定は死亡になる。 image

keitom61 commented 3 years ago

主成分分析 【要点】 多次元データを低次元に圧縮することを主成分分析、ないし次元圧縮と呼ぶ。 低次元化により計算量の低減や2次元への圧縮により可視化が可能となる。

主成分分析では線形返還後の変数の分散が最大となる射影軸を探索する。 そのために以下の制約付き最適化問題をラグランジュの未定乗数法により解く。 E(\bf{a}_j) = \bf{a}_j^T V ar(\overline{X}) \bf{a}_j - \lambda (\bf{a}_j^T \bf{a}_j - 1 )

ラグランジュ関数E(\bf{a}_j)\bf{a}_jにて偏微分する。 すると固有値問題である、 Var(\bar{X})\bf{a}_j = \lambda \bf{a}_j に帰結し、射影軸の基底ベクトルは\bf{a}_j、射影軸の分散は\lambdaとなる。

分散が最大となる軸が第一主成分となり、直行する軸で分散が次に最大となる軸が第二主成分になる。以後、同様の方法にて主成分が選択される。

次元削減による情報損失量の割合は累積寄与率にて確認し、次元削減の妥当性を確認する。

keitom61 commented 3 years ago

【実装演習結果のサマリーと考察】 ガンデータにてPCAを実装した。 説明変数Xは30次元で、データ数は569個である。 これを426個の訓練データと143個の検証データに分割する。 その後、各データを標準化する。

まず、PCAをせずにそのままロジスティック回帰にて分類モデルを構築した。 結果を以下に示す。 image 検証スコア97%にて分類できることを確認した。

次にPCAにて次元数を1から4に圧縮した。それぞれをロジスティック回帰にて分類モデルを構築した。 結果を以下に示す。 1次元 image

2次元 image

3次元 image

4次元 image

1次元から2次元に次元を増やしたところ検証スコアは向上した。しかし、3次元以降は次元を増やしても検証スコアは飽和した。

keitom61 commented 3 years ago

アルゴリズム 【要点】 k近傍法は分類問題のための機械学習手法である。 最近傍から順にデータをk個とってきて、新しいデータを分類する。データk個のうち、最も所属データの多いクラスが、新しいデータの所属クラスとなる。kが小さいと決定境界は過学習気味になるが、kを大きくすると決定境界は滑らかになる。

k平均法は教師なし学習のクラスタリング手法である。与えられたデータをk個のクラスタに分類する。k平均法のアルゴリズムは以下の通りである。 1)各クラスタ中心の初期値を設定する。この時、初期値の設定はランダムでよいが、適切に間隔があいていなければうまくクラスタリングできない。 2)各データ点に対して、各クラスタ中心との距離を計算し、最も距離が近いクラスタを割り当てる。 3)各クラスタの平均ベクトルを計算し、新たなクラスタ中心を設定する。 4)クラスタ中心が収束するまで、2と3の処理を繰り返す。

keitom61 commented 3 years ago

【実装演習結果のサマリーと考察】 ワインデータをk平均法にてクラスタリングを行った。 説明変数Xは13次元で、データ数は178個である。

k=3にてクラスタリングを行った。結果を以下に示す。 image 20~40%程度は実際のクラスと差異が生じる欠課となった。

keitom61 commented 3 years ago

サポートベクターマシン 【要点】 サポートベクターマシン(SVM)は2クラス分類問題のための機械学習手法である。 訓練データはN個の入力ベクトル\bf{x}
とN個目標値tである。ただし、 t_n \in \{ -1,1 \}

この時、線形判別関数y(\bf{x})を以下の通り定める。 y(\bf{x}) = \bf{w}^{T} \bf{x} + b

線形判別関数によってデータが線形分離された場合、 目標値tと線形判別関数y(\bf{x})の正負は一致する。

線形判別関数と最も近いデータ点との距離をマージンと呼ぶ。 SVMではマージンが最大となる線形判別関数を求める。 すなわち、マージンを最大化するパラメータ\bf{w}とbを求める必要がある。

パラメータは次の最適化問題を解くことで得られる。 \underset{\bf{w} , b} {arg max} [ \underset{i} {min} \frac{ t_i(\bf{w}^T \bf{x}_i + b)} {||\bf{w}||}]

これは主問題の目的関数 \underset{\bf{w} , b} {min} \frac{1} {2} ||\bf{w}||^2 を制約条件 t_i(\bf{w}^T \bf{x}_i +b) \geq  1 の元でラグランジュ未定乗数法で解くことで得られる。

keitom61 commented 3 years ago

【実装演習結果のサマリーと考察】 線形分離可能なケースと特徴空間に射影してから分離するケースを実装した。 線形分離可能なケースの場合、下記の通り元のデータ空間にてSVMによる分類が可能となる。 image

特徴空間に射影してから分離する場合、下記の通り元のデータ空間では線形分離はできない。 image ただし、特徴空間上で線形分離すればSVMによる分類は可能となる。 カーネルとしてRBFカーネル(ガウシアンカーネル)を利用した場合、以下の通り分離可能になる。 image