Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ バイアス・バリアンスのトレードオフとアンサンブル | セクション
木構造アンサンブル手法

bookバイアス・バリアンスのトレードオフとアンサンブル

メニューを表示するにはスワイプしてください

機械学習において、予測誤差は主に3つの要素で構成されます:バイアスバリアンス、および不可避誤差です。バイアスは、モデルの予測値が実際の値から平均してどれだけ離れているかを、単純化した仮定によって測定します。バイアスが高い場合、モデルがデータの基礎的なパターンを捉えきれず、アンダーフィッティングが発生します。バリアンスは、異なる訓練データセットを使用した場合にモデルの予測がどれだけ変動するかを示します。バリアンスが高い場合、モデルが訓練データに過度に適合し、オーバーフィッティングや新しいデータへの汎化性能の低下を引き起こします。

Note
定義

バイアスは、学習アルゴリズムにおける誤った仮定から生じる誤差。バイアスが高いとアンダーフィッティングの原因となる。

Note
定義:バリアンス

バリアンスは、訓練データセットのわずかな変動に対する感度から生じる誤差。バリアンスが高いとオーバーフィッティングの原因となる。

機械学習における予測誤差は、主に3つの要素に分解できる:バイアスバリアンス、および不可避誤差。バイアスは、モデルが仮定する単純化によって生じる誤差であり、モデルの予測値が実際の値から平均してどれだけ離れているかを示す。バイアスが高い場合、モデルがデータの真のパターンを十分に捉えられず、アンダーフィッティングが発生する。バリアンスは、モデルが特定の訓練データにどれだけ敏感かによって生じる誤差であり、異なる訓練セットを用いた場合に予測がどれだけ変動するかを示す。バリアンスが高い場合、モデルが訓練データに過度に適合し、オーバーフィッティングや汎化性能の低下を引き起こす。

数学的には、バイアス–バリアンストレードオフは、新しい入力値 $x$ における期待二乗誤差の次の分解式で表される:

E[(yf^(x))2]=Bias(f^(x))2+Variance(f^(x))+Irreducible Error\mathbb{E}\left[(y - \hat{f}(x))^2\right] = \text{Bias}(\hat{f}(x))^2 + \text{Variance}(\hat{f}(x)) + \text{Irreducible Error}
  • Bias(f^(x))\text{Bias}(\hat{f}(x)):モデルの平均予測値と実際の値との間の差分;
  • Variance(f^(x))\text{Variance}(\hat{f}(x)):異なる訓練データセットによる、あるデータ点 $x$ に対するモデル予測の変動性;
  • Irreducible Error\text{Irreducible Error}:データに内在するノイズであり、どのようなモデルでも減らすことができない誤差。

このトレードオフは、バイアスを減らす(モデルを柔軟にする)と通常バリアンスが増加し、その逆も同様であることから生じる。目標は、全体の予測誤差を最小化するために適切なバランスを持つモデルを見つけること。アンサンブル手法は、このトレードオフに対処し、より良い性能を達成するために広く利用されている。

123456789101112131415161718192021222324252627282930313233343536373839
import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor from sklearn.ensemble import BaggingRegressor # Create a noisy sine wave dataset np.random.seed(42) X = np.sort(np.random.rand(80, 1) * 6 - 3, axis=0) # X in [-3, 3] y = np.sin(X).ravel() + np.random.normal(0, 0.25, X.shape[0]) # Fit a single decision tree tree = DecisionTreeRegressor(max_depth=3, random_state=0) tree.fit(X, y) # Fit a bagging ensemble of decision trees bagging = BaggingRegressor( estimator=DecisionTreeRegressor(max_depth=3), n_estimators=30, random_state=0 ) bagging.fit(X, y) # Generate test data for predictions X_test = np.linspace(-3, 3, 500).reshape(-1, 1) y_true = np.sin(X_test).ravel() y_tree = tree.predict(X_test) y_bagging = bagging.predict(X_test) # Plotting plt.figure(figsize=(10, 6)) plt.plot(X_test, y_true, label="True Function (sin)", color="green", linewidth=2) plt.scatter(X, y, label="Training Data", color="gray", alpha=0.5) plt.plot(X_test, y_tree, label="Single Decision Tree", color="red", linestyle="--") plt.plot(X_test, y_bagging, label="Bagging Ensemble", color="blue") plt.title("Variance Reduction with Bagging Ensemble") plt.xlabel("X") plt.ylabel("y") plt.legend() plt.show()
copy
question mark

機械学習におけるバイアスとバリアンスに関する記述のうち、正しいものはどれか?

すべての正しい答えを選択

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  2
some-alt