文章

AI 第13天:模型評估與交叉驗證

建立模型後,正確的評估方法能幫助我們了解模型的性能並優化其效果。今天我們將學習如何使用模型評估指標和交叉驗證技術來提升模型的準確性與穩定性。


課程目標

  1. 了解常用的模型評估指標(分類與迴歸)。
  2. 學會如何進行交叉驗證以檢查模型的穩定性。
  3. 實作範例,對模型進行評估與改進。

課程內容

1. 模型評估指標

1.1 分類模型指標

  1. 準確率(Accuracy)
    比例正確分類的數據:
    \(Accuracy = \frac{\text{正確分類數量}}{\text{總數據數量}}\)

  2. 精確率(Precision)
    正確預測為正類的比例:
    \(Precision = \frac{\text{正確的正類預測數量}}{\text{預測為正類的總數量}}\)

  3. 召回率(Recall)
    被正確預測的正類比例:
    \(Recall = \frac{\text{正確的正類預測數量}}{\text{實際正類的總數量}}\)

  4. F1 分數
    精確率和召回率的調和平均:
    \(F1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}\)

1.2 實作範例:分類指標

1
2
3
4
5
6
7
8
9
10
11
12
from sklearn.metrics import classification_report, confusion_matrix

# 使用之前訓練的隨機森林模型進行預測
y_pred = forest.predict(X_test)

# 混淆矩陣
print("混淆矩陣:")
print(confusion_matrix(y_test, y_pred))

# 分類報告
print("\n分類報告:")
print(classification_report(y_test, y_pred))

1.3 迴歸模型指標

  1. 均方誤差(MSE)
    預測值與真實值的平方差的平均:
    \(MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2\)

  2. 均方根誤差(RMSE)
    MSE 的平方根,讓誤差單位與原數據一致:
    \(RMSE = \sqrt{MSE}\)

  3. 平均絕對誤差(MAE)
    預測值與真實值的絕對差的平均:
    \(MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|\)

1.4 實作範例:迴歸指標

1
2
3
4
5
6
7
8
from sklearn.metrics import mean_squared_error, mean_absolute_error

# 假設 y_test 為真實值,y_pred 為預測值
mse = mean_squared_error(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred)

print(f"MSE: {mse:.2f}")
print(f"MAE: {mae:.2f}")

2. 交叉驗證

2.1 核心概念

交叉驗證是一種將數據集分割為多個子集來評估模型的技術。最常用的方法是 k-fold 交叉驗證

  1. 將數據集劃分為 ( k ) 個等分(folds)。
  2. 每次使用 ( k-1 ) 個分組作為訓練集,其餘 1 個分組作為測試集。
  3. 重複 ( k ) 次,取平均評估結果作為模型性能。

2.2 實作範例:k-fold 交叉驗證

1
2
3
4
5
6
7
8
9
10
11
12
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier

# 建立隨機森林模型
forest = RandomForestClassifier(n_estimators=100, random_state=42)

# 使用 5-fold 交叉驗證評估準確率
scores = cross_val_score(forest, X, y, cv=5, scoring='accuracy')

print("交叉驗證準確率:")
print(scores)
print(f"平均準確率: {scores.mean():.2f}")

3. 調整與優化模型

在評估模型後,可以根據結果進行模型的調整:

  1. 特徵選擇: 排除對模型影響較小的特徵。
  2. 超參數調整: 使用網格搜索(GridSearchCV)來尋找最佳超參數組合。
  3. 增加數據: 增加訓練數據能有效提高模型的性能。

課後作業

  1. 使用交叉驗證對之前的 KNN 和 SVM 模型進行評估,並比較它們的平均準確率。
  2. 使用不同的評估指標(例如 F1 分數)對決策樹模型進行分析,理解分類模型的不同性能表現。
  3. 思考並回答:
    • 為什麼交叉驗證能夠提高模型評估的穩定性?
    • 在模型調整過程中,如何選擇合適的評估指標?
本文章以 CC BY 4.0 授權