PCAはWeek8で紹介された内容でした。
PCAはデータが膨大で計算負荷が大きいときに
類似と判断できるデータを削減して、
計算負荷を小さくすることが目的のものでした。
具体的なPCAの計算方法は↓でした。
これ↑がn次元をk次元にする方法でした。
今回は2次元を1次元にして、1次元にしても大丈夫な誤差かどうかをみてみます。
Xは47X2のベクトルですが、
Z;47X1のベクトルに変えていきたいと思います。
まずWeek2のMultiの課題のデータをグラフにしてみました↓
縦軸が部屋数で横軸が面積ですね。
部屋数と面積は丸で囲ったように相関はあるように見えます。
では、まずWeek8でやったことをWeek2のデータでもやってみたいと思います。
Week8でやったことは↓でした。
同じようにWeek2のMultiのデータでやってみたいと思います。
まずNormalizeします。
これ↑は前回の日記で計算したものと同じになります。
だいぶ、見た目が違いますね。。。
なので圧縮されたz;47X1のベクトルをみてみます。
グラフの赤線は(2000,2)みたいなところを通っていますが、
Zにはそういう値はありません。
Zを重ね合わせてみたいと思います。
青丸はXで47X2を表し、
赤XはZで47X1を表しています。
ここまで考えてはこのグラフはだめだと思いました。
青丸はFeatureNomalizeされる前で
赤XはFeatureNomalizeされた後だからです。
というわけで青丸をFeatureNormalizeしたグラフを作成しました。
グラフの見た目は同じですが、軸の大きさが変わっています。
Zを重ね合わせました↓
見た目、このように次元を落としています。
次にWeek8で用意されていたのが↓のグラフです。
赤Xをもとに青丸に戻そうと再計算したのが緑丸になります。
点線はその緑丸とオリジナルの青丸を結んでいます。
青丸と緑丸の差がオリジナルのデータと復元したデータの差になります。
1次元に落としてデータを再現しようとすると
このように差が出ますが、この差が許容範囲かどうか
調べようというのもWeek8の中に入っていた説明でした。
許容範囲かどうか調べる方法は2つ紹介されていました。
方法①
オリジナルのデータと復元のデータの差が小さければ小さいほど、
値が小さくなります。
例えば0.01であれば99%データが保持されていると考えられ、
次元を削減しても大丈夫ということです。
今回の青丸と緑丸で計算すると0.22になります。
保持率は78%なので
部屋数と面積は独立したデータとして
機械学習させた方がよいということだろうと思います。
方法②
計算結果は0.78なので保持率78%で①と同じ回答になりました。
今回はここまでです。
次回はWeek6で行ったLeaning CurveでWeek2の予測結果を
評価することにトライしてみたいと思います。