
この回でつかむこと
Boostingの『順番に補う』流れと、テスト用データで評価する理由を説明できる。
Boostingで予測を育てるって何だろう?
Boosting(ブースティング)は、複数の比較的単純な予測器を順番に組み合わせるアンサンブル学習の一つです。ここでは勾配ブースティングを使います。前の予測で残った誤りを次の木が補い、最後にまとめて予測します。CNNのようなニューラルネットワークとは別の方法です。

一人で外しちゃった問題も、別の人に見直してもらえばよくなるのかな?

いい考え方だね。Boostingは、前までの予測が苦手だった例にも目を向けながら、予測器を順番に加えていくんだよ。

予測器を増やせば必ずよくなるわけではないので、別に残したデータで確かめます。

はる この図は仕組みの例です。改善はテスト用でも確認します。
複数の小さな決定木を順番に加え、予測を改善できるか確かめる。 Boosting(ブースティング)は、複数の比較的単純な予測器を順番に組み合わせるアンサンブル学習の一つです。ここでは勾配ブースティングを使います。前の予測で残った誤りを次の木が補い、最後にまとめて予測します。CNNのようなニューラルネットワークとは別の方法です。
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
X, y = make_moons(n_samples=240, noise=0.24, random_state=7)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, stratify=y, random_state=7)
small_tree = DecisionTreeClassifier(max_depth=1, random_state=7).fit(X_train, y_train)
boost = GradientBoostingClassifier(n_estimators=20, max_depth=1, random_state=7).fit(X_train, y_train)
print('学習用', len(X_train), 'テスト用', len(X_test))なぜそうなる? 2種類の曲線状データを作り、学習用だけでモデルを作りました。テスト用は学習に渡していません。
1本の木と、組み合わせた木を比べよう
同じテスト用データで正解率を比べます。数値は設定やデータで変わるので、いつでもBoostingが勝つとは考えません。
print('1本の木:', round(small_tree.score(X_test, y_test), 3))
print('Boosting:', round(boost.score(X_test, y_test), 3))
print('木の数:', boost.n_estimators)ここに注目 条件をそろえて比較します。木を増やした結果が学習用で良くても、テスト用で良くなるとは限りません。
予想して、理由を話そう
答えを選んで、説明を確かめよう。外れても発見が一つ増えるよ。
答えを選ぶと理由が表示されます。
Colabで試してみよう
コードの実行はColaboratoryの実行環境で行います。まずノートブックを保存し、Colabで「ファイル → ノートブックをアップロード」から開いてください。上から順に実行し、最後に値を変えてみましょう。
保存ボタンを押しても画面は切り替わりません。通常はブラウザの「ダウンロード」フォルダに .ipynb が保存されます。見つからない場合はダウンロード履歴を確認してください。Colabの実習は小さな例から始められます。
身近な技術とつなげてみよう

AI先生:天気やセンサーの表データでは、木を組み合わせる方法も力を発揮するよ。画像のCNNとどちらが向くかは、データや目的次第なんだ。
この回の重要な用語
本文で出会った言葉を、ここで意味と一緒に振り返ろう。上の「ことばの窓」からも説明を開けるよ。
- Boosting
- 予測器を順番に追加し、前までの予測の不足を補うアンサンブル学習の方法です。
- アンサンブル学習
- 複数の予測器を組み合わせて、一つの予測を作る方法です。
- 決定木
- 質問による枝分かれを繰り返して予測するモデルです。
- 勾配ブースティング
- 予測の誤りを小さくする方向へ、新しい木を順番に加える方法です。
- CNN
- Convolutional Neural Network(畳み込みニューラルネットワーク)。画像の局所的な特徴を段階的に学ぶモデルです。
- テスト用データ
- 学習に使わず、初めて見る例への予測を確認するデータです。