← Back to list

✏️【機器學習–交叉驗證與超參數調整】NCCU BAC 4.0 社課筆記

本堂社課再次邀請到「資料科學家的工作日常」的張維元老師,帶領大家延續前兩堂機器學習入門與常見模型介紹的基礎,進一步理解我們要如何判斷模型是否真的有效?

BAC NCCU · 2026-05-26 12:32 · 0 claps · 14.1 min read
Open on Medium ↗

✏️【機器學習–交叉驗證與超參數調整】NCCU BAC 4.0 社課筆記

本堂社課再次邀請到「資料科學家的工作日常」的張維元老師,帶領大家延續前兩堂機器學習入門與常見模型介紹的基礎,進一步理解我們要如何判斷模型是否真的有效?

前一堂課中,我們認識了 Logistic Regression、KNN、Decision Tree、Naive Bayes、SVM 等常見監督式學習模型,也學到在 scikit-learn 中,許多模型都可以透過類似流程操作:初始化模型、訓練模型、預測資料、評估分數。

而這一堂課則進一步把重點放在「模型評估」與「模型觀察」上。課程介紹了進階模型概念,例如集成式學習、隨機森林、模型參數與超參數,並討論如何用 MAE、MSE、Precision、Recall 等指標評估模型表現。最後,課程也帶大家理解過適應、正則化與交叉驗證,幫助我們建立更完整的機器學習實作思維。

本次社課目標

🎯 認識模型訓練與模型評估的基本流程

🎯 了解集成式學習與隨機森林的概念

🎯 區分模型參數與超參數

🎯 認識 Grid Search 與模型調參的基本想法

🎯 理解 SHAP 與特徵重要性的概念

🎯 學習回歸模型與分類模型的評估方式

🎯 認識 MAE、MSE、Precision、Recall 等指標

🎯 理解過適應、正則化與交叉驗證

🎯 建立「模型不只要準,還要能泛化」的思考方式

一、從基礎模型到進階模型:一個模型不夠,就讓多個模型合作

前一堂課介紹了許多常見的監督式學習模型,例如:Linear Regression、Logistic Regression、KNN、Decision Tree、SVM、Deep Learning等,這堂課則進一步提到進階版本的模型,包括:

🤖 集成式學習 Ensemble Learning

🤖 增強式學習 Reinforcement Learning

🤖 深度學習 Deep Learning

其中,集成式學習的核心想法可以被理解為「一個模型做得不夠好,就讓多個模型一起解決問題。」單一模型可能會有偏誤,也可能只看到資料的某一部分特徵,但如果我們把多個模型的結果整合起來,就有機會得到更穩定的預測結果 😉

課程中也用「瞎子摸象」來比喻集成式學習。每個模型可能只摸到資料的一部分,但如果能把多個模型的觀察整合起來,就比較有機會接近整體真相。

而要怎麼結合多個小模型是集成式學習的關鍵問題。

不同的集成方法會有不同的整合方式,例如投票、平均、加權、逐步修正錯誤等。而 Random Forest,就是一個常見的集成式學習模型。

二、隨機森林 Random Forest

Random Forest,中文常翻成隨機森林,是一種建立在 Decision Tree 基礎上的集成式學習模型。

如果 Decision Tree 是一棵樹,那 Random Forest 就是一整片森林 🌳

單一決策樹的優點是直覺、好解釋,但它也有一個很明顯的缺點:容易過度擬合。也就是說,如果樹長得太深,它可能會把訓練資料記得太清楚,導致對新資料的預測能力下降。

💡 Random Forest 的想法是:不要只依賴一棵樹,而是建立很多棵不同的決策樹,最後再整合它們的結果!

在分類問題中,可以想像每棵樹都投一票,最後由多數決決定分類結果。

例如:要預測某位顧客是否會購買遊戲

🙆🏻 第一、三、四棵樹預測會

🙅🏻 第二、五棵樹預測不會

➡️ 如果多數樹都預測「會」,Random Forest 最後就可能判斷這位顧客會購買遊戲。

Random Forest 的優點包括:

✅ 通常比單一決策樹穩定

