我們使用各種不同的機器學習模型去訓練其判斷擊球方為哪位選手,並將影片上方的選手視為選手A,下方的選手視為選手B。資料筆數為所有影片中的擊球幀共有3269筆資料。變數除了先前透過不同偵測方式所獲取的羽球軌跡(X、Y座標)、人物節點(兩個人、XYZ座標、25個節點)及場地(8個交點的X、Y座標)外,還加上了球與手的距離(羽球和兩位球員的直徑距離),一共有170個變數。而資料中的Y則是需要預測的擊球方。我們將整筆資料拆分成訓練集70%、測試集30%,來進行後續的模型訓練。而我們在訓練中一共採用了XGBoost、SVM(支援向量機)、Perceptron(感知器) 、Decision Tree(決策樹)、Logistic Regression(邏輯斯回歸)、Random Decision Forests(隨機森林),這6種模型進行預測,並使用多數決來決定最終的擊球選手。

下表是6種模型的訓練集&測試集準確率。

分類器 訓練集準確率 測試集準確率
XGBoost 90.12% 88.58%
SVM(支援向量機) 96.51% 95.31%
Perceptron(感知器) 88.02% 89.09%
Decision Tree(決策樹) 89.72% 88.58%
Logistic Regression(邏輯斯回歸) 95.32% 95.41%
Random Decision(隨機森林) 88.46% 87.36%

  我們使用多數決來決定該球的打擊者,將選手A當作0,選手B當作1。
在決定打擊者時會有兩種狀況。

狀況1:
  當6種模型的預測結果有3種以上(不包含3)將其判定為0或是1,而該局的打擊者就會是多的那一方。

狀況2:
  當6種模型的預測結果為3:3,各占一半,便使用計算的方式,來決定打擊者,先將所有的模型測試準確率加總除以2,以此數值作為分隔線。
並將1(選手B)的三種準確率加總,若其加總的數值大於分隔線,便判定本球的打擊者為1(選手B)。反之,若該數值加總小於分隔線,則本球的打擊者就會是0(選手A)。

舉例來說,XGBoost、SVM、Perceptron均預測為1,其餘均預測為0。
我們便將3種預測為1的準確率相加,加總的數值為272.98,而全部的準確率加總除以2為272.165,因預測為1的值大於分隔線值,於是該球的打擊者判定為1(選手B)。