第⑪回では、同着など通常と違う結果を、推測で通常処理へ通さない考え方を書きました。
前回の記事:結果を急いで確定させない理由|開発日記⑪
同じ考え方は、将来の学習・検証用データにも必要です。ボートレースAIを育てるには予想の材料になるデータが必要ですが、ファイルを読めることと、そのままAIへ入れてよいことは別です。
今回は、BOAT RACE公式の競走成績TXTを、安全に扱えるかを確かめた入力受入仕様v1をまとめます。
公式の競走成績TXTを確認しました
公式の日別競走成績ファイルには、レースの着順や展示情報などが固定桁のTXT形式で記録されています。
まずは、これまでに確認していた通常レースと比較しました。その結果、34レース・204艇について、展示情報と着順が既存データと一致しました。
通常レースについては、現在のデータ構造と入力としての互換性を確認できました。
通常ではない状態もあります
しかし、通常レースだけを見て「使える」と決めるのは危険です。
競走成績には、失格、欠場、展示情報の欠測など、通常の6艇がそろったレースとは違う状態があります。
今回の確認では、次の実例を調べました。
| 状態 | 確認した内容 |
|---|---|
| 失格 | 2024年11月20日・下関3Rで S0 と S2 の実例を確認 |
| 欠場 | 2021年7月20日・芦屋12Rの4号艇で、Web表示の「欠」に対応する K1 を確認 |
| 展示欠測 | 同じ欠場艇で、展示情報も通常艇と同じ形ではないことを確認 |
欠場艇の展示情報を数値で補ったり、失格を通常の着順として扱ったりすると、実際にはなかった条件を学習データへ入れてしまうことになります。
分からないものを無理に通さない
そこで、TXT入力受入仕様v1ではレースごとに次の3区分へ分けます。
| 区分 | 扱い |
|---|---|
NORMAL |
確認済みの通常状態。学習・検証の候補にする |
KNOWN_SPECIAL |
確認済みの失格・欠場・展示欠測など。通常レースとしては採用しない |
HOLD |
未知コード、欠測、不整合など。推測せず保留する |
この方式は、fail-closedと呼んでいます。意味は単純で、「問題がなさそうだから通す」のではなく、「通常だと確認できたものだけを通す」ということです。
現時点では、NORMAL のみを採用候補にし、KNOWN_SPECIAL と HOLD はレース単位で除外します。未知の状態を救済したり、5艇だけで通常レースのように分析したりはしません。
これは正式Forwardの成績ではありません
今回の作業は、入力仕様の調査と受入設計です。
まだ行っていないことも明確です。
- 正式Forwardへの組み込み
- 本番DBへの一括取り込み
- Forward Testの変更
- 正式KPIへの反映
- Phase 3への移行
- 既存AIモデルの再学習
つまり、TXTが使えそうだと確認できたことは、AI予想の成績が上がったことを意味しません。正式ForwardのKPIとも混ぜません。
今回のまとめ
公式データは貴重ですが、形式が読めるだけでAIの入力にしてよいとは限りません。
今回固定した受入仕様v1では、通常・失格・欠場・展示欠測を分け、分からない状態は推測せず保留します。
少し遠回りに見えても、誤ったデータを一度学習へ入れてしまう方が、あとから直すのは大変です。今後も、正式運用の実績と研究開発の検証を分けながら、使えるデータを慎重に増やしていきます。


コメント