圓州率
🌐

Feature Image

IMBD 2024 競賽心得

資料科學, 心得, 合作作品
參加 2024 年全國智慧製造大數據分析競賽後的比賽心得: EDA、深度學習?機器學習?、Cross-Validation、Code Review。

前言

封面是 Bing 繪製的「全國智慧製造大數據分析競賽」。

比賽網址: https://imbd2024.thu.edu.tw/

基於保密原則,我不會提及資料的細節,就聊聊我在這場比賽學到的事情

這場比賽是資料建模競賽,也是我目前接觸過最大的資料,給了 50 份以上的 csv 檔,200 多萬個數字,而冠軍獎金 50 萬,這比賽的難度可想而知,就我理解是企業界提供他們遇到的真實問題,把資料匿名之後就交給我們處理了

比賽持續一個月,暑假後半段我幾乎把所有時間都投注下去,不只是想把結果做好,而是我也想挑戰看看自己的上限到哪

EDA

探索式資料分析 (Exploratory Data Analysis, EDA),透過各種可視化與簡易建模探索資料的特性,有助於協助決定模型與參數調整

在第一次在迴歸分析聽到這詞時並沒有感受到重要性,因為當時知識邊界僅有到線性模型,對模型選擇與參數調整沒有感覺,但直到越碰越多模型後逐漸感受到 EDA 重要性。曹振海教授說了一個很形象的比喻

如果你沒聽到音樂,會覺得跳舞的人都是瘋子

而某朋友也有加入,在根本不知道這資料的特性前,就開始往上砸各種模型,這就如同不聽音樂就開始跳舞一般的奇怪,現在如果問我建模的建議,一律就是「你做過 EDA 了嗎?先做過 EDA 再說」

深度學習?機器學習?

比賽初期就鎖定深度學習會是最大的勁敵,畢竟比賽的評分一部分是結果要好,另一部分是模型解釋。而要比結果準,深度學習能透過海量參數把結果搞出來,但最大問題就是模型解釋不動;我則是相反,結果不至於深度學習的精確,但能解釋模型的架構,每個參數的估計與效果都能解釋

後來聽到朋友的模型跑一次得 2 小時,忽然覺得我的模型真友善,大概 2 分鐘就能收工;那燃燒計算力所獲得的結果,真的比較好嗎?目前結果顯示沒有,他們的預測效果不盡理想

目前對模型的選擇建議,「如果資料是結構性資料,深度學習能不用就最好不用;但若資料是非結構性的,先試著 EDA 看看,如果真的沒有沒辦法找出結構,再考慮深度學習」

Cross-Validation

最簡化的版本就是把現有資料分群,例如 70% 用於訓練模型,30% 用於測試模型,以此測試模型對於未知資料的泛化能力如何,也能避免 overfitting

當初透過 EDA 大致預測了 test 的範圍,硬湊參數想辦法讓 test 的位置看似合理,但這不能保證模型的泛化能力,一做 cross validation 才發現模型預測力稀巴爛,又花了點時間修模型才讓模型堪用,並直接在報告內展示 cross validation 預測誤差,當初覺得展示誤差其實有點怪,但後來意識到知道模型缺點也很重要

求職面試一個重點,是否能客觀分析自己

甚至在結論上寫模型在那些情況下效果好、那些情況下不好、最壞的情況到哪,第一次寫的確難以下筆,然而寫完後回顧才意識到這才是必經的路「意識自己缺點」

Code Review

最近讀了《Software Ecosystems》提到到程式的回收率,以往做過的專案數量不少,但卻藏在茫茫 code 海中根本無從利用,《打造第二大腦》也提及利用現有資源總比從零開始輕鬆也快速。帶著這個心態比賽,每完成一段程式之後就做 code review,發現效率真的好高,即便是棄案也都有能萃取的資源

看了某朋友存檔案的格式是 week 1 一路到 week 18,雖然檔案是存下來了,但根本無從利用,可能短短一個月後再看,就根本不知道裏頭放了啥;所以建議,每過一段時間或完成一個專案之後,就試著萃取出裏頭的價值,能整合利用的就盡可能的發揮它的價值