✅ 能降低過度擬合風險

✅ 可以處理非線性關係

✅ 在許多實務資料中表現不錯

✅ 可以觀察特徵重要性

但它也有缺點:

❌ 比單一決策樹不容易解釋

❌ 模型較複雜

❌ 訓練與預測成本較高

❌ 如果資料品質不好,集成模型也不一定能解決問題

因此,Random Forest 的重點不只是「很多棵樹」,而是透過多個模型互相補足,讓整體預測結果更穩定 👍🏻

三、模型參數與超參數:模型自己學到的,和我們事先設定的

課程中也介紹了模型參數 Model Parameters 與超參數 Hyperparameters 的差異。

📍 模型參數是模型在訓練過程中,從資料中自己學到的內容

例如:

  • Linear Regression 的係數
  • Logistic Regression 的權重
  • 模型中的截距
  • 神經網路中的權重

這些參數會隨著資料訓練而改變,是模型用來描述資料規律的內部結構。

📍 超參數則是在模型訓練前,由使用者或研究者事先設定的值

例如:

  • 學習率 learning rate
  • 正則化強度
  • 決策樹最大深度
  • Random Forest 中樹的數量
  • SVM 的 kernel 類型
  • KNN 中的 K 值
  • 神經網路的 batch size

超參數不會直接由模型自動從資料中學到,而是需要透過實驗、比較與調整來找到比較好的設定

可以簡單整理成:

💁🏻 模型參數:模型從資料中學到的

💁🏻 超參數:模型開始訓練前,我們先設定好的

這也說明了為什麼同一個模型在不同設定下,可能會有完全不同的表現。模型好不好,不只取決於模型種類,也取決於超參數是否適合資料與任務 🧐

四、Grid Search:用系統化方式尋找好的超參數

既然超參數會影響模型表現,那我們要怎麼找到比較好的超參數?

一種常見方法是 Grid Search 🙌🏻

💡 Grid Search 的想法是:先列出想測試的超參數組合,然後讓模型一組一組試,最後比較哪一組表現最好。

例如:在 Random Forest 中,我們可能想測試

  • 樹的數量:100、300、500
  • 最大深度:3、5、10
  • 每次分裂需要的最小樣本數:2、5、10

Grid Search 會把這些選項排列組合,逐一訓練模型,並比較不同設定下的模型表現。

它的優點是:

✅ 方法直覺

✅ 可以系統化比較不同設定

✅ 適合初學者理解模型調參

但缺點是:

❌ 組合太多時會非常耗時

❌ 不一定能找到真正最佳解

❌ 搜尋範圍需要人為設定

❌ 如果評估方式不合理,找到的參數也不一定真正好用

因此,Grid Search 的重點不是盲目把所有參數都丟進去測,而是要根據模型特性與問題需求,設計合理的搜尋範圍 🔍

五、如何判斷欄位重要性?

除了預測結果之外,資料科學專案中常常還會想知道:模型為什麼這樣預測?也就是說,我們不只關心模型的準確率,也關心哪些欄位對模型判斷最重要 🔍

課程中提到幾種判斷欄位重要性的方式:

  • 特徵重要性分數
  • 相關性分析
  • 特徵選擇技術
  • 主成分分析 PCA
  • SHAP

其中,SHAP 是一種常見的模型解釋方法,核心概念來自合作賽局理論中的 Shapley value

可以把模型中的每個特徵想像成一個玩家,而模型的預測結果就是這些玩家合作後產生的成果。SHAP 會估計每個特徵對某次預測結果的貢獻,幫助我們理解模型為什麼做出這個判斷。

例如:在顧客購買預測中,模型可能判斷某位使用者很可能購買精品。SHAP 可以幫助我們觀察

🧐 是年齡提高了購買精品的機率?

🧐 是月收入提高了購買精品的機率?

🧐 是性別或其他消費行為影響了模型判斷?

🧐 哪些欄位讓模型更傾向預測「會購買」?

🧐 哪些欄位讓模型更傾向預測「不會購買」?

