完全な履歴が与えられた場合にスポーツの試合に勝つチームのオッズを計算するアルゴリズム

ジョン・シェドレツキー

仮定:

  • チームは決して変わらない
  • チームのスキルは向上しません
  • 他のチームのサブセットに対する各チームのパフォーマンスの全履歴がわかっています
  • チーム間でプレイされるゲームの数は多いですが、潜在的にまばらです(各チームはお互いにプレイしていません)

例えば:

私は次のような試合結果の長いリストを持っています:

Team A beats Team B
Team B beats Team A
Team A beats Team B
Team C beats Team A
Team A beats Team C

問題:

他のチームを打ち負かすチームの正しい賭けのオッズを予測します。

上記の例では、AがBに66%の確率で勝つべきであると結論付けるかもしれません。これは直接観察に基づいており、非常に簡単です。ただし、CがBを打ち負かす確率を見つけるのは難しいようです。彼らは一緒にプレイしたことはありませんが、C> Bである可能性が最も高く、自信はありません。

私が行った調査:

チェスのEloおよびGlickoレーティングシステムなど、スキルゲームのさまざまなランキングシステムについてかなり読んだことがあります。これらは、関係する確率分布について仮定を立てているため、不十分です。たとえば、Eloの中心的な仮定は、各ゲームの各プレーヤーのチェスのパフォーマンスは正規分布の確率変数であるというものでした。ただし、ウィキペディアによると、既存のデータによりよく適合する他の分布があります。

配布を想定したくありません。10,000以上の一致結果が手元にあるので、証拠から分布を推測するか(これを行う方法がわかりません)、または気にしない何らかの強化学習スキームを使用できるはずです。分布は何ですか。

ジュリアン

確率(または複数の確率)の最良の推定を行い、より多くのデータが利用可能になったときに推定を継続的に更新する必要があります。それはベイズ推定を必要とします!ベイズ推論は、AとBの2つの事柄が同時に発生する確率(分布)が、Bがケースに確率を掛けた場合のAの確率(分布)に等しいという観察に基づいています。そのBが当てはまります。数式形式:

P(A、B)= P(A | B)P(B)

そしてまた

P(A、B)= P(B | A)P(A)

それゆえ

P(A | B)P(B)= P(B | A)P(A)

P(B)を反対側に移動すると、ベイジアン更新ルールが得られます

P(A | B) '= P(B | A)P(A)/ P(B)

通常、Aは推定しようとしている変数(「チームxがチームyを打ち負かす」など)を表し、Bは観測値(たとえば、チーム間で勝ち負けた試合の完全な履歴)を表します。方程式の左辺があなたの信念の更新を表すことを示すために、素数(つまり、P(A | B) 'の引用)を書きましたそれを具体化するために、あなたの新しいチームxはチームyを打つする確率の推定値は、これまでのすべての観測与えられ、それらの観測を行うための確率で、あなたの前の見積もり与え、時間があなたの前の 推定値を、観察した観測値を見る全体的な確率で割ったものです(つまり、チーム間の相対的な強さについての仮定はありません。ほとんどの場合、一方のチームが勝つ可能性は、両方のチームがほぼ同じ頻度で勝つ可能性が低くなります)。

現在の更新の左側のP(A | B) 'は、次の更新の右側の新しいP(A)になります。より多くのデータが入ってくるので、これを繰り返し続けます。通常、可能な限り偏りを持たないようにするために、P(A)の完全に平坦な分布から始めます。時間の経過とともに、P(A)はますます確実になりますが、アルゴリズムは、推定しようとしている基礎となる確率の突然の変化にかなりうまく対処できます(たとえば、新しいプレーヤーが参加したためにチームxが突然強くなった場合)チーム)。

幸いなことに、ベイジアン推論は、ElKaminaも言及したベータ分布うまく機能します。実際、この2つは、確率分布を学習することを目的とした人工知能システムで組み合わされることがよくあります。ベータ分布自体はまだ想定されていますが、さまざまな形(完全に平坦で非常にスパイク状を含む)をとることができるという利点があるため、分布の選択が結果に影響を与える可能性があることを心配する理由は比較的少ないです。

悪いニュースの1つは、ベータ分布とは別に、まだ仮定を立てる必要があるということです。たとえば、次の変数があるとします。

A:チームxがチームyを打ち負かす

B:チームyがチームzを打ち負かす

C:チームxがチームzを打ち負かす

また、xとyの間の直接一致、およびyとzの間の一致からの観測値がありますが、xとzの間の一致からの観測値はありません。P(C)を推定する簡単な(ただし単純な)方法は、推移性を仮定することです。

P(C)= P(A)P(B)

アプローチがどれほど洗練されていても、データの相互依存性だけでなく、ギャップに対処するために、ある種の確率の構造を定義する必要があります。どのような構造を選択しても、それは常に前提となります。

もう1つの悪いニュースは、このアプローチが非常に複雑であり、問​​題にどのように適用するかについて完全に説明できないことです。相互依存確率の構造(チームx、y、zを含む他の分布でチームxがチームyを破る確率)が必要な場合は、ベイジアンネットワークまたは関連する分析(マルコフ確率場経路分析など)を使用できます。)。

