バイアス–バリアンスのトレードオフ

Python によるモデル検証

Kasey Jones

Data Scientist

バリアンス

  • バリアンス: 学習データに過度に追随すること
    • テストデータに汎化できない
    • 学習誤差は小さいがテスト誤差は大きい
    • モデルが過学習し、複雑すぎると発生
Python によるモデル検証

過学習モデル(高バリアンス)

過学習は、予測が学習データに過度に一致すると発生します。散布図で予測が実測値と完全に一致していれば、過学習の可能性が高いです。

Python によるモデル検証

バイアス

  • バイアス: 特徴量と目的変数の関係を捉え損ねること
    • 学習/テスト誤差がともに大きい
    • モデルが未学習(単純すぎ)なときに発生
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...