這對實務應用很重要。因為很多時候,我們不只要模型告訴我們答案,也要知道模型的判斷依據,才能把結果轉化成商業策略或決策建議 💁🏻

六、回歸模型怎麼評估?用誤差衡量模型表現

接著課程進入模型評估。

不同任務需要不同評估方式。回歸模型與分類模型的評估邏輯並不一樣 🙅🏻

🎯 回歸模型的目標是預測連續數值,例如:房價、銷售額、溫度、成績、需求量、顧客消費金額

因為預測結果是數值,所以我們可以計算「預測值」與「真實值」之間的誤差。

常見的回歸模型評估指標包括:

📍 MAE:Mean Absolute Error,平均絕對誤差

💡 MAE 的概念是:把每筆資料的預測誤差取絕對值後平均

如果模型預測某商品需求量是 120,但實際需求量是 100,誤差就是 20。MAE 會直接計算這些誤差的平均大小。

📍 MSE:Mean Squared Error,平均平方誤差

💡 MSE 的概念是:把每筆資料的誤差平方後平均

如果誤差是 20,平方後就是 400。也因為平方的關係,MSE 會讓大的錯誤被放大。

🧠 MAE 和 MSE 的差異可以簡單理解為:

👉🏻 MAE 比較直覺,單位也和原本資料相同

👉🏻 MSE 會更重視大誤差,對離群錯誤比較敏感

所以如果我們希望模型不要出現太大的錯誤MSE 會是常用選擇。但如果我們希望評估結果更容易解釋MAE 可能更直覺。

七、分類模型怎麼評估?Accuracy 不一定夠用

🎯 分類模型的目標是預測類別,例如:是否購買、是否流失、是否違約、是否為垃圾信、是否有病、屬於 A 類還是 B 類

很多人第一次接觸分類模型時,會直覺使用 Accuracy,也就是準確率。

💡 Accuracy 的概念是:模型預測正確的筆數 / 全部資料筆數,例如 100 筆資料中,模型預測對 90 筆,那 Accuracy 就是 90%。但 Accuracy 不一定永遠是好的評估方式,因為原因是不同錯誤的成本可能不同。

例如:在醫療檢測中,模型要判斷一個人是否有病。如果實際上有病,但模型預測沒有病,這是 FN(False Negative)這種錯誤可能非常嚴重,因為病人可能因此錯過治療。

相反地,如果實際上沒有病,但模型預測有病,這是 FP(False Positive)雖然也會造成焦慮或額外檢查成本,但在某些醫療情境下,可能比漏診更能接受。

因此,在醫療檢測中,我們可能會更重視降低 FN

但在垃圾信分類中,情況可能不同。如果實際上是垃圾信,但模型預測不是垃圾信,這是 FN。結果只是垃圾信跑進收件匣,雖然麻煩,但不一定最嚴重。如果實際上不是垃圾信,但模型預測是垃圾信,這是 FP。這可能導致重要信件被丟進垃圾信匣,造成更嚴重後果。

因此,在垃圾信分類中,我們可能會更重視降低 FP。

因此分辨模型好壞時,除了準確率之外,也需要考慮錯誤類型與問題情境 🤔

八、FP 與 FN:分類錯誤也有不同成本

在分類問題中,常見錯誤包括 FP 與 FN。

👉🏻 FP 是 False Positive實際上不是,但模型預測是

👉🏻 FN 是 False Negative實際上是,但模型預測不是

用疾病檢測來說:

🧑🏻‍⚕️ FP:實際上沒有病,但模型預測有病

🧑🏻‍⚕️ FN:實際上有病,但模型預測沒有病

用垃圾信分類來說:

📧 FP:實際上不是垃圾信,但模型預測是垃圾信

📧 FN:實際上是垃圾信,但模型預測不是垃圾信

這兩種錯誤在不同情境下的重要性不同。

如果是疾病篩檢,漏掉真正有病的人可能很嚴重,因此 FN 可能更關鍵;如果是垃圾信分類,把重要信件誤判為垃圾信可能很嚴重,因此 FP 可能更關鍵。所以評估分類模型時,需要依照情境討論模型錯在哪裡?哪一種錯誤比較不能接受 🧐

