MACHINE LEARNING / LESSON 18

Boostingで予測を育てる

小さな予測器を順番に組み合わせ、前の予測の苦手を補う考え方を知ろう。

図から学ぶ
Boostingで予測を育てるを表すキャラクターと学習内容のイラスト
TODAY'S GOAL

この回でつかむこと

Boostingの『順番に補う』流れと、テスト用データで評価する理由を説明できる。

ことばの窓
01 / SEE THE IDEA

Boostingで予測を育てるって何だろう?

Boosting(ブースティング)は、複数の比較的単純な予測器を順番に組み合わせるアンサンブル学習の一つです。ここでは勾配ブースティングを使います。前の予測で残った誤りを次の木が補い、最後にまとめて予測します。CNNのようなニューラルネットワークとは別の方法です。

あおい

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

AI先生

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

はる

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

誤りを見て予測器を追加。最初の予測を確認。残った誤りに注目。改善したか別の例で確認。
図18 誤りを見て予測器を追加。最初の予測を確認。残った誤りに注目。改善したか別の例で確認。

はる この図は仕組みの例です。改善はテスト用でも確認します。

図を読むと

複数の小さな決定木を順番に加え、予測を改善できるか確かめる。 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))
実行結果学習用 168 テスト用 72

なぜそうなる? 2種類の曲線状データを作り、学習用だけでモデルを作りました。テスト用は学習に渡していません。

02 / GO ONE STEP FURTHER

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)
実行結果2種類のテスト正解率と、使った木の数20

ここに注目 条件をそろえて比較します。木を増やした結果が学習用で良くても、テスト用で良くなるとは限りません。

03 / YOUR TURN

予想して、理由を話そう

答えを選んで、説明を確かめよう。外れても発見が一つ増えるよ。

木を増やした後、改善したか確かめるには?

答えを選ぶと理由が表示されます。

04 / TRY ON COLAB

Colabで試してみよう

コードの実行はColaboratoryの実行環境で行います。まずノートブックを保存し、Colabで「ファイル → ノートブックをアップロード」から開いてください。上から順に実行し、最後に値を変えてみましょう。

保存ボタンを押しても画面は切り替わりません。通常はブラウザの「ダウンロード」フォルダに .ipynb が保存されます。見つからない場合はダウンロード履歴を確認してください。Colabの実習は小さな例から始められます。

COFFEE BREAK

身近な技術とつなげてみよう

AI先生

AI先生:天気やセンサーの表データでは、木を組み合わせる方法も力を発揮するよ。画像のCNNとどちらが向くかは、データや目的次第なんだ。

KEY TERMS

この回の重要な用語

本文で出会った言葉を、ここで意味と一緒に振り返ろう。上の「ことばの窓」からも説明を開けるよ。

Boosting
予測器を順番に追加し、前までの予測の不足を補うアンサンブル学習の方法です。
アンサンブル学習
複数の予測器を組み合わせて、一つの予測を作る方法です。
決定木
質問による枝分かれを繰り返して予測するモデルです。
勾配ブースティング
予測の誤りを小さくする方向へ、新しい木を順番に加える方法です。
CNN
Convolutional Neural Network(畳み込みニューラルネットワーク)。画像の局所的な特徴を段階的に学ぶモデルです。
テスト用データ
学習に使わず、初めて見る例への予測を確認するデータです。