モデルをコンパイルして学習する
2つの出力を持つモデルが用意できました。次は2つの損失関数でコンパイルします。'score_diff' には平均絶対誤差(MAE)、'won' には二値クロスエントロピー(logloss とも呼ばれます)を使います。その後、入力として 'seed_diff' と 'pred' を与えて学習し、出力として 'score_diff' と 'won' を予測します。
このモデルは試合のスコアを活用し、接戦(score diff が小さい)のときは大差(score diff が大きい)よりも勝利確率が低くなるように調整できます。
回帰問題は分類問題よりやさしい傾向にあります。というのも、MAE は偶然による誤差に対してモデルへのペナルティが小さいためです。たとえば、score_diff が -1 で won が 0 の場合、team_1 は不運でフリースロー1本差で負けたことになります。この「やさしい」問題のデータが、「むずかしい」問題の解法をモデルが見つける助けになります。
この演習はコースの一部です
Keras で学ぶ高度な Deep Learning
演習の手順
keras.optimizersからAdamをインポートします。- 損失を
'mean_absolute_error'と'binary_crossentropy'の2つに設定し、学習率 0.01 の Adam オプティマイザを使ってモデルをコンパイルします。 - 入力に
'seed_diff'と'pred'の列、ターゲットに'score_diff'と'won'の列を指定して学習させます。 - エポック数は 10、バッチサイズは 16384 にします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import the Adam optimizer
____
# Compile the model with 2 losses and the Adam optimzer with a higher learning rate
model.____(loss=['____', '____'], optimizer=____)
# Fit the model to the tournament training data, with 2 inputs and 2 outputs
model.____(games_tourney_train[['____', '____']],
[games_tourney_train[['____']], games_tourney_train[['____']]],
epochs=____,
verbose=True,
batch_size=____)