這也是 Precision 與 Recall 重要的原因。

九、Precision 與 Recall:模型挑得準,還是挑得完整?

課程中用「從一堆蘋果當中挑選出好蘋果」來解釋 Precision 與 Recall。

💡 Precision 可以理解成,模型挑出來的好蘋果中,有多少真的好?

也就是說,Precision 衡量的是「模型選出來的東西準不準」

如果模型挑出 10 顆好蘋果,其中 8 顆真的好,那 Precision 就是 80%。

💡 Recall 則可以理解成所有真正的好蘋果中,有多少被模型挑出來?

也就是說,Recall 衡量的是「模型有沒有把該找到的東西找齊」

如果總共有 20 顆好蘋果,但模型只挑出其中 8 顆,那 Recall 就是 40%。

兩者的差異可以整理成:

👉🏻 Precision:重視挑出來的是不是正確

👉🏻 Recall:重視真正重要的東西有沒有被找出來

在不同情境下,我們會重視不同指標。

例如,如果是推薦高價商品給顧客,我們可能希望推薦名單很精準,不要亂推,這時 Precision 可能比較重要;但如果是疾病篩檢,我們可能希望盡量找出所有可能有病的人,避免漏掉高風險個案,這時 Recall 可能比較重要。

因此,Precision 和 Recall 不是誰比較高就一定比較好,而是要回到問題情境來判斷 🤔

十、模型越複雜,真的越好嗎?

直覺上,模型越複雜,越能貼合訓練資料。例如:原本只用一條直線描述資料,但如果模型變得更複雜,它可以彎來彎去,把更多資料點都擬合得很準 。在訓練資料上,這通常會讓錯誤率降低 👏🏻

但問題是,機器學習的目的不是把「現有資料」背起來,而是要用現有資料預測「未來資料」。

如果模型太貼近訓練資料,就可能把訓練資料中的雜訊也一起學進去。這時模型在訓練資料上表現很好,但遇到新資料時反而表現變差

➡️ 這種情況就叫做過適應 Overfitting

十ㄧ、過適應 Overfitting:模型太貼近訓練資料

過適應是機器學習中非常常見的問題。

課程中整理過適應的原因包括:

👀 模型太過複雜

👀 訓練資料太單一

當模型太複雜時,它可能不只是學到資料背後真正的規律,也學到了訓練資料中的雜訊。

例如:一個模型在訓練資料上準確率高達 99%,但在測試資料上只有 60%,這就可能代表模型過度依賴訓練資料,缺乏泛化能力。

⭐️ 泛化能力指的是「模型能否把從訓練資料中學到的規律,應用到新的、沒看過的資料上。」

機器學習真正追求的不是訓練資料上的完美,而是在未知資料上仍然穩定。因此,模型評估不能只看訓練分數,也要看測試資料或驗證資料上的表現 ☝🏻

十二、正則化 Regularization:限制模型不要太複雜

針對模型太複雜造成的過適應,一種常見解法是正則化 Regularization

💡 正則化透過限制模型的複雜度,讓模型不要太貼近訓練資料

可以把它想像成幫模型加上一些約束,讓模型不要為了追求訓練資料上的完美,而變得過度彎曲、過度敏感或過度複雜。它讓模型比較不容易受到單一資料點或雜訊影響,也比較有機會在新資料上表現穩定。

不過,正則化也不是越強越好。如果限制太強,模型可能會變得太簡單,導致無法學到資料中的真正規律,這又會變成欠擬合 Underfitting

因此,正則化的重點是取得平衡:

⚖️ 模型太複雜,容易過適應

⚖️ 模型太簡單,容易欠擬合

➡️ 好的模型要在兩者之間找到適當平衡

十三、Training、Validation、Testing:不要只用一份資料看模型

除了正則化之外,另一個避免過適應的重要方法,是把資料切成不同用途

常見切法包括:

✂️ Training Data:訓練資料,用來讓模型學習

✂️ Validation Data:驗證資料,用來調整模型與比較不同設定,例如選擇超參數。

