Path: blob/master/site/ja/tutorials/estimator/linear.ipynb
25118 views
Copyright 2019 The TensorFlow Authors.
Estimator で線形モデルを構築する
概要
このエンドツーエンドのウォークスルーでは、tf.estimator
API を使用してロジスティック回帰モデルをトレーニングします。このモデルはほかのより複雑なアルゴリズムの基準としてよく使用されます。
注意: Keras によるロジスティック回帰の例はこちらからご覧いただけます。これは、本チュートリアルよりも推奨されます。
セットアップ
Titanic データセットを読み込む
Titanic データセットを使用して、性別、年齢、船室クラスなどの特性に基づき、(やや悪趣味ではありますが)乗船者の生存を予測することを目標とします。
データを確認する
データセットには、次の特徴量が含まれます。
トレーニングセットと評価セットには、それぞれ 627 個と 264 個の例があります。
乗船者の大半は 20 代から 30 代です。
男性の乗船者数は女性の乗船者数の約 2 倍です。
乗船者の大半は「3 等」の船室クラスを利用していました。
女性は男性よりも生存する確率がはるかに高く、これは明らかにモデルの予測特徴量です。
モデルの特徴量エンジニアリング
Estimator は、モデルがどのように各行の入力特徴量を解釈すべきかを説明する特徴量カラムというシステムを使用しています。Estimator は数値入力のベクトルを期待しており、特徴量カラムにはモデルがどのように各特徴量を変換すべきかが記述されています。
効率的なモデルを学習するには、適切な特徴カラムの選択と作成が鍵となります。特徴量カラムは、元の特徴量 dict
の生の入力の 1 つ(基本特徴量カラム)または 1 つ以上の基本カラムに定義された変換を使って作成された新規カラム(派生特徴量カラム)のいずれかです。
線形 Estimator は、数値特徴量とカテゴリカル特徴量の両方を利用します。特徴量カラムは TensorFlow Estimator と機能し、その目的はモデリングに使用される特徴量を定義することにあります。さらに、One-Hot エンコーディング、正規化、およびバケット化などのいくつかの特徴量エンジニアリング機能を提供します。
基本特徴量カラム
input_function
は、入力パイプラインをストリーミングの手法でフィードする tf.data.Dataset
にデータを変換する方法を指定します。tf.data.Dataset
は、dataframe や csv 形式ファイルなど、複数のソースを取ることができます。
次のようにデータセットを検査できます。
また、tf.keras.layers.DenseFeatures
レイヤーを使用して、特定の特徴量カラムの結果を検査することもできます。
DenseFeatures
は密なテンソルのみを受け入れ、それを最初にインジケータカラムに変換する必要のあるカテゴリカラムを検査します。
すべての基本特徴量をモデルに追加したら、モデルをトレーニングすることにしましょう。モデルのトレーニングは、 tf.estimator
API を使ってコマンド 1 つで行います。
派生特徴量カラム
精度が 75% に達しました。それぞれの基本特徴量カラムを個別に使用しても、データを説明するには不足している場合があります。たとえば、年齢とラベルの間の相関関係は、性別が変われば異なることがあります。そのため、gender="Male"
と gender="Female"
で単一モデルの重みのみを把握しただけでは、すべての年齢と性別の組み合わせをキャプチャすることはできません(gender="Male"
と age="30"
と gender="Male"
と age="40"
を区別するなど)。
さまざまな特徴量の組み合わせの間の違いを把握するには、相互特徴量カラムをモデルに追加できます(また、相互カラムの前に年齢カラムをバケット化できます)。
組み合わせた特徴量をモデルに追加したら、モデルをもう一度トレーニングしましょう。
これで、77.6% の精度に達しました。基本特徴量のみでトレーニングした場合よりわずかに改善されています。ほかの特徴量と変換を使用して、さらに改善されるか確認してみましょう!
このトレーニングモデルを使用して、評価セットからある乗船者に予測を立てることができます。TensorFlow モデルは、バッチ、コレクション、または例に対してまとめて予測を立てられるように最適化されています。以前は、eval_input_fn
は評価セット全体を使って定義されていました。
最後に、結果の受信者操作特性(ROC)を見てみましょう。真陽性率と偽陽性率間のトレードオフに関し、より明確な予想を得ることができます。