[閒聊] 嘗試以機器學習排出P+前三隊
大家好
前陣子世界賽,看到很多人在討論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]最後附上各隊前六名:
勇士 -> 塞瑟夫 > 曾文鼎 > 林書緯 > 林志傑 > 曾祥鈞 > 張宗憲
國王 -> 李愷諺 > 簡祐哲 > 林仕軒 > 林力仁 > 陳俊男 > 楊興治
領航猿-> 陳冠全 > 林耀宗 > 李家慷 > 林 正 > 溫立煌 > 盧峻翔
攻城獅-> 辛 巴 > 李家瑞 > 朱雲豪 > 陳堅恩 > 高國豪 > 吳岱豪
夢想家->吉爾貝克> 李德威 > 楊盛硯 > 林俊吉 > 吳永盛 > 陳振傑
鋼鐵人-> 布 朗 > 王柏智 > 王律翔 > 班尼特 > 鄭德維 > 盧哲毅
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.64.12.30 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/basketballTW/M.1657227507.A.232.html
※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/08/2022 05:07:09
推
07/08 05:14,
1年前
, 1F
07/08 05:14, 1F
可能 但就要看重播重新紀錄才行 就太累了xD
推
07/08 05:14,
1年前
, 2F
07/08 05:14, 2F
→
07/08 05:14,
1年前
, 3F
07/08 05:14, 3F
→
07/08 05:14,
1年前
, 4F
07/08 05:14, 4F
→
07/08 05:17,
1年前
, 5F
07/08 05:17, 5F
P的規定是可以三前兩後或兩前三後~
→
07/08 05:20,
1年前
, 6F
07/08 05:20, 6F
→
07/08 05:20,
1年前
, 7F
07/08 05:20, 7F
→
07/08 05:21,
1年前
, 8F
07/08 05:21, 8F
因為目前沒有客觀數據可以確定誰是主力(比較接近的可能是USG%?這我有放)
也無法證明所謂主力在場上對球隊是好處
但你說的也很有道理,所以目前想到的是那就乾脆限制平均上場時間要多於24分鐘
符合的有31位下去做,最後得到的結果是:
第一隊->辛巴、李家瑞、李愷諺、吳永盛、林書緯
第二隊->湯瑪士、呂政儒、簡浩、高國豪、吳家駿
感覺結果比較合理一點,相似度也有上升
※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/08/2022 05:31:48
推
07/08 05:29,
1年前
, 9F
07/08 05:29, 9F
推
07/08 05:31,
1年前
, 10F
07/08 05:31, 10F
→
07/08 05:32,
1年前
, 11F
07/08 05:32, 11F
→
07/08 06:04,
1年前
, 12F
07/08 06:04, 12F
→
07/08 06:05,
1年前
, 13F
07/08 06:05, 13F
沒錯,這個問題困擾我好多個晚上QQ 看來還有很長一段路要走......
→
07/08 06:09,
1年前
, 14F
07/08 06:09, 14F
→
07/08 06:09,
1年前
, 15F
07/08 06:09, 15F
→
07/08 06:09,
1年前
, 16F
07/08 06:09, 16F
推
07/08 06:10,
1年前
, 17F
07/08 06:10, 17F
推
07/08 06:10,
1年前
, 18F
07/08 06:10, 18F
→
07/08 06:10,
1年前
, 19F
07/08 06:10, 19F
對,而且常見增加sample的方法感覺好像都不太適用?
小弟才疏學淺,目前想不太到有什麼解決方法@@
推
07/08 06:20,
1年前
, 20F
07/08 06:20, 20F
推
07/08 06:58,
1年前
, 21F
07/08 06:58, 21F
shifa大整理數據的想法也讓我受益匪淺!
※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/08/2022 07:05:44
推
07/08 07:07,
1年前
, 22F
07/08 07:07, 22F
推
07/08 07:09,
1年前
, 23F
07/08 07:09, 23F
→
07/08 07:09,
1年前
, 24F
07/08 07:09, 24F
都有!
德威就算了 家瑞一直名列前矛讓我這個家瑞黑好難受
※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/08/2022 07:13:19
推
07/08 07:14,
1年前
, 25F
07/08 07:14, 25F
推
07/08 07:42,
1年前
, 26F
07/08 07:42, 26F
→
07/08 07:42,
1年前
, 27F
07/08 07:42, 27F
推
07/08 07:48,
1年前
, 28F
07/08 07:48, 28F
推
07/08 07:53,
1年前
, 29F
07/08 07:53, 29F
→
07/08 07:54,
1年前
, 30F
07/08 07:54, 30F
推
07/08 07:55,
1年前
, 31F
07/08 07:55, 31F
以這次資料來說可能不會有更好的結果
加上類神經現在是我的弱項,所以沒有使用
這部分之後會再去研究,感謝建議!
還有 36 則推文
還有 3 段內文
per36的問題是可能放大雜訊
所以目前主流的進階數據應該都比較少這麼做
推
07/08 10:32,
1年前
, 68F
07/08 10:32, 68F
推
07/08 10:43,
1年前
, 69F
07/08 10:43, 69F
你沒說我還真沒注意到這一點xD
看來真的還有很長的路要走~
推
07/08 10:48,
1年前
, 70F
07/08 10:48, 70F
→
07/08 10:48,
1年前
, 71F
07/08 10:48, 71F
推
07/08 10:48,
1年前
, 72F
07/08 10:48, 72F
這種苦差事可能真的很閒才能做xD
推
07/08 10:55,
1年前
, 73F
07/08 10:55, 73F
推
07/08 11:09,
1年前
, 74F
07/08 11:09, 74F
有想過,但一時想不到一個好的方法做篩選
但目前應該會朝這方面去做功課,看看怎麼做
感謝建議!
推
07/08 11:17,
1年前
, 75F
07/08 11:17, 75F
推
07/08 11:40,
1年前
, 76F
07/08 11:40, 76F
推
07/08 11:42,
1年前
, 77F
07/08 11:42, 77F
有時間的話一定!
推
07/08 11:45,
1年前
, 78F
07/08 11:45, 78F
推
07/08 12:05,
1年前
, 79F
07/08 12:05, 79F
推
07/08 12:05,
1年前
, 80F
07/08 12:05, 80F
→
07/08 12:05,
1年前
, 81F
07/08 12:05, 81F
是用 Linear regression,我竟然忘了可以從迴歸下手
晚點會試試看,感謝建議!
推
07/08 12:18,
1年前
, 82F
07/08 12:18, 82F
→
07/08 12:32,
1年前
, 83F
07/08 12:32, 83F
→
07/08 12:32,
1年前
, 84F
07/08 12:32, 84F
→
07/08 12:32,
1年前
, 85F
07/08 12:32, 85F
我相信這都會成為之後真正解決問題的養分!
推
07/08 13:09,
1年前
, 86F
07/08 13:09, 86F
→
07/08 13:09,
1年前
, 87F
07/08 13:09, 87F
大數法則的確是開個玩笑xD
不過我這次是為了取加權平均(精確度太差)
應該不會有p-hacking的問題......嗎?
推
07/08 13:19,
1年前
, 88F
07/08 13:19, 88F
推
07/08 13:33,
1年前
, 89F
07/08 13:33, 89F
推
07/08 13:33,
1年前
, 90F
07/08 13:33, 90F
推
07/08 14:43,
1年前
, 91F
07/08 14:43, 91F
推
07/08 15:46,
1年前
, 92F
07/08 15:46, 92F
※ 編輯: chih2loveu (27.52.194.174 臺灣), 07/08/2022 18:22:58
推
07/08 18:44,
1年前
, 93F
07/08 18:44, 93F
→
07/08 19:24,
1年前
, 94F
07/08 19:24, 94F
→
07/08 19:26,
1年前
, 95F
07/08 19:26, 95F
推
07/08 21:47,
1年前
, 96F
07/08 21:47, 96F
→
07/08 21:47,
1年前
, 97F
07/08 21:47, 97F
好!感謝!馬上來去學QQ
※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/09/2022 00:15:30
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
閒聊
59
97