モデルをつくる
モデル学習
学習データからモデルを訓練します。主な設定項目の意味と、学習時間の目安、GPU を使った高速化。
この記事の要点
- 学習データ・目的変数・トレーナーを選んで実行します。まずは既定の設定で 1 本作るのが近道です。
- 指標は訓練・検証・テストの 3 つが並びます。見るべきは検証・テストで、訓練とのひらきが大きければ過学習を疑います。
- GPU で速くなるのはニューラルネット系のトレーナーだけです。GBDT は CPU で実行されます。
学習の画面
左メニューの「学習」を開きます。 画面は上から順に、使う学習データ、「目的変数選択」、「トレーナー選択」と進む構成になっています。
目的変数を選ぶ
何を予測するかを決めます。 勝つかどうかを当てるのか、着順を当てるのか、 レースの中での並び順を当てるのか ── ここで選んだものによって、 後に表示される指標も変わります。
選び方の考え方は競馬編:競馬予想を「予測問題」として立てるにまとめています。
トレーナー(学習方法)を選ぶ
学習に使うアルゴリズムを選びます。迷ったときは既定のままで構いません。 表形式のデータでは勾配ブースティング木(GBDT)が扱いやすく、 多くの場面で最初の一手になります (代表的なアルゴリズム)。
主な設定には次のようなものがあります。
| 設定 | 意味 | 最初の目安 |
|---|---|---|
| 訓練比率 / 検証比率 | 学習に使う割合と、設定を選ぶために使う割合。残りがテスト(最終確認)になる | 既定のまま |
| クラス不均衡対応 | 「1 着」のように少数派の事象を、学習時にどう扱うか | 既定のまま。必要になってから触る |
| チューニング設定 | ハイパーパラメータを自動で探索する範囲 | 最初は使わない(時間がかかります) |
| TorchSharp学習デバイス | ニューラルネット系トレーナーを CPU と GPU (CUDA) のどちらで動かすか (既定の動作は「設定」→「実行デバイス」タブで指定) | 既定のまま |
結果の見方
指標は訓練・検証・テストの 3 つが並びます。訓練は学習に使ったデータでの成績なので、実力より良く出ます。 見るべきは検証とテストで、訓練とのひらきが大きければ過学習を疑ってください。
なお、この分割は必ずしもレースの時系列で切られるとは限りません。実戦に近い検証は、評価期間を自分で指定できるバックテストで行ってください(競馬編:時系列を無視した分割)。
学習が終わると、評価指標が表示されます。 目的変数によって出るものが変わりますが、代表的なものは次のとおりです。
| 指標 | 意味 |
|---|---|
| Accuracy(正解率) | 当たった割合。ただし「1 着」のように少数派を当てる問題では、 高く出ても意味が薄い |
| Precision / Recall / F1 | 空振りの少なさ・見逃しの少なさと、そのバランス |
| AUC | 順位付けの良さ。0.5 がでたらめ、1.0 が完璧 |
| NDCG | 並べ替えの良さ。上位に正解を持ってこられているかを見る |
| RMSE / MAE | 数値を当てる場合の誤差の大きさ |
| Confusion Matrix | 予測と実際の組み合わせを 4 通りに数えた表 |
指標の読み方は評価指標の読み方で解説しています。
学習にかかる時間の目安
学習時間は、学習データの行数・列数、トレーナーの種類、 ハイパーパラメータの探索を行うかどうかで大きく変わります。 数万行の学習データを既定の設定で学習するなら数分程度、 数十万行や自動探索ありでは数十分以上かかることもあります。まずは小さめの学習データで 1 周し、時間の感覚をつかむのがおすすめです。
GPU で高速化できるもの・できないもの
CUDA 対応の NVIDIA GPU を搭載したパソコンでは、 「設定」→「GPU プラグイン」から必要なプログラムを導入し、 「実行デバイス」で使用を指定します。 GPU 加速はプランを問わず利用できます (GPU プログラムのダウンロードにはログインが必要です)。
速くなること自体よりも、条件を変えて何度も試せるようになることが実際の利点です。 ただし試行を増やすほど検証成績は甘くなるので、最終確認用のデータには手を付けないという原則は忘れないでください。
モデルができたら、次はバックテストで検証します。