バギングとアンサンブル学習の概要 | 分類アルゴリズム | Pythonによる機械学習を学ぶ

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

バギングとアンサンブル学習の概要

アンサンブル学習は、複数の機械学習モデルを組み合わせて、単一のモデルよりも安定した予測を目指す手法です。

1つのモデルだけでは予測が不安定になったり、過学習しやすくなったりする場合があります。アンサンブル学習では、複数のモデルの予測を集約することで、より信頼性の高い結果を得やすくなります。

バギングとアンサンブル学習を図で理解する

バギングとアンサンブル学習を図で理解する

アンサンブル学習とは

アンサンブル学習とは、複数のモデルを組み合わせて予測する方法です。

分類では多数決、回帰では平均を使って最終的な予測を決定することが一般的です。

  • 複数のモデルを使う
  • 各モデルの予測を集約する
  • 予測のばらつきを抑える
  • 単一モデルより安定した結果を得やすい

バギングとは

バギング(Bagging)は、Bootstrap Aggregatingの略です。

元の訓練データからランダムにデータを取り出して複数のサブセットを作り、それぞれでモデルを学習させます。その後、各モデルの予測を集約して最終的な予測を行います。

バギングの基本的な流れ

  1. 元の訓練データからランダムにサンプルを抽出する
  2. 複数のブートストラップサンプルを作成する
  3. それぞれのサンプルでモデルを学習する
  4. 各モデルの予測結果を集約する
  5. 分類では多数決、回帰では平均を使って最終予測を行う

バギングの効果

バギングは、モデルの予測のばらつきを抑える効果があります。

特に、決定木のようにデータの変化に敏感なモデルでは、複数の木を組み合わせることで過学習を抑え、安定した予測を行いやすくなります。

効果 内容
バリアンスの低減 予測結果のばらつきを抑える
過学習の抑制 単一モデルへの依存を減らす
安定性の向上 複数モデルの結果を集約して判断する

ランダムフォレストとは

ランダムフォレストは、バギングを応用した代表的なアンサンブル学習手法です。

複数の決定木を作成し、それぞれの予測を多数決または平均によって統合します。さらに、各決定木の学習時に使用する特徴量もランダムに選ぶことで、木同士に多様性を持たせます。

ランダムフォレストの特徴

  • 複数の決定木を使う
  • 各木は異なるデータサンプルで学習する
  • 特徴量の一部もランダムに選ぶ
  • 分類では多数決、回帰では平均で予測する
  • 単一の決定木より過学習しにくい

Pythonでの実装例

以下は、scikit-learnを使ってランダムフォレストを実装する例です。

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# データセットのロード
iris = load_iris()
X, y = iris.data, iris.target

# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(
    X,
    y,
    test_size=0.3,
    random_state=42
)

# ランダムフォレストモデルの作成
model = RandomForestClassifier(
    n_estimators=100,
    random_state=42
)

# モデルの学習
model.fit(X_train, y_train)

# 予測
y_pred = model.predict(X_test)

# 精度の計算
accuracy = accuracy_score(y_test, y_pred)

print(f'Accuracy: {accuracy:.2f}')

このコードでは、Irisデータセットを使ってランダムフォレスト分類モデルを作成し、予測精度を確認しています。

バギングとランダムフォレストの違い

項目 バギング ランダムフォレスト
基本的な考え方 複数のモデルを異なるデータで学習する 複数の決定木を異なるデータと特徴量で学習する
使用するモデル 任意のモデルを使える 主に決定木を使う
ランダム性 データサンプルをランダムに抽出 データに加えて特徴量もランダムに選択
代表例 BaggingClassifier RandomForestClassifier

他のアンサンブル学習手法との比較

手法 概要 特徴
バギング 複数のモデルを並列に学習し、予測を集約する ばらつきを抑えやすい
ブースティング 前のモデルの誤りを補うように順番に学習する 高精度になりやすいが調整が重要
スタッキング 複数モデルの予測を別のモデルで統合する 柔軟だが構成が複雑になりやすい

バギングが向いている場面

  • 単一モデルの予測が不安定な場合
  • 決定木の過学習を抑えたい場合
  • データのばらつきによる影響を減らしたい場合
  • 安定した予測結果を得たい場合

アンサンブル学習を使う際の注意点

  • 複数のモデルを使うため計算コストが増える
  • 単一モデルより結果の解釈が難しくなることがある
  • モデル数を増やしすぎても性能向上が頭打ちになる場合がある
  • データや目的に応じて手法を選ぶ必要がある