グラディエントブースティング:理論と実装
メニューを表示するにはスワイプしてください
勾配ブースティングは、弱学習器(通常は決定木)を逐次的に学習させるアンサンブル手法であり、それぞれの新しいモデルは現在の予測値に対する損失関数の勾配に適合します。
AdaBoostがサンプルの重みを調整するのとは異なり、勾配ブースティングは前のモデルの残差に弱学習器を直接適合させ、選択した損失関数を段階的に最小化します。
数学的直感
各モデルは前段階の残差から学習します:
ri(t)=−∂F(xi)∂L(yi,F(xi))次に、新しいモデル $h_t(x)$ をこれらの残差に適合させ、アンサンブルは次のように更新されます:
Ft+1(x)=Ft(x)+η,ht(x)ここで:
- L — 損失関数(例:MSEまたは対数損失)、
- η — 各木の寄与度を制御する学習率。
1234567891011121314151617181920212223242526272829303132333435from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.ensemble import GradientBoostingClassifier from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt # Load dataset X, y = load_breast_cancer(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Initialize and train the model gb = GradientBoostingClassifier( n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42 ) gb.fit(X_train, y_train) # Evaluate y_pred = gb.predict(X_test) # Compute staged accuracy manually (works in all sklearn versions) test_accuracy = [] for y_stage_pred in gb.staged_predict(X_test): acc = accuracy_score(y_test, y_stage_pred) test_accuracy.append(acc) # Plot staged accuracy plt.plot(range(1, len(test_accuracy) + 1), test_accuracy) plt.xlabel("Number of Trees") plt.ylabel("Test Accuracy") plt.title(f"Gradient Boosting Learning Progression (Accuracy: {accuracy_score(y_test, y_pred):.3f})") plt.grid(True) plt.show()
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 10
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 10