前回の記事では、自分の判断を数値化してスコアを作ってみた話を書きました。
感覚で判断していたことを数値として扱えるようになり、簡単な並び替えまでできるようになりました。
前回は、感覚で判断していた要素を数値化してスコアを作ってみたところまでを書きました。
(→ 自分の判断を数値化してみた話)
今回の学習では、自分の趣味でもあるボートレースの考え方をベースに、ロジック作りを進めています。
実際の予想で見ている要素を整理しながら、コードに落とし込む形です。
ただ、実際に使ってみると、少し違和感のある結果になることもありました。
スコアに違和感が出てきた
最初に作ったスコアは、とてもシンプルなものでした。
score = 実力 − スタート + コース補正
このような形です。
ある程度は感覚に近い並びになりますが、細かく見ると「この順番は違う気がする」と思うケースも出てきました。
ここで気づいたのは、単純に数値化するだけでは足りないということでした。
同じ要素でも、重要度が違う場合があります。
また、条件によって評価の仕方を変えた方がよいケースもあります。
要素の重みを考える
そこで、スコアの計算方法を少し見直してみました。
例えば、
・実力の影響を大きくする
・スタートの影響を小さくする
・コース補正を調整する
といった形で、バランスを調整していきました。
具体的には、
score = 実力 × 係数 − スタート × 係数 + コース補正
のように、重みを変えるイメージです。
こうすることで、並び順が少しずつ感覚に近づいてきました。
ロジックを考える面白さ
この作業をしていて感じたのは、「ロジックを考える面白さ」でした。
もともとは、ボートレースの予想をするときに自分が見ている要素をベースにしています。
例えば予想のときは、
・実力
・スタートの安定感
・コース
といった要素を総合的に見て判断しています。
これまではなんとなく感覚で判断していましたが、
それを数値として整理しようとすると、
なぜそう判断しているのか
どの要素を重視しているのか
を考える必要が出てきます。
その結果、自分の判断基準も少しずつ言語化できるようになってきました。
単にスコアを作るだけでなく、「どう評価するか」を考える工程が、かなり面白いと感じています。
次にやりたいこと
スコアの調整をしていく中で、次にやりたいことも見えてきました。
・複数のレースで試す
・過去データで検証する
・ランキングとして表示する
こうした処理を追加していくことで、単なるスコアではなく、ツールとして使える形に近づけていきたいと思っています。
スコアを調整するだけでなく、実際に使える形にしていきたいと考えています。
このあたりは、次の記事でツールとして形にしていく流れを書いてみようと思います。
少しずつですが、感覚で行っていた判断をロジックとして整理できるようになってきました。
