世界盃預測,其實很簡單

世界盃預測,其實很簡單

17 人贊了文章

你們看到的世界盃,其實都是錄播的。你們想想,大晚上的哪來的太陽!

今天我們來扯一扯,如何用一個簡單的機器學習模型,預測世界盃比賽的結果。


01 問題定義

為了預測比賽勝負,我們需要將預測勝負的問題,進行一個合理的數學建模。

正常來說,一場足球比賽只可能有三種結果,即勝、負、平,在這種情況下,我們可以將預測勝負的問題定義為一個分類問題,即給定一場比賽的對陣雙方,預測比賽結果屬於勝、負、平三種的哪一類。

在機器學習中,分類問題可以定義為,利用一組已知的樣本輸入 X 和對應的類別 Y,構建一個分類器,預測一個未知樣本 x 對應的類別。

從這個定義我們可以看出,在預測比賽勝負之前,我們需要一些已知樣本來構建一個分類器,這組已知的樣本,通常被稱為訓練集,需要預測結果的樣本,通常被稱為測試集。

對於世界盃預測的問題,我們已經有了一組需要預測結果的比賽,這些比賽就構成了我們的測試集。但是,我們還沒有訓練集,還不能構建分類器進行預測。


02 數據收集

為了構建分類器,我們需要收集一個訓練集。

一般來說,當訓練集和測試集的分布比較接近時,我們能得到一些比較靠譜的結果。

對於世界盃比賽,可以用以前世界盃比賽的數據作為訓練集。不過,一屆世界盃才64場比賽,這樣的數據實在是太少,在數據較少的情況下,得到的分類器通常效果較差,預測的很不靠譜。為此,我們需要收集一些額外的數據進行補充。

對於額外數據的選擇,我們從以下兩方面出發進行考慮。

第一,世界盃比賽是成年國家隊之間的比賽,因此,我們應該補充一些成年國家隊之間的比賽,如大型杯賽,友誼賽等;像聯賽和青少年比賽的數據,由於分布不同,所以不太適合作為訓練集。

第二,足球比賽規則和戰術流派在不斷變化,用20年前的比賽結果預測現在的世界盃,分布差異太大,可能也不太靠譜。

基於上述兩方面考慮,我們的訓練集採用以下數據:

  1. 14年、18年世界盃預選賽
  2. 14年世界盃
  3. 12年、16年歐洲杯
  4. 16年歐洲杯預選賽
  5. 15年、16年美洲杯
  6. 13年、17年聯合會杯
  7. 15年、17年中北美金杯
  8. 17年非洲杯
  9. 15年亞洲杯
  10. 17年、18年國家隊友誼賽

為了獲得這些數據,我們從一個專業的足球數據網站:whoscored.com,利用爬蟲拿到了這些比賽的時間、結果、雙方的出場球員以及球員的相關統計數據。

這些數據大約有2000場左右。


03 特徵選擇

有了訓練集的數據,我們需要構造一些簡單的特徵,對比賽結果進行預測。這些特徵,應該與比賽結果比較相關。

首先,比賽球隊本身就是一個很好的特徵,當我們聽說比賽的隊伍是巴西隊和中國隊的時候,不用想出場的球員是誰,十有八九就能預測中國隊不太行。

接著,上場球員實力也是一個不錯的特徵,阿根廷踢德國的比賽,如果梅西不上,可能大家也不太會看好阿根廷。

再來,球隊的板凳深度應該也是一個有用的特徵,能在歐冠決賽把貝爾按在替補席上的皇馬,獲勝也在情理之中。

那麼,綜合以上想法,我們的特徵其實就不難想像:

  1. 兩組ID特徵:球隊1的ID,球隊2的ID
  2. 球隊1首發球員當年在聯賽的平均數據
  3. 球隊1替補球員當年在聯賽的平均數據
  4. 球隊2首發球員當年在聯賽的平均數據
  5. 球隊2替補球員當年在聯賽的平均數據

對於球員,其平均統計數據有13組,分別是:身高、體重、出場次數、助攻數、進球數、傳球成功率、射門數、爭頂頭槌成功率、最佳球員次數、出場時間、替補次數、賽後評分、排名。

在處理特徵過程中,對於一些特別弱的國家,其比賽和球員數據可能有所缺失,為此,我們去掉了一些數據完全缺失的比賽,以免對預測結果產生影響。


04 模型訓練

有了特徵,我們就可以用模型構造一個分類器進行訓練。

由於我們的訓練數據只有2000條左右,為了豐富數據量,我們做了一個簡單的數據擴展,即將球隊1和球隊2的特徵互換,得到一條新數據,這樣我們就將訓練集從2000條擴展到了4000條。

在模型的選擇上,由於數據量和數據維度不大,一些傳統分類演算法就能取得不錯的效果。基於對效果的比較,我們最終選用了基於集成學習的AdaBoost演算法,訓練一個模型預測結果。

俗話說,三個臭皮匠,頂個諸葛亮。AdaBoost演算法可以看成是多個弱分類器(這裡用的是CART決策樹)的集成。簡單來說,AdaBoost先用一個弱分類器得到一組分類結果,然後根據這組結果,對出錯的樣本進行加權,得到下一個弱分類器。最後,通過對所有弱分類器的加權平均,我們能得到一組不錯的結果。

在使用AdaBoost演算法時,我們對球隊ID進行了獨熱編碼的處理,即將ID轉化成了一個長度為N的單位向量(N是球隊ID的總數)。


05 模型預測

訓練好分類器後,我們可以對比賽的結果進行預測。

對於未知的比賽,由於我們不能提前知道世界盃比賽雙方的首發陣容,因此,在預測時,我們只能用該隊最近時間的一次比賽的數據進行模擬計算。

最終模型預測的結果如下:

在日本與塞內加爾比賽前,該模型的準確率為0.767。

至於後面的比賽蒙的準不準,讓我們拭目以待吧。


06 總結

本文純屬一本正經地胡說八道,對於預測結果的準確性,概不負責。

畢竟,足球是圓的,出現什麼結果都是正常的!本導演說了也不算數啊!

「王秘書,給球員的盒飯準備好了嗎?跟他們說,今天加雞腿!」

推薦閱讀:

[機器學習入門] 李宏毅機器學習課程從這裡開始
【讀論文】Neural Episodic Control
技術站搬運工:來自BrianWang的技術站:PCA的一大數學基礎:求矩陣的特徵值特徵向量
seq2seq模型中beam search的改進

TAG:世界盃WorldCup | 機器學習 | 足球 |