これがお役に立てば幸いです。いずれにせよ、説明を求めてください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

時間計算量O(n ^ 2)のアルゴリズムが与えられた場合、入力nを3倍にするとどうなりますか?

分類Dev

ソートされた配列の部分的に絶対合計の中央値を計算するための効率的なアルゴリズム

分類Dev

変数に応じてチームが勝つ確率を計算するアルゴリズムを設計する

分類Dev

合計が値になる5つの要素の配列を検索するためのアルゴリズム

分類Dev

アルゴリズムがスタックを使用して正確な合計を持つサブセットを見つけられない場合、ターゲットに最も近い値を持つサブセットを見つける

分類Dev

2部グラフが与えられたときにフィボナッチヒープまたはバイナリヒープを使用するプリムアルゴリズムの時間計算量

分類Dev

ジュリア:反復可能な `itr`が与えられた場合、` itr`の上位の `n`値のインデックスを取得するための効率的なデータ構造とアルゴリズムはありますか?

分類Dev

すべてのパス合計を見つけるためのこのアルゴリズムの時間計算量はどれくらいですか?

分類Dev

二分木で与えられた合計ですべてのパスを印刷するアルゴリズム

分類Dev

アルゴリズム:トーナメントに勝つチャンスがなくなったプレイヤーを排除する

分類Dev

キースペースに2つの要素しかない場合、最も安定した並べ替えアルゴリズムは何ですか

分類Dev

二分木が与えられた場合、各深さのすべてのノードのリンクリストを作成するアルゴリズムを設計します

分類Dev

可能なすべてのパスを計算するために、オプションのノードと代替ノードを使用してツリーを歩くアルゴリズムが必要です

分類Dev

アルゴリズムが派生クラスの知識を必要とする場合のデータからのアルゴリズムの分離

分類Dev

円をポリゴンに結合するためのアルゴリズム

分類Dev

どの値が配列から指定された数値の合計になるかを取得するアルゴリズム

分類Dev

遺伝的アルゴリズムに部分的に一致したクロスオーバーを使用する場合の重複の処理

分類Dev

与えられたグラフ上の2つのノード間の最短経路の数を計算するO(E + V)アルゴリズム

分類Dev

昇順でソートされたintの配列が与えられた場合、すべての重複をback.exにプッシュするアルゴリズムを記述します。ex[1,2,2,4,5,5]は[1,2,4,5,2,5]になります。

分類Dev

最大合計値まで適合するように繰り返し可能な値のセットを見つけるためのアルゴリズム

分類Dev

実行履歴によって、与えられた命令でオペランドスタックサイズが異なる場合がありますか?

分類Dev

2つのポーズが与えられた場合、どのようにホモグラフィを計算しますか?

分類Dev

与えられた最小値でフィボナッチツリーを構築するアルゴリズム

分類Dev

アルゴリズムが見つからない場合にnullではなくconsole.logを出力する

