PTT推薦

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

看板basketballTW標題[閒聊] 嘗試以機器學習排出P+前三隊作者
chih2loveu
(辣助)
時間推噓59 推:59 噓:0 →:38

大家好
前陣子世界賽,看到很多人在討論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留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.64.12.30 (臺灣)
PTT 網址
※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/08/2022 05:07:09

wu7706070 07/08 05:14會不會有垃圾時間的問題?

可能 但就要看重播重新紀錄才行 就太累了xD

wayne5992 07/08 05:14有趣 推個

miniUU 07/08 05:14這數據是不是冠軍賽直接打臉,不然就是一人球隊無法

miniUU 07/08 05:14參考

miniUU 07/08 05:17第三隊三後衛,是不是該換掉一個?

P的規定是可以三前兩後或兩前三後~

BLABLA007 07/08 05:20原PO沒有考量到主力問題嗎? 基本上前三隊一定是該

BLABLA007 07/08 05:20隊主力阿

BLABLA007 07/08 05:21你名單出現非主力排擠主力 不覺得有問題嗎

因為目前沒有客觀數據可以確定誰是主力(比較接近的可能是USG%?這我有放) 也無法證明所謂主力在場上對球隊是好處 但你說的也很有道理,所以目前想到的是那就乾脆限制平均上場時間要多於24分鐘 符合的有31位下去做,最後得到的結果是: 第一隊->

辛巴

李家瑞

李愷諺

吳永盛

林書緯

第二隊->

湯瑪士

呂政儒

簡浩

高國豪

吳家駿

感覺結果比較合理一點,相似度也有上升

※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/08/2022 05:31:48

lcall 07/08 05:29李家瑞攻城獅第二?

deathfire 07/08 05:31感覺很多都跟直覺上的排名不一樣

deathfire 07/08 05:32如果用一樣的系統排NBA的不知道會怎樣

awheaton311 07/08 06:04機器學習的問題通常都是數據的問題

awheaton311 07/08 06:05數據很多 但要放那些資料才可以客觀評比都是學問

沒錯,這個問題困擾我好多個晚上QQ 看來還有很長一段路要走......

awheaton311 07/08 06:09官方提供的數據不足時 模型

awheaton311 07/08 06:09更難建立

awheaton311 07/08 06:09原PO滿有心的 推

cweilun 07/08 06:10辛特力完全沒上榜 扯

lucy2244 07/08 06:10Sample size感覺不太夠?就算PCA之後sample size是

lucy2244 07/08 06:10不是也不到parameters 的10倍?

對,而且常見增加sample的方法感覺好像都不太適用? 小弟才疏學淺,目前想不太到有什麼解決方法@@

a53189360 07/08 06:20有趣推個

shifa 07/08 06:58技術含量很高給推 XD

shifa大整理數據的想法也讓我受益匪淺!

※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/08/2022 07:05:44

sniperlin 07/08 07:07原PO加油 做到聯盟來找你就成功了

Wardyal 07/08 07:09有正規化和Data cleaning嗎 怎麼德威家瑞會在第一

Wardyal 07/08 07:09隊= =

都有! 德威就算了 家瑞一直名列前矛讓我這個家瑞黑好難受

※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/08/2022 07:13:19

sniperlin 07/08 07:14家瑞德威的共同點都是季中有一段時間沒有上場

MinatoFlash 07/08 07:42資料維度太高的話要不要試試看LBG vector quantiza

MinatoFlash 07/08 07:42tion 來壓縮一下?

lens82801 07/08 07:48P的官網數據真的少到可憐

lionjona 07/08 07:53之前大勝還被登記到領航猿

lionjona 07/08 07:54這數據確實有趣

njvm 07/08 07:55以前我是用類神經網路拓樸最佳群數

以這次資料來說可能不會有更好的結果 加上類神經現在是我的弱項,所以沒有使用 這部分之後會再去研究,感謝建議!

RCX 07/08 07:56看到第一隊有李德威、李家瑞就可以end 了

RCX 07/08 07:58猿隊陳冠全最高??? 李家慷 > 盧峻翔???

xpope 07/08 08:06有趣

MinatoFlash 07/08 08:07喔喔看錯了你已經降維了XD 那可能真的就是數據太少

MinatoFlash 07/08 08:07的問題 可以再抓一些進階數據來建模型應該會更準

lcall 07/08 08:17用效率值來算說不定最準?

MinatoFlash 07/08 08:26效率值的問題可能會更偏好一些會在垃圾時間刷分的

MinatoFlash 07/08 08:26人,而且會忽視掉很多防守貢獻,我覺得以on/off 值

MinatoFlash 07/08 08:26來做球隊內的比較應該特徵性會高點

其實一開始我只使用傳統數據和on/off相關下去做 只是結果沒有特別漂亮 這方面我再看看有沒有其他進階數據一起抓進來用

ssshleo 07/08 08:33很好的想法 原po加油

Kaiokevin 07/08 08:38

kobe50007 07/08 08:45台籃板難得的優文

