Path: blob/master/site/ja/r1/tutorials/keras/basic_regression.ipynb
25118 views
Copyright 2018 The TensorFlow Authors.
回帰: 燃費を予測する
Note: これらのドキュメントは私たちTensorFlowコミュニティが翻訳したものです。コミュニティによる 翻訳はベストエフォートであるため、この翻訳が正確であることや英語の公式ドキュメントの 最新の状態を反映したものであることを保証することはできません。 この翻訳の品質を向上させるためのご意見をお持ちの方は、GitHubリポジトリtensorflow/docsにプルリクエストをお送りください。 コミュニティによる翻訳やレビューに参加していただける方は、 [email protected] メーリングリストにご連絡ください。
Auto MPG データセット
このデータセットはUCI Machine Learning Repositoryから入手可能です。
データの取得
まず、データセットをダウンロードします。
pandasを使ってデータをインポートします。
データのクレンジング
このデータには、いくつか欠損値があります。
この最初のチュートリアルでは簡単化のためこれらの行を削除します。
"Origin"
の列は数値ではなくカテゴリーです。このため、ワンホットエンコーディングを行います。
データを訓練用セットとテスト用セットに分割
データセットを訓練用セットとテスト用セットに分割しましょう。
テスト用データセットは、作成したモデルの最終評価に使用します。
データの調査
訓練用セットのいくつかの列の組み合わせの同時分布を見てみましょう。
全体の統計値も見てみましょう。
ラベルと特徴量の分離
ラベル、すなわち目的変数を特徴量から切り離しましょう。このラベルは、モデルに予測させたい数量です。
データの正規化
上のtrain_stats
のブロックをもう一度見て、それぞれの特徴量の範囲がどれほど違っているかに注目してください。
スケールや値の範囲が異なる特徴量を正規化するのは良い習慣です。特徴量の正規化なしでもモデルは収束するかもしれませんが、モデルの訓練はより難しくなり、結果として得られたモデルも入力で使われる単位に依存することになります。
注:(正規化に使用する)統計量は意図的に訓練用データセットだけを使って算出していますが、これらはテスト用データセットの正規化にも使うことになります。テスト用のデータセットを、モデルの訓練に使用した分布と同じ分布に射影する必要があるのです。
この正規化したデータを使ってモデルを訓練することになります。
注意:ここで入力の正規化に使った統計量(平均と標準偏差)は、先程実施したワンホットエンコーディングとともに、モデルに供給する他のどんなデータにも適用する必要があります。テスト用データセットだけでなく、モデルを本番で使用する際の生のデータも同様です。
モデル
モデルの構築
それではモデルを構築しましょう。ここでは、2つの全結合の隠れ層と、1つの連続値を返す出力層からなる、Sequential
モデルを使います。モデルを構築するステップはbuild_model
という1つの関数の中に組み込みます。あとから2つ目のモデルを構築するためです。
モデルの検証
.summary
メソッドを使って、モデルの簡単な説明を表示します。
では、モデルを試してみましょう。訓練用データのうち10
個のサンプルからなるバッチを取り出し、それを使ってmodel.predict
メソッドを呼び出します。
うまく動作しているようです。予定通りの型と形状の出力が得られています。
モデルの訓練
モデルを1000エポック訓練し、訓練と検証の正解率をhistory
オブジェクトに記録します。
history
オブジェクトに保存された数値を使ってモデルの訓練の様子を可視化します。
このグラフを見ると、検証エラーは100エポックを過ぎたあたりで改善が見られなくなり、むしろ悪化しているようです。検証スコアの改善が見られなくなったら自動的に訓練を停止するように、model.fit
メソッド呼び出しを変更します。ここでは、エポック毎に訓練状態をチェックするEarlyStoppingコールバックを使用します。設定したエポック数の間に改善が見られない場合、訓練を自動的に停止します。
このコールバックについての詳細はここを参照ください。
検証用データセットでのグラフを見ると、平均誤差は+/- 2 MPG(マイル/ガロン)前後です。これは良い精度でしょうか?その判断はおまかせします。
モデルの訓練に使用していないテスト用データセットを使って、モデルがどれくらい汎化できているか見てみましょう。これによって、モデルが実際の現場でどれくらい正確に予測できるかがわかります。
モデルを使った予測
最後に、テストデータを使ってMPG値を予測します。
そこそこ良い予測ができているように見えます。誤差の分布を見てみましょう。
とても正規分布には見えませんが、サンプル数が非常に小さいからだと考えられます。
結論
このノートブックでは、回帰問題を扱うためのテクニックをいくつか紹介しました。
平均二乗誤差(MSE: Mean Squared Error)は回帰問題に使われる一般的な損失関数です(分類問題には異なる損失関数が使われます)。
同様に、回帰問題に使われる評価指標も分類問題とは異なります。回帰問題の一般的な評価指標は平均絶対誤差(MAE: Mean Absolute Error)です。
入力数値特徴量の範囲が異なっている場合、特徴量毎に同じ範囲に正規化するべきです。
訓練用データが多くない場合、過学習を避けるために少ない隠れ層を持つ小さいネットワークを使うというのが良い方策の1つです。
Early Stoppingは過学習を防止するための便利な手法の一つです。