分類Dev

Kセットのポイントが与えられた場合、選択したポイント間のペアワイズ距離の合計が最小になるように、各セットから1つのポイントを選択します。

分類Dev

考えられるすべてのシナリオの可能性を計算するための柔軟なアルゴリズム

分類Dev

すべての組み合わせを見つけるためのこのアルゴリズムの時間計算量はどれくらいですか?

分類Dev

ズームする場合にスケールと変換のために計算する変換値

分類Dev

アルゴリズム-要素の合計が0以上になるように配列の開始インデックスを見つける

Related 関連記事

  1. 1

    時間計算量O(n ^ 2)のアルゴリズムが与えられた場合、入力nを3倍にするとどうなりますか?

  2. 2

    ソートされた配列の部分的に絶対合計の中央値を計算するための効率的なアルゴリズム

  3. 3

    変数に応じてチームが勝つ確率を計算するアルゴリズムを設計する

  4. 4

    合計が値になる5つの要素の配列を検索するためのアルゴリズム

  5. 5

    アルゴリズムがスタックを使用して正確な合計を持つサブセットを見つけられない場合、ターゲットに最も近い値を持つサブセットを見つける

  6. 6

    2部グラフが与えられたときにフィボナッチヒープまたはバイナリヒープを使用するプリムアルゴリズムの時間計算量

  7. 7

    ジュリア:反復可能な `itr`が与えられた場合、` itr`の上位の `n`値のインデックスを取得するための効率的なデータ構造とアルゴリズムはありますか?

  8. 8

    すべてのパス合計を見つけるためのこのアルゴリズムの時間計算量はどれくらいですか?

  9. 9

    二分木で与えられた合計ですべてのパスを印刷するアルゴリズム

  10. 10

    アルゴリズム:トーナメントに勝つチャンスがなくなったプレイヤーを排除する

  11. 11

    キースペースに2つの要素しかない場合、最も安定した並べ替えアルゴリズムは何ですか

  12. 12

    二分木が与えられた場合、各深さのすべてのノードのリンクリストを作成するアルゴリズムを設計します

  13. 13

    可能なすべてのパスを計算するために、オプションのノードと代替ノードを使用してツリーを歩くアルゴリズムが必要です

  14. 14

    アルゴリズムが派生クラスの知識を必要とする場合のデータからのアルゴリズムの分離

  15. 15

    円をポリゴンに結合するためのアルゴリズム

  16. 16

    どの値が配列から指定された数値の合計になるかを取得するアルゴリズム

  17. 17

    遺伝的アルゴリズムに部分的に一致したクロスオーバーを使用する場合の重複の処理

  18. 18

    与えられたグラフ上の2つのノード間の最短経路の数を計算するO(E + V)アルゴリズム

  19. 19

    昇順でソートされたintの配列が与えられた場合、すべての重複をback.exにプッシュするアルゴリズムを記述します。ex[1,2,2,4,5,5]は[1,2,4,5,2,5]になります。

  20. 20

    最大合計値まで適合するように繰り返し可能な値のセットを見つけるためのアルゴリズム

  21. 21

    実行履歴によって、与えられた命令でオペランドスタックサイズが異なる場合がありますか?

  22. 22

    2つのポーズが与えられた場合、どのようにホモグラフィを計算しますか?

  23. 23

    与えられた最小値でフィボナッチツリーを構築するアルゴリズム

  24. 24

    アルゴリズムが見つからない場合にnullではなくconsole.logを出力する

  25. 25

    Kセットのポイントが与えられた場合、選択したポイント間のペアワイズ距離の合計が最小になるように、各セットから1つのポイントを選択します。

  26. 26

    考えられるすべてのシナリオの可能性を計算するための柔軟なアルゴリズム

  27. 27

    すべての組み合わせを見つけるためのこのアルゴリズムの時間計算量はどれくらいですか?

  28. 28

    ズームする場合にスケールと変換のために計算する変換値

  29. 29

    アルゴリズム-要素の合計が0以上になるように配列の開始インデックスを見つける

ホットタグ

アーカイブ