暇人日記

アラフォーおっさんのコーセラの機械学習の課題を解こうと頑張っています!

Week2の課題をPCAしてみるとどうなるか?

PCAはWeek8で紹介された内容でした。

 

PCAはデータが膨大で計算負荷が大きいときに

類似と判断できるデータを削減して、

計算負荷を小さくすることが目的のものでした。

 

具体的なPCAの計算方法は↓でした。

f:id:omoshiroamericanews:20200116113850p:plain

 

これ↑がn次元をk次元にする方法でした。

 

今回は2次元を1次元にして、1次元にしても大丈夫な誤差かどうかをみてみます。

Xは47X2のベクトルですが、

Z;47X1のベクトルに変えていきたいと思います。

 

まずWeek2のMultiの課題のデータをグラフにしてみました↓

縦軸が部屋数で横軸が面積ですね。

f:id:omoshiroamericanews:20200116114010p:plain

 

部屋数と面積は丸で囲ったように相関はあるように見えます。

 

f:id:omoshiroamericanews:20200116114149p:plain

 

では、まずWeek8でやったことをWeek2のデータでもやってみたいと思います。

Week8でやったことは↓でした。

 

f:id:omoshiroamericanews:20200116114304p:plain

 

同じようにWeek2のMultiのデータでやってみたいと思います。

まずNormalizeします。

 

f:id:omoshiroamericanews:20200116114440p:plain

 

これ↑は前回の日記で計算したものと同じになります。

 

f:id:omoshiroamericanews:20200116114559p:plain

 

だいぶ、見た目が違いますね。。。

なので圧縮されたz;47X1のベクトルをみてみます。

 

f:id:omoshiroamericanews:20200116114753p:plain

 

グラフの赤線は(2000,2)みたいなところを通っていますが、

Zにはそういう値はありません。

 

f:id:omoshiroamericanews:20200116114908p:plain

 

Zを重ね合わせてみたいと思います。

 

f:id:omoshiroamericanews:20200116115011p:plain

 

青丸はXで47X2を表し、

赤XはZで47X1を表しています。

 

ここまで考えてはこのグラフはだめだと思いました。

青丸はFeatureNomalizeされる前で

赤XはFeatureNomalizeされた後だからです。

 

というわけで青丸をFeatureNormalizeしたグラフを作成しました。

f:id:omoshiroamericanews:20200116115235p:plain

 

グラフの見た目は同じですが、軸の大きさが変わっています。

 

Zを重ね合わせました↓

f:id:omoshiroamericanews:20200116115413p:plain

 

見た目、このように次元を落としています。

 

次にWeek8で用意されていたのが↓のグラフです。

f:id:omoshiroamericanews:20200116115516p:plain

赤Xをもとに青丸に戻そうと再計算したのが緑丸になります。

点線はその緑丸とオリジナルの青丸を結んでいます。

青丸と緑丸の差がオリジナルのデータと復元したデータの差になります。

 

1次元に落としてデータを再現しようとすると

このように差が出ますが、この差が許容範囲かどうか

調べようというのもWeek8の中に入っていた説明でした。

 

許容範囲かどうか調べる方法は2つ紹介されていました。

 

方法①

f:id:omoshiroamericanews:20200116120044p:plain

オリジナルのデータと復元のデータの差が小さければ小さいほど、

値が小さくなります。

例えば0.01であれば99%データが保持されていると考えられ、

次元を削減しても大丈夫ということです。

 

今回の青丸と緑丸で計算すると0.22になります。

保持率は78%なので

部屋数と面積は独立したデータとして

機械学習させた方がよいということだろうと思います。

 

方法②

f:id:omoshiroamericanews:20200116120521p:plain

計算結果は0.78なので保持率78%で①と同じ回答になりました。

 

今回はここまでです。

次回はWeek6で行ったLeaning CurveでWeek2の予測結果を

評価することにトライしてみたいと思います。