機器學習如何在足球比賽數據分析中應用?
比如運動員佩戴感測設備,記錄足球運動員的 【坐標序列,速度,加速度,陀螺儀,心率】等一系列值,可以加上足球的坐標,如何利用這些數據做一些分析?
本題已加入圓桌 ? 數據挖掘應用,更多「數據挖掘」相關的話題歡迎關注討論
足球的還沒有實驗過,但是籃球領域已經有過類似的研究了:
下文已經發表在第四範式專欄中。
鐺鐺or唰唰,機器學習預測科比的投籃中不中?
Part 1
科比·布萊恩特,廣大的中國籃球迷對於這個名字應該非常熟悉,當然也各自懷抱著不同的感情。可是無論你是黑還是粉,有一點應該是被廣泛認可的:科比是21世紀以來,整個NBA聯盟里進攻方式最無解、得分技巧最全面的球員。他的每一次出手都伴隨著自信,令對手提心弔膽,即使可能在那之前他已經連丟了許多投籃。橫亘20年的職業生涯,他的比賽錄像被一遍遍地研究,人們希望能總結出一些規律,用以限制這個幾乎無所不能的男人。
那麼問題來了,我們可不可以結合經驗和已知的信息,用最科學的方式評估科比的某一次出手能夠命中籃筐的幾率呢?答案是肯定的,機器學習對於分析數據、理論預測最為在行。在大數據的思維下,即使面對體育比賽這樣瞬息萬變的場景,機器學習也可以發現其中的「蛛絲馬跡」。
問題起源於kaggle(一個數據科學社區)上的一次公開競賽,我們掌握的數據是科比20年NBA職業生涯中所有投籃出手(field goal attempts)的相關信息,包含以下這些條目:
除此之外,自然還存在一個label:shot_made_flag,即本次出手是否命中。所有三萬多條數據中的5000條選作測試集,其label值被隱去,最終的工作就是要在學習其餘數據的基礎上,預測這5000次出手命中的可能性。
在預測5000次出手命中的過程中,我們也發現了一些有意思的結果:
- 重要的單一特徵主要有 3 類,出手類型(細)、出手區域類型和出手距離。
- 預測科比是否能投中,最重要的是一個組合特徵是出手方式(細)和出手距離,特徵重要性 0.6099。出手方式和出手距離組合起來,我們能學習到在不同的出手距離時,科比不同的出手方式對最終是否命中有顯著的影響。
- 出手方式和賽季的組合特徵也非常有效,特徵重要性 0.6049,這兩者結合起來可能是大數據反映出科比在不同賽季拿手或常用的得分方式不同。
- 出手方式和對手球隊名被組合起來了,因為不同球隊的防守傳統不一樣,有些球隊專註於培養外線鐵閘,有些球隊熱衷內線巨獸;那麼面對不同的防守重心,科比選擇攻擊籃筐還是外線投射在成功率的差別也被挖掘出來了。
- 本節剩餘秒數、出手類型以及比賽地點經度(代表打球的場館)的三階特徵組合是很好的指標,特徵重要性 0.5556。
- 比賽編號也是一個重要特徵,這說明了科比的手感在比賽中有一定的持續性,有時候可夜晚非常准,例如對猛龍的比賽,而有的時候就會打鐵一整晚。
- 科比出手點的球場位置也有很強的預測性,但其中出手點的 x 坐標(球場寬邊的坐標)要比 y 坐標更重要(球場長邊的坐標)。
- 基於這些特徵,我們最終可以預測科比的投籃是否命中,以logloss為評估指標。目前kaggle最好的效果是 0.56529。
Part 2
好了,介紹完背景,準備好數據,接下來就該第四範式斥巨資開發的先知平台登場了。藉助於這個科學方便的機器學習平台,我們可以系統、直觀地完成這個機器學習課題。
要想讓計算機學會評估科比的投籃成功率,我們自然得提供已知的範例來「教會」它。有了前面列出來的這些信息,事情就好辦了。其實只有三個問題需要明確:
1.科比的投籃成功率和什麼有關?
每一個信息條目,就代表著科比此次出手的一項特徵(feature)。既然是特徵,那麼肯定與是否命中這一結果息息相關,例如:
- 比賽剩餘時間:影響著科比出手時的興奮和緊張程度
- 出手距離:直接決定瞄準難度
- 賽季:區分出年齡和傷病因素等等
仔細觀察某些特徵,還能發現不少有趣的東西。例如球隊名這一項就體現不出什麼價值,因為科比二十年都待在同一支球隊;對手這一變數更是饒有意味,舉個例子來說,熟悉科比的球迷應該都知道,他一打猛龍就來勁。
2.有哪些因素應該組合起來描述科比的投籃?
在很多時候,單一特徵不足以完整反映此次出手的某個性質,我們需要將若干特徵組合在一起使用,以更合理地幫助計算機訓練模型。
第四範式提供自動的特徵組合演算法——FeatureGo,簡單地使用「自動特徵組合」運算元,先知平台就可以開始他的表演。
有一組被組合起來的特徵是shot_zone_area(出手區域,包括左側、右側等)和shot_zone_basic(出手區域類型,包括中距離、外線、禁區等),這兩項特徵被組合起來的理由易於理解,同時確定了角度和距離才可以定位科比出手的位置,組合起來使用是科學的方式。
還有一組特徵,action_type(出手方式,包括跳投、上籃等)和opponent(對手球隊名)也被組合起來了。乍一看這是沒有什麼聯繫的一組,可是仔細一分析卻會有收穫:球隊各自的防守傳統不一樣,有些球隊專註於培養外線鐵閘,有些球隊熱衷內線巨獸;那麼面對不同的防守重心,科比選擇攻擊籃筐還是外線投射在成功率上的區別應該有所體現,因此,先知平台從數據層面發現了這一專家經驗,幫助我們更優地提取特徵。
3.哪些因素對科比投籃影響最大?
特徵種類很多,相關度自然有高有低。我們最關心的,當然是對結果影響力最強的那些特徵,先知平台可以很方便地幫我們尋找出來。
我們通過先知完成特徵抽取之後,可以連接「特徵重要性分析」運算元,通過計算後就可以得到各項特徵在機器學習過程中的重要性排序。
先知告訴我們,與科比投籃成功率關聯相對最大的一項特徵是action_type(出手方式,包括跳投、上籃等),原因可能在於不同的出手方式,其命中率差別本身就較大,例如科比的上籃(包括扣籃)的命中率肯定會高於其中距離跳投,而中投的成功率和三分相比又會略勝一籌。類似的,下面是其他一些重要的特徵:
- action_type,shot_distance(組合):出手方式和出手距離組合起來,我們能學習到在不同的出手距離時,科比不同的出手方式對最終是否命中有顯著的影響。
- action_type,season(組合):出手方式和賽季,這兩者結合起來可能是大數據反映出科比在不同賽季拿手或常用的得分方式不同。
- shot_zone_basic:出手區域的類型,包括禁區、中距離、外線等,這也是對命中率區分度較大的因素。
- shot_distance:出手距離,這項單一特徵的影響力不用解釋。
- combined_shot_type:粗分的出手方式,同樣對命中率產生影響。
- shot_zone_range:出手區域,包括左側、右側等,這可能反映出科比進攻選擇時在不同區域舒適度有高低。
有了對於特徵重要度的分析報告,我們在處理重要性很高的特徵項時就應該更加註意,謹慎考慮是否分桶、其泛化性如何等等關鍵問題。
Part 3
有了上述的分析,我們已經打好了堅實的基礎,當然,預測科比的投籃沒有這麼簡單,但是先知的「黑科技」也不遠止於此,我們一步一步來實現它。
首先,我們需要將整個數據上傳至先知平台,可以看到其中包含了科比職業生涯一共30697次出手的相關數據。
引入數據後,我們拖入「數據拆分」運算元,先將這三萬條數據拆成訓練集和測試集,對於訓練集中的兩萬五千條數據,簡單地按照9:1的比例隨機拆分成訓練數據和測試數據。
拆分數據完成之後,就是提取特徵的過程,這一過程針對不同變數有著不同的提取方式:有些離散值可以直接使用,有些連續變數則需要分桶;小數位保留太多泛化性不夠,就需要向下取整;單一變數不足以完整反映某項特性,就要多個組合起來……這些複雜、技巧性強的過程先知平台都可以輕鬆幫你搞定:拖入「特徵組合」運算元,設定好學習率和隨機調參次數之後,先知會為我們算出若干種特徵抽取和組合方式,由於 logloss 和 AUC 具有數學一致性,選擇其中AUC最高的一種來使用即可。
在完成特徵提取的工作之後,下一步就要應用學習演算法來生成一個預測模型了。數據經過特徵自動組合之後已經全部離散化,因此我們選擇邏輯回歸演算法來做訓練。同樣地,我們面臨調參這個讓人頭大的問題,別擔心,先知依然可以幫你快速搞定。我們使用「邏輯回歸自動調參」運算元,只需要設定調參次數、參數範圍這樣一些基本的指標,就可以達成反覆試驗以得到最佳參數的目的。
經過自動調參後,我們把最佳的參數填入邏輯回歸的參數表中,這樣輸出就將是一個訓練好的機器學習模型。下面就需要對其質量做一個檢驗,利用之前訓練集分出來的測試數據做模型預測。由於評估標準是logloss,在輸出後連接一個SQL運算元,計算預測結果的logloss值。
可以看見,logloss值還較小,測試通過。最後一步,我們需要把這個模型應用到label未知的測試集上,以得到最終的結果。出於模塊化的考慮,我們把這個模型導出,重新命名發布,那麼之後就可以直接使用這個訓練好的模型了。由於測試集中各數據的label為空,而先知平台目前暫時還不能對空集做特徵抽取,因此我們引入一個PySpark自定義腳本,把這個空值設為0。接著,我們使用與前面一致的特徵抽取方法對測試集特徵做處理,再套上先前的模型,就可以很方便地輸出結果了。
Part 4
至此,我們完成了利用機器學習評估科比單次投籃命中概率的全過程。整體看下來,先知平台完成一個機器學習項目所表現出的靈活性與方便性都非常突出。通過先知,我們可以省去很多繁瑣複雜的步驟,克服很多頗具難度的問題,不僅提高了效率,也降低了機器學習應用的門檻。
回到這個課題本身,讓我們來看看結果里的數據,概率高的那些情形,科比一定是最飄逸、最擅長的;概率低的那些情形,科比可能是最無助、最偏執的。這個留在無數少年青春里的男人,完成了那麼多壯舉,也背負了那麼多罵名,如今都過去了。封存在那一串串數字里的,有他的痛點,有我們的回憶,可更多的,是一種堅持。
明白了這些,或許你就能化身懂球帝,對著牆上張貼的海報說:
科比,我已經看穿了你。
如果你對我們感興趣,請在這裡申請先知平台:https://prophet.4paradigm.com
參考資料:Kobe Bryant Shot Selection
給球員分類。。
通過學習大量職業球員的數據,給小球員分類,選擇適合的位置。。。
簡單來講就是衝刺強的踢邊翼邊衛,傻大個踢中鋒中後衛,腦子活腳靈的踢中場。。
躺床上隨便YY的,不喜勿噴推薦閱讀:
※關於快發自由球的問題,這個進球是否有效?
※如何看待虎撲對知乎足球層面上的看法?
※你們覺得FM玩多久算是入門級了?
※孔卡為啥入選不了阿根廷國家隊?和其他阿根廷中場比差在哪?