- バギング (Bagging): バギングは、ランダムなサンプリングとブートストラップ法を用いて、複数の学習モデルをトレーニングする手法です。各モデルは独立にトレーニングされ、最終的な予測はそれらの平均値または多数決によって行われます。以下は、Scikit-learnライブラリを使用したランダムフォレストを用いたバギングの例です。
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
# ベースとなる分類器として決定木を使用
base_classifier = DecisionTreeClassifier()
# バギングの分類器を作成
bagging_classifier = BaggingClassifier(base_classifier, n_estimators=10)
# データを使って分類器をトレーニング
bagging_classifier.fit(X_train, y_train)
# 予測を行う
predictions = bagging_classifier.predict(X_test)
- ブースティング (Boosting): ブースティングは、弱学習器を順番にトレーニングし、前の学習器の誤りに重点を置いて学習する手法です。各学習器は、前の学習器の誤りを補完するようにトレーニングされます。最終的な予測は、各学習器の予測の重み付き平均値として計算されます。以下は、XGBoostライブラリを使用した勾配ブースティングの例です。
import xgboost as xgb
# XGBoostの分類器を作成
boosting_classifier = xgb.XGBClassifier()
# データを使って分類器をトレーニング
boosting_classifier.fit(X_train, y_train)
# 予測を行う
predictions = boosting_classifier.predict(X_test)
- スタッキング (Stacking): スタッキングは、異なる学習モデルの予測結果を入力として、最終的な予測結果を行うモデル(メタモデル)をトレーニングする手法です。まず、複数のベースモデルをトレーニングし、その予測結果を使ってメタモデルをトレーニングします。以下は、Scikit-learnライブラリを使用したスタッキングの例です。
from sklearn.ensemble import StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
# ベースモデルとしてロジスティック回帰と決定木を使用
base_models = [
('logistic_regression', LogisticRegression()),
('decision_tree', DecisionTreeClassifier())
]
# メタモデルとしてロジスティック回帰を使用stacking_classifier = StackingClassifier(estimators=base_models, final_estimator=LogisticRegression())
# データを使ってベースモデルとメタモデルをトレーニング
stacking_classifier.fit(X_train, y_train)
# 予測を行う
predictions = stacking_classifier.predict(X_test)
以上がアンサンブル法のいくつかの主要な手法とそのコード例です。これらの手法を組み合わせて使用することで、機械学習モデルの精度を向上させることができます。