
在這個章節會繼續介紹機器學習後半部的流程,主要也是概念式的說明,每一個小細節在後續的文章中會再單獨拿出來說明。請大家盡量記得文章中每個流程所提到的專有名詞,大概了解每一個步驟在做什麼對於後續的學習很有幫助!
🔷 模型訓練(Model Training)
根據問題屬性判斷:
- 預測數值 ➜ 迴歸模型(Regression)
- 預測類別 ➜ 分類模型(Classification)
- 發現資料內部結構 ➜ 分群模型(Clustering)
載入模型演算法
- 常用套件如 scikit-learn、xgboost、lightgbm 提供快速建模。
- 設定模型參數
- 不同模型會有各自的模型參數可以設置,使用前須在套件官網查詢 - 設定訓練超參數
- 如: 訓練次數、學習率、衰退率、損失函數等
常用訓練超參數

準備資料集
- 需已完成前處理與特徵工程。
- 可使用 scikit-learn套件中的train_test_split函數 將資料切分為訓練與測試集。
為什麼需要切分資料?

怎麼切?

模型訓練
- 訓練過程會自動估算內部參數(如權重、分裂點等)。
- 可以設置多種Callback機制,讓模型訓練得更好,如: EarlyStopping、Checkpoint…
- Callback機制是可以在模型訓練過程中執行的動作
- EarlyStopping就是讓模型可以依據設定的條件提早結束訓練的機制
初步檢查模型
- 每個模型所計算的東西不同,有些模型會有附加的特徵重要性或是特徵篩選的功能可以參考,如XGBoost、RandomForest、LassoRegression…
- 檢查訓練集和驗證集的評估指標有無差異
- 在訓練過程中的每一次迭代都會有此結果
🔷 模型評估(Model Evaluation)
當此次模型訓練完之後,可以先計算其評估指標來看看是否有達到你們設定的目標,在這部分使用的是測試資料集。
做出預測
- 當你使用的是分類模型時,實際上的預測結果是每個類別的機率值
- 使用 .predict(X_test) 對測試集預測。
- 若為機率模型,可使用 .predict_proba()。
選擇評估指標
根據任務類型選用不同指標:
- 分類:Accuracy、Precision、Recall、F1、ROC-AUC
- 迴歸:MAE、MSE、RMSE、R²
💡可同時計算多種指標進行比較,不同指標著重的地方不同。
混淆矩陣分析(分類任務)
- 分析模型的 TP、FP、FN、TN 數量。
- 可使用 sklearn.metrics.confusion_matrix。
- 針對分類任務,使用混淆矩陣可以更深層次的了解模型性能,然後依照不同的指標需求調整模型。
交叉驗證(Cross-validation)
由於資料本身在分割時可能會有抽樣不平均的可能性,造成每次訓練都會有高低起伏。
- 例如:可能這次分割到的20%驗證集比較簡單,就會導致驗證結果比較好,但實際上模型沒這麼強。
- 因此使用 K-Fold 分割資料做多次訓練與驗證,確保穩定性。
測試結果分析

當訓練模型時,會利用訓練資料集和驗證資料集計算評估指標,觀察模型訓練狀況。 訓練完後會再使用測試資料集計算評估指標,以此跟訓練結果做比較。
- 理想狀況:訓練集分數和測試集的分數會是差不多的
- 訓練集分數太高,測試集分數過低,稱為過擬合(overfitting)
- 訓練集分數太低,測試集分數過高,稱為欠擬合(underfitting)
- 兩個情況都有相對應的解決辦法可以使用
🔷 模型優化(Model Optimization)
當模型訓練完成後,這只是開始!!! 接下來需要對模型不斷地優化,提升其能力。
超參數調整(Hyperparameter Tuning)
與訓練過程中學到的參數不同,這些是訓練的設定(如:學習率)。
常用方法:

特徵選擇(Feature Selection)
去除低貢獻欄位,提高模型效能與解釋力。
- 有些模型如XGBoost就有自帶特徵選擇功能
- 其他工具如 SelectKBest, RFE, Lasso regression
特徵轉換
- One-hot encoding、數值標準化、對數轉換
- 對類別資料與長尾資料尤其重要。
💡簡單的說,就是讓類別資料變成數值、讓各種偏斜的資料分佈盡可能接近常態分佈
集成學習(Ensemble Methods)
集成學習方法很多種,簡單的說就是集結或綜合多個模型來提升整體能力! 目前三大主流方法如下:

避免過擬合和欠擬合
這裡先將原因簡單分為模型太簡單以及模型太複雜兩種:

🔷 模型部署(Model Deployment)
模型儲存與版本控管
模型訓練完成後需要將其模型結構與模型權重儲存起來,以利後續調用!
常見模型儲存格式

模型版本控制工具

封裝模型成 API
模型的部署需使用API的形式來接資料與回傳結果。
做法
- 將模型與預處理邏輯寫入 Python 函式 → .py檔
- 使用 Flask / FastAPI 將其轉為可接收 JSON 資料的 RESTful API
建置使用介面(可選)
除了直接部署API供其他人調用之外,也可以建置簡易介面來測試與展示,可使用 Streamlit或是Gradio 建立互動介面。
Streamlit和Gradio主要是機器學習模型使用的簡易互動介面,有別於傳統前端網頁的技術。
容器化部屬 (Container)
除了將封裝完的API直接在機器上啟動之外,會建議使用容器部屬的方式。 容器化部署可以將作業系統、環境、套件、程式…等所有運行API所需要的元素通通一起打包起來,方便於任意機器部屬!!!

測試部署環境
於本機或雲端模擬真實資料輸入與模型輸出,測試部署的API是否可以成功地接收資料與輸出模型結果。

🔷 模型推論(Model Inference)
接收實際資料
模型部署後,接收來自 API 或介面的資料,通常使用 JSON格式,讀取後再依需球轉換成 DataFrame 或 Numpy 格式。
重現前處理流程
這步驟是很多初學者容易漏掉的一個細節,不管你是訓練資料,測試資料還是新的資料,前處理都要跟訓練模型時的步驟一樣,才能確保輸入的資料是一致的!!!
- 例如 資料清理步驟、標準化、特徵編碼, …等
💡建議將前處理封裝為 Pipeline,避免錯誤與遺漏
模型載入與預測
- 讀取模型架構與權重
- 對新資料預測
輸出結果處理
- 將結果轉換為可讀資訊(如標籤名稱、機率分數)
- 可將結果回傳至使用者介面或儲存至資料庫
監控與更新模型
- 追蹤預測準確度,確保模型能力還在要求之上
- 定期根據新資料重訓模型,維持效能(model retraining)