Kerasチュートリアルのポイント - Kerasによる回帰

Kerasチュートリアルのポイント - Kerasによる回帰

概要

TensorFlow-Keras回帰チュートリアルをもとに、Kerasによるニューラルネットワーク回帰の実装方法を把握する。 回帰分析を行うデータは、AutoMPG(1970-1980年代の自動車の燃費データ)を用いている。

環境

Python 3.6.3
TensorFlow 1.12.0
Keras 2.2.4
scikit-learn 0.20.2

回帰分析の流れ

  1. データの準備
    1. pandasを用いてインポート
    2. データのクリーニング(利用できないデータ行を削除等)
    3. データを訓練用とテスト用に分割(訓練用:80%、テスト用:20%でランダム抽出)
    4. データの正規化
  2. ニューラルネットワークモデルの構築
  3. ニューラルネットワークモデルのトレーニン
  4. モデルの評価

処理のポイント

[ニューラルネットワークの形]

f:id:storikai:20190313203330p:plain

[トレーニング用/テスト用データの振り分け]

f:id:storikai:20190313203711p:plain

[model.compile()のmetrics]

  • metricsは、訓練時およびテスト時に、モデルにより評価される評価関数のリスト
  • この場合は、平均絶対誤差/平均二乗誤差を指定
model.compile(
    loss='mean_squared_error',
    optimizer=optimizer,
    metrics=['mean_absolute_error', 'mean_squared_error']
)

[model.fit()のvalidation_split]

  • 以下の例では、0.2に指定
  • その場合、訓練用データの最後の20%(シャッフルなし)が検証のために利用
history = model.fit(
    normed_train_data, # データ
    train_labels, # ラベル
    epochs=EPOCHS, # エポック数
    validation_split=0.2, # 検証データに利用するデータ割合(最後からx%)(シャッフルされないことに注意、全てのepochで同じデータ)
    verbose=0,
    callbacks=[early_stop, PrintDot()]
)

[データの正規化]

  • 異なるスケール/レンジを扱う場合、Good Practice
  • 正規化しないと、モデルのトレーニングがより難しい
    • また、結果のモデルが入力の単位選択に依存する
  • テスト時は、訓練に使ったのと同じ分布のテストデータを使う必要あり