skyword 07/08 08:55

Diomedes 07/08 09:05好有趣的文,雖然目前還不太準……XD

start928 07/08 09:07用autoencoder降維看看 結果有沒有比較好

start928 07/08 09:08另外也可以用DBscan試試看分群 多用看看不同方法吧

原本的想法是先用最常見的試試看 之後會再試試看各種不同方法,感謝建議!

start928 07/08 09:08推推!

lawenwen 07/08 09:16有趣給推

Derricklin2107/08 09:16有人看到跟自己的印象分數不一樣就開酸= =就說是純

Derricklin2107/08 09:16機器演算 有什麼毛病

沒事,其實我一開始也想說結果不好看所以猶豫要不要Po 但後來想說比起自己沒方向,不如丟上來看看大家想法~

duncan47 07/08 09:18有趣 期待之後的結果 推!

j861010 07/08 09:20純粹機器演算本來就有可能不準 看這份結果有人質疑

j861010 07/08 09:20也很正常

jasonhsu612 07/08 09:21國王隊為啥沒有楊敬敏,是不是少了啥

kill780215 07/08 09:26德威德威 耀武揚威

chien0923 07/08 09:37有趣推推

ohjesus 07/08 10:02覺得用心 推!

jo4gl4d93 07/08 10:09全世界頂級體育聯盟都在用數據分析了,還有人跟印象

jo4gl4d93 07/08 10:09分數不同就end或開酸

jo4gl4d93 07/08 10:10數字是不會錯的,所以為什麼會跟印象分數差很多就是

jo4gl4d93 07/08 10:10分析要做的事,是要修正模型還是數據量不夠等等等

jo4gl4d93 07/08 10:10什麼年代了,竟然還有人跟感覺不同就說數據沒用

cliff2102 07/08 10:15

boss8792252207/08 10:23推 有趣

lexus1029 07/08 10:24

lay10521 07/08 10:26推 數值是用per36嗎?

per36的問題是可能放大雜訊 所以目前主流的進階數據應該都比較少這麼做

NDlillard 07/08 10:32推Game Changer 台籃進階數據專業網站

Peter911 07/08 10:43推數據 p的model比較複雜 牽扯到洋將使用限制

你沒說我還真沒注意到這一點xD 看來真的還有很長的路要走~

AngelNo13 07/08 10:48推,以後誰再酸家瑞只會假動作不敢投的,就拿這篇

AngelNo13 07/08 10:48打臉

Joshuaian 07/08 10:48推,敲碗control分差過大時的數據再跑一次的結果

這種苦差事可能真的很閒才能做xD

johnbill 07/08 10:55推一個

johnbill 07/08 11:09原PO是全部下去跑吧 也許可先做Feature Selection?

有想過,但一時想不到一個好的方法做篩選 但目前應該會朝這方面去做功課,看看怎麼做 感謝建議!

joeytoast 07/08 11:17原來PCA也可以這樣玩xD

komexxx 07/08 11:40推用心分析 台籃真的回來了XD

komexxx 07/08 11:42會不會以後每一季都出一篇論文XD

有時間的話一定!

whenhowxyz1207/08 11:45優文必推

NXT0614 07/08 12:05推用心

breakfastboy07/08 12:05結果看起來跟大家印象不一樣 勝率是使用logistic re

breakfastboy07/08 12:05gression跑嗎

是用 Linear regression,我竟然忘了可以從迴歸下手 晚點會試試看,感謝建議!

milton93 07/08 12:18推一個,這好酷

SuikaJasper 07/08 12:32就算多跑幾次機器可能也會跟著你的數據客製化學習方

SuikaJasper 07/08 12:32式,不過這算是無解的資料問題了,機器學習其實沒法

SuikaJasper 07/08 12:32用太少的數據解決太複雜的問題

我相信這都會成為之後真正解決問題的養分!

HSPHHPM2HP 07/08 13:09推。不過多跑幾次不是大數法則,那是p-hacking,

HSPHHPM2HP 07/08 13:09一個當代的濫觴XD 個人比較不建議。

大數法則的確是開個玩笑xD 不過我這次是為了取加權平均(精確度太差) 應該不會有p-hacking的問題......嗎?

Celtic8879 07/08 13:19第一隊好弱

dream52312 07/08 13:33有趣

subarusti 07/08 13:33雖然看不太懂,但有其專業給推XD

deangood01 07/08 14:43DATA那麼少

frank901212 07/08 15:46

※ 編輯: chih2loveu (27.52.194.174 臺灣), 07/08/2022 18:22:58

tengod00 07/08 18:44

Rattlesnake 07/08 19:24記者投票是憑感覺 也不是看數據的

Rattlesnake 07/08 19:26這種套用只是好玩 實用上沒什麼意義

richard8850207/08 21:47爬資料這點稍微看了一下他的網頁,可以試試selenium

richard8850207/08 21:47加上pandas應該可以省去很多麻煩

好!感謝!馬上來去學QQ

※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/09/2022 00:15:30