✂️ Testing Data:測試資料,用來做最後評估,檢查模型在真正沒看過的資料上表現如何。

如果我們只用同一份資料訓練模型,又用同一份資料評估模型,就很容易高估模型表現。因為模型可能只是把訓練資料記住,而不是學到真正能泛化的規律。

因此,切分資料的目的,就是讓我們更接近真實情境,因為模型未來會遇到的資料通常不是它訓練時看過的資料 👀

十四、交叉驗證 Cross Validation:做很多次取平均

如果訓練資料切分得不夠好,模型評估結果也可能不穩定。

例如:某一次剛好把比較簡單的資料分到測試集,模型分數就會看起來比較高;如果剛好把比較困難的資料分到測試集,模型分數又會看起來比較低。

為了讓模型評估更穩定,可以使用交叉驗證 Cross Validation

💡 交叉驗證希望不要只切一次資料,而是切很多次,讓模型做多次訓練與評估,最後再把結果平均

這樣可以降低單次資料切分造成的偶然影響,也比較能觀察模型在不同資料切分下是否穩定,以提升我們對模型泛化能力的判斷。

整體而言,當遇到過適應的問題時,可以依照情境採取不同解方:

👉🏻 如果過適應是因為模型太複雜,可以使用正則化,來限制模型複雜度

👉🏻 如果過適應是因為訓練資料太單一,可以使用交叉驗證,藉此提升評估穩定性

十五、機器學習課程總結

這堂課從機器學習模型的基本流程出發,進一步帶大家理解模型評估與模型觀察的重要性。

🧠 我們學到不同模型有不同的解題想像力,例如:Logistic Regression 找分類邊界、KNN 看鄰居、Decision Tree 用規則切分資料、Naive Bayes 用機率做分類、SVM 找最大間隔分類線。

而在模型驗證上,在回歸問題中,我們可以用 MAE、MSE 觀察預測值與真實值之間的誤差;分類問題中,我們不能只看 Accuracy,還要理解 FP、FN、Precision、Recall,並根據不同情境判斷哪一種錯誤成本更高 🤔

同時,模型也不是越複雜越好。當模型太貼近訓練資料時,就可能發生過適應,導致模型失去對新資料的泛化能力。因此,我們需要透過正則化、資料切分與交叉驗證,讓模型不只是記住訓練資料,而是能真正學到可應用於未來資料的規律 🙌🏻

總結來說,機器學習實作過程中,在訓練模型之餘,仍要重複思考我們面對的問題為何,並以此選擇模型、評估模型,並判斷模型是否真的能解決問題 🎯

誠摯感謝講師這三堂的精彩分享,希望這些知識能幫助同學們更了解機器學習,並將所學運用於期末的專案,甚至未來實務上的應用 🤝🏻

國立政治大學商業分析社 | NCCU Business Analytics Club, BAC

📩 社團 gmail | bac.nccu@gmail.com

👥 社團社群粉專 | LinkedIn FB Instagram


메타데이터
post_id
ea205efd7fdb
slug
️-機器學習-交叉驗證與超參數調整-nccu-bac-4-0-社課筆記-ea205efd7fdb
url
https://medium.com/@bac.nccu/%EF%B8%8F-%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E4%BA%A4%E5%8F%89%E9%A9%97%E8%AD%89%E8%88%87%E8%B6%85%E5%8F%83%E6%95%B8%E8%AA%BF%E6%95%B4-nccu-bac-4-0-%E7%A4%BE%E8%AA%B2%E7%AD%86%E8%A8%98-ea205efd7fdb
canonical_url
https://medium.com/@bac.nccu/%EF%B8%8F-%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E4%BA%A4%E5%8F%89%E9%A9%97%E8%AD%89%E8%88%87%E8%B6%85%E5%8F%83%E6%95%B8%E8%AA%BF%E6%95%B4-nccu-bac-4-0-%E7%A4%BE%E8%AA%B2%E7%AD%86%E8%A8%98-ea205efd7fdb
author_url
https://medium.com/@bac.nccu
status
ok
fetched_at
2026-07-17 06:47:26