看板 basketballTW 關於我們 聯絡資訊
大家好 前陣子世界賽,看到很多人在討論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
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 : 原PO沒有考量到主力問題嗎? 基本上前三隊一定是該07/08 05:20
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 : 如果用一樣的系統排NBA的不知道會怎樣 07/08 05:32
awheaton311 : 機器學習的問題通常都是數據的問題 07/08 06:04
awheaton311 : 數據很多 但要放那些資料才可以客觀評比都是學問 07/08 06:05
沒錯,這個問題困擾我好多個晚上QQ 看來還有很長一段路要走......
awheaton311 : 官方提供的數據不足時 模型 07/08 06:09
awheaton311 : 更難建立07/08 06:09
awheaton311 : 原PO滿有心的 推07/08 06:09
cweilun : 辛特力完全沒上榜 扯07/08 06:10
lucy2244 : Sample size感覺不太夠?就算PCA之後sample size是07/08 06:10
lucy2244 : 不是也不到parameters 的10倍?07/08 06:10
對,而且常見增加sample的方法感覺好像都不太適用? 小弟才疏學淺,目前想不太到有什麼解決方法@@
a53189360 : 有趣推個07/08 06:20
shifa : 技術含量很高給推 XD07/08 06:58
shifa大整理數據的想法也讓我受益匪淺! ※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/08/2022 07:05:44
sniperlin : 原PO加油 做到聯盟來找你就成功了07/08 07:07
Wardyal : 有正規化和Data cleaning嗎 怎麼德威家瑞會在第一07/08 07:09
Wardyal : 隊= =07/08 07:09
都有! 德威就算了 家瑞一直名列前矛讓我這個家瑞黑好難受 ※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/08/2022 07:13:19
sniperlin : 家瑞德威的共同點都是季中有一段時間沒有上場 07/08 07:14
MinatoFlash : 資料維度太高的話要不要試試看LBG vector quantiza 07/08 07:42
MinatoFlash : tion 來壓縮一下? 07/08 07:42
lens82801 : P的官網數據真的少到可憐 07/08 07:48
lionjona : 之前大勝還被登記到領航猿 07/08 07:53
lionjona : 這數據確實有趣07/08 07:54
njvm : 以前我是用類神經網路拓樸最佳群數07/08 07:55
以這次資料來說可能不會有更好的結果 加上類神經現在是我的弱項,所以沒有使用 這部分之後會再去研究,感謝建議!
RCX : 看到第一隊有李德威、李家瑞就可以end 了07/08 07:56
RCX : 猿隊陳冠全最高??? 李家慷 > 盧峻翔???07/08 07:58
xpope : 有趣 07/08 08:06
MinatoFlash : 喔喔看錯了你已經降維了XD 那可能真的就是數據太少 07/08 08:07
MinatoFlash : 的問題 可以再抓一些進階數據來建模型應該會更準07/08 08:07
lcall : 用效率值來算說不定最準?07/08 08:17
MinatoFlash : 效率值的問題可能會更偏好一些會在垃圾時間刷分的07/08 08:26
MinatoFlash : 人,而且會忽視掉很多防守貢獻,我覺得以on/off 值07/08 08:26
MinatoFlash : 來做球隊內的比較應該特徵性會高點 07/08 08:26
其實一開始我只使用傳統數據和on/off相關下去做 只是結果沒有特別漂亮 這方面我再看看有沒有其他進階數據一起抓進來用
ssshleo : 很好的想法 原po加油 07/08 08:33
Kaiokevin : 酷 07/08 08:38
kobe50007 : 台籃板難得的優文07/08 08:45
skyword : 推07/08 08:55
Diomedes : 好有趣的文,雖然目前還不太準……XD07/08 09:05
start928 : 用autoencoder降維看看 結果有沒有比較好07/08 09:07
start928 : 另外也可以用DBscan試試看分群 多用看看不同方法吧07/08 09:08
原本的想法是先用最常見的試試看 之後會再試試看各種不同方法,感謝建議!
start928 : 推推! 07/08 09:08
lawenwen : 有趣給推 07/08 09:16
Derricklin21: 有人看到跟自己的印象分數不一樣就開酸= =就說是純 07/08 09:16
Derricklin21: 機器演算 有什麼毛病 07/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 : 分數不同就end或開酸 07/08 10:09
jo4gl4d93 : 數字是不會錯的,所以為什麼會跟印象分數差很多就是 07/08 10:10
jo4gl4d93 : 分析要做的事,是要修正模型還是數據量不夠等等等07/08 10:10
jo4gl4d93 : 什麼年代了,竟然還有人跟感覺不同就說數據沒用07/08 10:10
cliff2102 : 推07/08 10:15
boss87922522: 推 有趣07/08 10:23
lexus1029 : 推07/08 10:24
lay10521 : 推 數值是用per36嗎?07/08 10:26
per36的問題是可能放大雜訊 所以目前主流的進階數據應該都比較少這麼做
NDlillard : 推Game Changer 台籃進階數據專業網站07/08 10:32
Peter911 : 推數據 p的model比較複雜 牽扯到洋將使用限制07/08 10:43
你沒說我還真沒注意到這一點xD 看來真的還有很長的路要走~
AngelNo13 : 推,以後誰再酸家瑞只會假動作不敢投的,就拿這篇07/08 10:48
AngelNo13 : 打臉07/08 10:48
Joshuaian : 推,敲碗control分差過大時的數據再跑一次的結果07/08 10:48
這種苦差事可能真的很閒才能做xD
johnbill : 推一個07/08 10:55
johnbill : 原PO是全部下去跑吧 也許可先做Feature Selection? 07/08 11:09
有想過,但一時想不到一個好的方法做篩選 但目前應該會朝這方面去做功課,看看怎麼做 感謝建議!
joeytoast : 原來PCA也可以這樣玩xD 07/08 11:17
komexxx : 推用心分析 台籃真的回來了XD 07/08 11:40
komexxx : 會不會以後每一季都出一篇論文XD 07/08 11:42
有時間的話一定!
whenhowxyz12: 優文必推07/08 11:45
NXT0614 : 推用心07/08 12:05
breakfastboy: 結果看起來跟大家印象不一樣 勝率是使用logistic re07/08 12:05
breakfastboy: gression跑嗎07/08 12:05
是用 Linear regression,我竟然忘了可以從迴歸下手 晚點會試試看,感謝建議!
milton93 : 推一個,這好酷07/08 12:18
SuikaJasper : 就算多跑幾次機器可能也會跟著你的數據客製化學習方 07/08 12:32
SuikaJasper : 式,不過這算是無解的資料問題了,機器學習其實沒法07/08 12:32
SuikaJasper : 用太少的數據解決太複雜的問題07/08 12:32
我相信這都會成為之後真正解決問題的養分!
HSPHHPM2HP : 推。不過多跑幾次不是大數法則,那是p-hacking,07/08 13:09
HSPHHPM2HP : 一個當代的濫觴XD 個人比較不建議。07/08 13:09
大數法則的確是開個玩笑xD 不過我這次是為了取加權平均(精確度太差) 應該不會有p-hacking的問題......嗎?
Celtic8879 : 第一隊好弱07/08 13:19
dream52312 : 有趣07/08 13:33
subarusti : 雖然看不太懂,但有其專業給推XD07/08 13:33
deangood01 : DATA那麼少07/08 14:43
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
richard88502: 爬資料這點稍微看了一下他的網頁,可以試試selenium07/08 21:47
richard88502: 加上pandas應該可以省去很多麻煩07/08 21:47
好!感謝!馬上來去學QQ ※ 編輯: chih2loveu (61.64.12.30 臺灣), 07/09/2022 00:15:30