過去の試合から確率を推定する
まず、Understatにある18,346試合分のxGと勝敗データを、understatAPIで取得しました。そのデータを使い、ホームとアウェーのxG差から、ホーム勝利・引き分け・アウェー勝利の確率を求めるモデルを作りました。手法は多クラスロジスティック回帰です。
この値は、試合内容を振り返るためのものです。試合前の勝敗予想を示すものではありません。また、xGの提供元による定義の違いや、退場・負傷などxG差に表れない事情は計算に含まれません。
ホームとアウェーのxG差を取る
計算に使うのは、試合終了後のホームとアウェーのxGの差です。シュート数や最終スコアは使いません。
d = ホームxG − アウェーxG
たとえば、ホームのxGが1.20、アウェーが1.80なら、d = −0.60 です。
3つの結果にスコアを付ける
次に、ホーム勝利・引き分け・アウェー勝利のそれぞれについて、xG差に係数を掛け、定数を足します。この段階ではまだ確率ではなく、各結果の「スコア」を計算しています。
結果ごとのスコア = 定数 + 係数 × d
| 結果 | 定数 | xG差の係数 |
|---|---|---|
| ホーム勝利 | +0.04023512 | +0.81022425 |
| 引き分け | −0.02314494 | +0.01647977 |
| アウェー勝利 | −0.01709018 | −0.82670402 |
xG差がプラスになるほどホーム勝利のスコアが高くなり、マイナスになるほどアウェー勝利のスコアが高くなります。
3つのスコアを確率に直す
各スコアの指数関数(exp)を計算し、その合計で割ると確率になります。この計算をsoftmaxと呼び、求めた確率を足すと100%になります。
結果の確率 = exp(その結果のスコア) ÷ 3結果のexpの合計
先ほどの d = −0.60 を当てはめると、次のようになります。
確率を勝ち点期待値に換算する
最後に、勝利なら3点、引き分けなら1点、敗戦なら0点として、それぞれの確率に掛けて足します。
xP = 3 × 勝利確率 + 1 × 引き分け確率
この例では、ホームのxPは 3 × 0.199 + 0.300 = 約0.90、アウェーのxPは 3 × 0.501 + 0.300 = 約1.80 です。順位表のxPは、この値を試合ごとに足し合わせています。