本專案參與了由 T-Brain 主辦的「桌球智慧球拍資料的精準分析競賽」,目標為根據揮拍的感測器時間序列資料,預測選手的屬性(如性別、慣用手、程度等)。
⚠️ 注意:由於比賽資料僅供參賽者使用,且未明確授權公開分享,因此本專案僅說明資料處理流程、特徵工程與模型設計方法,並未附上原始資料或其衍生內容。
比賽資料為選手的揮拍動作時間序列,我們透過轉換技術萃取出能表徵揮拍型態的關鍵特徵:
- 傅立葉轉換 (FFT):可將訊號中的高頻雜訊濾除,僅保留主要頻率成分,亦可視為訊號平滑化的一種。對於揮拍軌跡而言,FFT 可抓出其主要節奏與重點動作。
- 小波轉換 (Wavelet):將原始訊號分解成多層級的子頻帶,並可定位不同時間點的局部特徵,適合處理非平穩訊號並進行多尺度分析。
由於某些目標類別比例懸殊,我們採用 ADASYN (Adaptive Synthetic Sampling) 技術進行資料平衡。
- 相較於傳統的 SMOTE,ADASYN 會根據難以學習的樣本產生較多的合成樣本,讓模型更關注於分類邊界模糊的區域。
- 在預測如性別、程度等非均衡問題時,ADASYN 幫助模型提升小樣本類別的辨識率,改善整體表現。
為避免高維時序特徵造成過擬合並提升模型效能,我們進行了非線性特徵選擇:
- XGBoost Importance:利用 XGBoost 訓練後的特徵重要性排序來篩選變數。
- Permutation Importance:透過隨機打亂單一特徵來觀察其對模型準確率的貢獻度,更能反映特徵的穩健性。
我們亦嘗試 Lasso 等傳統線性方法,但因無法捕捉非線性資料結構,效果不佳。考量到後續模型為非線性樹模型,非線性選變數方法更為合適。
本專案以 XGBoost 為主要模型,理由如下:
- 適用非線性資料結構:XGBoost 為樹模型,能自然捕捉變數間的非線性與交互作用。
- 高效率訓練:Python 中支援 GPU 加速與並行運算,訓練快速。
- 內建正則化:可有效抑制過擬合,提升泛化能力。
單一模型無法保證對所有樣本皆準確,因此我們引入 Voting 策略整合多個模型預測結果,進一步提升表現。
- 多數決原則:若多數模型預測為某類,則輸出該多數類別(如:在一個二元分類問題,3 個模型認為是A類,2 個模型為是B類,則認定該筆資料是A類)。
- 機率輸出:選擇投票該類別中「最確定者」的預測機率作為最終信心度。
- 平票處理:發生平票時,平均相關模型的機率輸出,提供穩定且保守的預測結果。
- 結合頻域轉換、非線性特徵選擇與集成學習技巧,能有效捕捉複雜資料結構。
- ADASYN 增強模型對於少數類別的辨識力,改善類別不平衡造成的偏差。
- XGBoost 提供穩健的預測表現與訓練效率,適合實務部署。
- Voting 機制進一步提升預測穩定性與泛化能力。
本專案最終在眾多隊伍中表現優異,於公開排行榜中名列前 5%,顯示我們的方法在處理高維時間序列資料與類別不平衡問題上具有良好的穩健性與泛化能力。
📄 👉 點此下載參賽證明 PDF