偏差—變異權衡

Python 的模型驗證

Kasey Jones

Data Scientist

變異(Variance)

  • 變異:過度貼合訓練資料
    • 無法良好泛化到測試資料
    • 訓練誤差低、測試誤差高
    • 出現在模型過度擬合、複雜度高時
Python 的模型驗證

過度擬合模型(高變異)

當預測過度貼合訓練資料時就會過度擬合。若在散佈圖上,所有預測幾乎與真值完全對齊,通常代表過度擬合。

Python 的模型驗證

偏差(Bias)

  • 偏差:未找到資料與目標之間的關係
    • 訓練/測試誤差高
    • 出現在模型欠擬合時
Python 的模型驗證

欠擬合模型(高偏差)

當待預測變數與模型中的解釋變數確實有關聯,但我們沒有捕捉到這個關係時,就會欠擬合。

Python 的模型驗證

最佳表現

Python 的模型驗證

導致過度/欠擬合的參數

rfc = RandomForestClassifier(n_estimators=100, max_depth=4)
rfc.fit(X_train, y_train)

print("Training: {0:.2f}".format(accuracy_score(y_train, train_predictions)))
Training: .84
print("Testing: {0:.2f}".format(accuracy_score(y_test, test_predictions)))
Testing: .77
Python 的模型驗證
rfc = RandomForestClassifier(n_estimators=100, max_depth=14)
rfc.fit(X_train, y_train)

print("Training: {0:.2f}".format(accuracy_score(y_train, train_predictions)))
Training: 1.0
print("Testing: {0:.2f}".format(accuracy_score(y_test, test_predictions)))
Testing: .83
Python 的模型驗證
rfc = RandomForestClassifier(n_estimators=100, max_depth=10)
rfc.fit(X_train, y_train)

print("Training: {0:.2f}".format(accuracy_score(y_train, train_predictions)))
Training: .89
print("Testing: {0:.2f}".format(accuracy_score(y_test, test_predictions)))
Testing: .86
Python 的模型驗證

記住,只有你能避免過度擬合!

Python 的模型驗證

Preparing Video For Download...