AdaBoost(Adaptive Boosting)とは?意味をわかりやすく簡単に解説
公開:
AdaBoost(Adaptive Boosting)とは
AdaBoost(Adaptive Boosting)とは、複数の弱学習器を組み合わせて、強力な学習器を構築するアンサンブル学習の代表的なアルゴリズムです。1995年にYoav FreundとRobert Schapireによって提案され、機械学習の分野で画期的な成果を上げました。
このアルゴリズムは、誤分類されたサンプルに対して重みを適応的に調整し、次の弱学習器が困難なサンプルに集中するという特徴を持ちます。決定木など単純なモデルを弱学習器として使用し、それらを逐次的に学習させることで高い予測精度を実現できます。
弱学習器の重み付け更新の仕組み
AdaBoostでは各弱学習器の学習後に誤分類率を計算し、その値に基づいて学習器の重要度を決定します。誤分類率が低い学習器ほど高い重要度が割り当てられ、最終的な予測における影響力が大きくなる仕組みです。
| ステップ | 処理内容 |
|---|---|
| 初期化 | 全サンプルの重み均等設定 |
| 学習器構築 | 重み付きデータで弱学習器訓練 |
| 誤分類率計算 | 学習器の性能評価実施 |
| 重要度算出 | 誤分類率から学習器の重み決定 |
| サンプル重み更新 | 誤分類サンプルの重み増加 |
誤分類されたサンプルの重みは指数関数的に増加し、正しく分類されたサンプルの重みは減少します。この更新により、次の弱学習器は、前回誤分類されたサンプルをより重視して学習を行うことになります。
Pythonによる基本的な実装コード
Pythonのscikit-learnライブラリを使用すると、AdaBoostClassifierクラスで簡単にAdaBoostを実装できます。基本的なコードでは弱学習器の種類や数、学習率などのハイパーパラメータを指定して学習を実行します。
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# データセット作成
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# AdaBoostモデル構築
base_estimator = DecisionTreeClassifier(max_depth=1)
ada_model = AdaBoostClassifier(estimator=base_estimator, n_estimators=50, learning_rate=1.0)
# 学習と予測
ada_model.fit(X_train, y_train)
accuracy = ada_model.score(X_test, y_test)
print(f"Accuracy: {accuracy:.3f}")
このコードでは、max_depth=1の決定株を弱学習器として50個使用し、学習率1.0で学習を行っています。n_estimatorsパラメータで弱学習器の数を調整でき、値を増やすほど複雑なモデルを構築できますが過学習のリスクも高まります。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
左へフリックで次のページ、右へフリックで前のページに戻れます左右の矢印ボタン、左右のスワイプで移動できます





