[閒聊] 嘗試以機器學習排出P+前三隊

作者: chih2loveu (智智愛你)   2022-07-08 04:58:23
大家好
前陣子世界賽,看到很多人在討論P+前兩隊的選人標準
突然想到我曾經做過類似的專題(感興趣的人可以A我文章看,但很簡略xD)
因此決定再做一次,看看是不是與媒體投票的結果有所差異~
先打預防針,這是機器學習的結果,基本上就是個黑盒子,所以大家看看就好,別太認真!
-
懶人包:
以 PCA+t-SNE 對資料降維,並以 K-Means 對球員分群^[1]
再考慮各群對球隊勝率的幫助及各自的上場時間,得出結論(有根據P+規則)
第一隊-> 吉爾貝克、李德威、李家瑞、陳堅恩、李愷諺
第二隊-> 辛巴、朱雲豪、曾文鼎、楊盛硯(?)、簡祐哲
第三隊-> 塞瑟夫、林志傑、林書緯、林俊吉、高國豪
(參考板友意見後,在推文有另一個版本)
-
正文:
首先機器學習最重要的就是資料,分成傳統數據和進階數據
傳統數據部分來自P+網站,進階數據部分則來自Game Changer網站^[2]
範圍是本季例行賽,出賽多於十場、平均上場多於六分鐘、總上場時間多於一百分鐘
在這裡先吐槽一下,P+可不可以趕快完善數據這一塊,不懂到底難在哪......
都有一個NBA stat給你抄了,到現在還是只有傳統數據@@
但現在的資料維度(95個)太高,直接跑的結果不會好,因此需要先設法降低
這邊用的是比較常見的 PCA 和 t-SNE
PCA 的中文叫做「主成分分析」,原理簡單來說是透過軸的旋轉
找到新的變數(即主成分),這個變數可以同時保留很多維度的訊息,從而達到降維目的
可以想像在二維平面上,假設資料點都是(1,1)、(2,2)、(3,3)......
那麼比起用x、y軸記錄這些點,不如將座標軸旋轉45度,那就是只用一個軸達到同樣效果
但 PCA 完後仍有3X個維度,因此再引入另一種方法再度降維
t-SNE 我不太確定正式的中文譯名,直接翻的話叫「t分布隨機鄰近插入」
假設我們想要將一個圓上均勻的點投射在一條線上,勢必有重疊但其實距離很遠的點
那要如何讓這些點在線上可以分別?答案比想像中粗暴:先量原本的距離
量完後根據距離丟到t分布上,並賦予這些點一個條件機率
使這些點有更高的機會在投射後被分到原本距離近的點附近(抱歉真的很難解釋^[3])
維度順利降到二維後,就可以開始對球員進行分群了,在這裡順便解釋一下原因
在現行所有評估球員的方法中,最難的點就是怎麼降低場上其他人的影響?
這就回到我的目的,也就是選出前三隊
對我來說,前三隊代表這些人上場就是贏球保證
因此我藉由觀察其他表現差不多的球員,去看說是不是其他人上場越多,球隊勝率越高?
當然這個想法有很多瑕疵,但現行公開的數據來看,我認為可能沒有更好的選項
分群的方法應該就不用介紹了,就是將距離近的點抓在一起,而這裡我將球員分10群^[4]
接著計算各群在各隊的上場時間,加上各隊勝率跑個迴歸,便得到各群平均對勝率的影響
值得注意的是各群之間各球員的相似度落在0.375至0.4左右
因此如果直接用上面得到的結果,會造成精確度的影響很大,那要怎麼解決呢?
其實統計很常見的做法就是:一次不行,那就多跑幾次,相信大數法則xD
所以我重複上述步驟100次,並將每次得到的勝率乘上同群相似度和總上場時間
最後得到的結果便是我用來決定前三隊的指標!(結果如懶人包所示)^[5]
-
心得:
1.以這項指標來看,MVP德威、最佳洋將大B、最佳新人小烈
而敏哥和又瑋在這項指標中都不算太好
2.國王和領航猿的洋將在隊內排名都不高(湯瑪士隊內第9,里喬羅三人則幾乎墊底)
可能是國王的體系讓本土球員可以更好的發揮優勢?
3.結果看起來對中鋒評價都比較高,可能是採用的數據問題,也可能在台灣中鋒真的很好用
這一點等之後有更多數據後再作觀察
4.FMVP辛特力在隊內排名倒數第二,真正的季賽養生季後殺生代表?
5.這項指標為負值的人有->
張耕淯、聶歐瑪、李盈鋒、里金斯、林宜輝、錢肯尼
而領航猿和鋼鐵人大多都為負值,可能勝率太低所致,也可能體系有很大的問題
6.另外有一項指標是看各球員被分到的群,在全部裡面排名第幾
我原本想當作觀察有誰應該得到更多上場時間的指標,但容毅燊名列前矛讓我有點懷疑
7.以結果來看,應該模型表現沒有很好,未來再找找看有沒有衡量的指標做為參考
也歡迎對數據有興趣的板友們一起討論、集思廣益!
-
附註:
[1]這個過程參考自UCLA的一篇論文:https://tinyurl.com/544k9dkf
[2]https://tinyurl.com/2e6y5qfr
其中除了各區域命中率以外皆有使用
順便問一下有沒有高人可以指點如何爬這種網站?慢慢複製好累......
[3]有興趣的板友推薦看https://tinyurl.com/4vhbkww3
非常淺顯易懂!
[4]群數的決定辦法是土法煉鋼,從分2群到分10群,各跑1000次看結果哪個最好
[5]最後附上各隊前六名:
勇士 -> 塞瑟夫 > 曾文鼎 > 林書緯 > 林志傑 > 曾祥鈞 > 張宗憲
國王 -> 李愷諺 > 簡祐哲 > 林仕軒 > 林力仁 > 陳俊男 > 楊興治
領航猿-> 陳冠全 > 林耀宗 > 李家慷 > 林 正 > 溫立煌 > 盧峻翔
攻城獅-> 辛 巴 > 李家瑞 > 朱雲豪 > 陳堅恩 > 高國豪 > 吳岱豪
夢想家->吉爾貝克> 李德威 > 楊盛硯 > 林俊吉 > 吳永盛 > 陳振傑
鋼鐵人-> 布 朗 > 王柏智 > 王律翔 > 班尼特 > 鄭德維 > 盧哲毅
作者: Derricklin21 (Wannahoop)   2022-07-08 09:16:00
有人看到跟自己的印象分數不一樣就開酸= =就說是純機器演算 有什麼毛病
作者: boss87922522 (徐小樂)   2022-07-08 10:23:00
推 有趣
作者: whenhowxyz12 (whenhowxyz123)   2022-07-08 11:45:00
優文必推
作者: breakfastboy (早餐人)   2022-07-08 12:05:00
結果看起來跟大家印象不一樣 勝率是使用logistic regression跑嗎
作者: richard88502 (RichardChi)   2022-07-08 21:47:00
爬資料這點稍微看了一下他的網頁,可以試試selenium加上pandas應該可以省去很多麻煩

Links booklink

Contact Us: admin [ a t ] ucptt.com