塑造板球保齡球運動員讓擊球手出局
我有一個詳細說明大量板球比賽(幾千個)的數據集。在板球比賽中,“保齡球手”不斷地向一連串的“擊球手”投擲球。投球手正試圖讓擊球手“出局”。在這方面,它與棒球中的投手和擊球手非常相似。
如果我獲取整個數據集並將擊球手出局的球總數除以保齡球總數,我可以看到投球手讓擊球手出局的平均概率約為 0.03(希望我還沒有出錯?)
我感興趣的是我可以做些什麼來嘗試計算特定擊球手在下一個球上被特定投球手擊出的概率。
數據集足夠大,任何給定的投球手都會向各種各樣的擊球手投出數千個球。所以我相信我可以簡單地將投球手獲得的出局數除以他投出的球數,以計算該特定投球手從下一個球中出局的新概率。
我的問題是數據集不夠大,無法保證給定的投球手在任何給定的擊球手身上投出的球數量在統計上顯著。因此,如果我有興趣計算特定投球手面對特定擊球手出局的概率,我認為這不能以同樣簡單的方式完成。
我的問題是以下方法是否有效:
- 在整個數據集中,球出局的概率為 0.03。
- 如果我計算平均投球手 A 的概率超過 0.06(即是平均投球手的兩倍),
- 平均而言,擊球手 B 的概率超過 0.01(是普通擊球手的三分之一),
- 那麼,是否可以說該特定擊球手在該特定投球手的下一個球上出局的概率將是 0.06 * (0.01 / 0.03) = 0.02?
如果我獲取整個數據集並將擊球手出局的球總數除以保齡球總數,我可以看到投球手讓擊球手出局的平均概率約為 0.03(希望我還沒走錯?)
不幸的是,這可能已經不是您想要的。
假設我們有一個投球手和兩個擊球手:Don Bradman和我。(我對板球知之甚少,所以如果我要在這裡做點什麼,請告訴我。)遊戲大致如下:
- 唐去擊球,並在第 99 碗出局。
- 我去打球,然後馬上出去。
- 唐去擊球,並在第 99 碗出局。
- 我去打球,然後馬上出去。
在這種情況下,200 個保齡球中有 4 個出局,因此投球手讓擊球手出局的邊際概率估計為 4/200 = 2%。但實際上,Don 出局的概率更像是 1%,而我的是 100%。所以如果你隨機選擇一個擊球手和一個投球手,這個投球手這次讓這個擊球手出局的概率更像是(50% 的機會你選擇了 Don)(1% 的機會他出局)+(50% 的機會你選擇了我)(100% 的機會我出去)= 50.05%。但是,如果你隨機選擇一個音高,那麼它有 2% 的機會被淘汰。因此,您需要仔細考慮您正在考慮哪些採樣模型。
無論如何,你的提議並不瘋狂。更具象徵意義的是,讓成為投球手和擊球手;讓是概率得到出去。然後你說:
這確實具有所需的屬性:
如果你只接管手段,它同樣是一致的要么. 請注意,在這種情況下,我們可以分配
你的假設是你可以觀察到和從數據來看還算不錯。只要(a)你有足夠的遊戲[你做的]並且(b)玩家都以相當相似的頻率互相玩,那麼這很好。 稍微詳細說明(b):假設你有一堆專業遊戲的數據,還有一堆我和朋友一起玩的遊戲。如果沒有重疊,也許我比我的朋友看起來真的很好,所以也許你認為我比最差的職業選手要好得多。這顯然是錯誤的,但您沒有任何數據可以反駁。如果你有一點重疊,我曾經和一名職業選手交手並被摧毀,那麼數據確實支持我和我的朋友們的排名比職業選手差得多,但你的方法不會考慮到這一點。從技術上講,這裡的問題是你假設你有一個很好的樣本,例如,但你的分佈有偏差。
當然,您的數據看起來不會那麼糟糕,但是根據聯賽結構或其他情況,它可能存在一些問題。
您可以嘗試用不同的方法解決它。建議的模型實際上是協同過濾中常見的低秩矩陣分解模型的一個實例,例如在Netflix 問題中。在那裡,您選擇功能和有維度, 並表示. 你可以解釋就像將您的模型從單一的“質量”分數複雜化到具有多個維度的分數一樣:也許某些投球手在對抗某些類型的擊球手時表現更好。(例如在 NBA 比賽中已經這樣做了。)
它們被稱為矩陣分解的原因是因為如果你製作一個矩陣與投球手一樣多的行和與擊球手一樣多的列,您可以將其寫為
你在哪裡考慮了一個矩陣成一個一和一. 當然,你不能觀察直接地。通常的模型是你可以觀察到嘈雜的條目隨機;在您的情況下,您可以從二項式分佈中觀察到一個平局,其中每個條目的試驗次數是隨機的.
您可以構建一個概率模型,例如:
在哪裡和被觀察到,你可能會放一些超先驗/並在Stan中進行推斷。 這不是一個完美的模型:首先,它忽略了與分數相關(正如我在第一部分中提到的),更重要的是,它不限制將在(你可能會使用邏輯 sigmoid 或類似的方法來實現)。一篇相關文章,具有更複雜的先驗和(但不使用二項式似然)是:Salakhutdinov 和 Mnih,使用馬爾可夫鏈蒙特卡羅的貝葉斯概率矩陣分解,ICML 2008。(doi / author’s pdf)