0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonによる機械学習: AdaBoost、Gradient Boosting、Stochastic Gradient Boostingの解説と実装

Posted at

はじめに

本記事では、機械学習の重要なアルゴリズムである「AdaBoost」、「Gradient Boosting」、「Stochastic Gradient Boosting(SGB)」について、その理論とPythonによる実装例を通じて解説します。それぞれを回帰タスクと分類タスクの両方に対応した形で説明します。これらのアルゴリズムを理解し、実践的に活用することで、様々なデータセットに対する予測精度を高めることができます。

1. AdaBoost

1.1 理論

AdaBoost (Adaptive Boosting)は、弱学習器を逐次的に訓練して最終的な強学習器を作成するアンサンブル学習法です。各弱学習器は前の学習器が誤分類したデータに対して重点を置き、これにより全体としての性能を向上させます。

1.2 実装例

1.2.1 分類タスク

from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import make_classification

# データ生成
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# AdaBoostの設定と学習
clf = AdaBoostClassifier(n_estimators=100, random_state=42)
clf.fit(X, y)

# 予測
predictions = clf.predict(X)

1.2.2 回帰タスク

from sklearn.ensemble import GradientBoostingRegressor
from sklearn.datasets import make_regression

# データ生成
X, y = make_regression(n_samples=1000, n_features=20, random_state=42)

# Gradient Boostingの設定と学習
regr = GradientBoostingRegressor(n_estimators=100, random_state=42)
regr.fit(X, y)

# 予測
predictions = regr.predict(X)

3. Stochastic Gradient Boosting(SGB)

3.1 理論

Stochastic Gradient Boosting(SGB)は、通常のGradient Boostingにランダム性を導入したバージョンです。各弱学習器が訓練する際にランダムに選ばれた一部のデータセットを使います。これによりモデルのバリアンスが減少し、過学習を防ぐ効果があります。

3.2 実装例

3.2.1 分類タスク

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import make_classification

# データ生成
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# Stochastic Gradient Boostingの設定と学習
# subsampleパラメータを<1.0に設定することでSGDとなる
clf = GradientBoostingClassifier(n_estimators=100, subsample=0.8, random_state=42)
clf.fit(X, y)

# 予測
predictions = clf.predict(X)

3.2.2 回帰タスク

from sklearn.ensemble import GradientBoostingRegressor
from sklearn.datasets import make_regression

# データ生成
X, y = make_regression(n_samples=1000, n_features=20, random_state=42)

# Stochastic Gradient Boostingの設定と学習
# subsampleパラメータを<1.0に設定することでSGDとなる
regr = GradientBoostingRegressor(n_estimators=100, subsample=0.8, random_state=42)
regr.fit(X, y)

# 予測
predictions = regr.predict(X)

以上でAdaBoost、Gradient Boosting、Stochastic Gradient Boostingの基本的な理論とPythonによる実装例の解説を終わります。これらのアルゴリズムは、データの特性や問題設定により適切に選択・調整することが重要です。

それぞれのアルゴリズムが持つ特性と、それぞれの適用場面を理解することで、機械学習モデルの精度を一段と向上させることが可能となります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?