キカガク(KIKAGAKU)で「ニューラルネットワークの実装(回帰)」を学ぶ 《練習問題》

Photo by Alex Knight on Unsplash

キカガク(KIKAGAKU)で「ニューラルネットワークの実装(回帰)」を学ぶで練習問題が出ていたので、解いてみた。

練習問題

上記の結果のように、平均ニ乗誤差 (MSE) が検証データに対して約 73となっており、誤差を二乗しているとしても少し予測誤差が大きいことがわかります。この原因を考え、対策をうち、平均ニ乗誤差が小さくなるようなモデルを考えてみましょう。

ヒント
  1. Batch Normalization をいれる
  2. エポック数を増やす
  3. 最適化手法 (optimizer) を変更する
  4. データセットを可視化し、必要な特徴量を選択する or 増やす    
試行錯誤することで、実際の動作などの理解が深まるのでぜひ取り組りくんでください。

回答例

モデル変更前の MSE は次のとおり。
[62.691704245174634, 6.1231995]
なぜか、73 よりよくなっている。

Batch Normalization をいれると、MSE は次のような結果になった。
[36.493252174527036, 4.8187714]
改善前と比べて 58% 改善した。

変更箇所はソースコード 42 行目から 47 行目までを参照。


エポック数を 30 から 60 に増やすと、MSE は次のような結果になった。
[27.27410544601141, 3.981625]

改善前と比べて 43% 改善した。
変更箇所はソースコード 62 行目を参照。

optimaizer を adam から sgd に変更すると、MSE は次のような結果になった。
[40.223956089393766, 4.9830503]

前回までと比べると悪化したので、optimaizer は adam の方が適しているといえる。
変更箇所はソースコード 50 行目を参照。

ちなみに RMSprop に変更すると、MSE は次のような結果になった。
[26.024830537683822, 3.8633108]

特徴量を 13 から 12に減らすと、MSE は次のような結果になった。
[20.303845349480124, 3.5017285]

改善前と比べて 32% 改善した。

今回は、4つ目の変数 CHAS を減らした。 

CHAS チャールズ川によるダミー変数 (1: 川の周辺, 0: それ以外)

変更箇所はソースコード 11 行目から 20 行目までを参照。


目的関数


評価関数



ソースコード







Posted in  on 5/24/2020 by rteak |