本文へ移動

G検定(ジェネラリスト検定)

ぶーすてぃんぐ

ブースティング

Boosting

ブースティングは、決定木などの単純なモデルを1つずつ順番に作り、それまでのモデルが説明しきれなかった部分(残差)に次のモデルを当てはめ、少しずつ足し合わせて予測を改善していくアンサンブル学習の方法です。

詳しい説明

ブースティングとは何か

ブースティングは、複数の予測モデルを組み合わせて1つの予測を作るアンサンブル学習の方法の1つです。組み合わせるモデルには決定木がよく使われます。特徴は、木を一度にまとめて作るのではなく、1本ずつ順番に作る点にあります。新しい木は、それ以前に作った木の結果を踏まえて作られます。

統計学習の教科書『An Introduction to Statistical Learning』(2013年)は、ブースティングを「バギングと似た方法で働くが、木を逐次的に育てる点が違う」と説明しています。各木はそれ以前に育てた木の情報を使って育てられ、ブートストラップサンプリングは使わず、元のデータセットを修正したものに当てはめられます。

大きな木を1本作る方法との違い

データに対して大きな決定木を1本だけ当てはめると、その木は手元のデータに強く合わせ込まれ、過学習(学習に使ったデータには合うが、新しいデータには合わない状態)を起こすことがあります。

ブースティングはこれとは逆に、ゆっくり学習することを狙います。まず小さな木で大まかに予測し、予測しきれなかった部分(実際の値と予測の差である残差)に次の木を当てはめます。これを繰り返すことで、前の木が苦手だった部分を後の木が少しずつ補っていきます。

回帰木で見る学習の手順

回帰(数値を予測する問題)に決定木を使う場合、ブースティングの手順は次のように進みます。ここで f(x) は入力 x に対するモデル全体の予測、r_i は i 番目のデータの残差、y_i は i 番目のデータの実際の値です。

1. 予測を f(x) = 0 とし、残差を r_i = y_i として始めます。まだ何も学習していないので、残差は実際の値そのものです。
2. b = 1, 2, ..., B の順に、次の3つを繰り返します。

  • 入力 X と現在の残差 r の組に対して、分割が d 回の小さな木 f_b を当てはめます。
  • 新しい木を縮小パラメータ lambda で小さくしてから全体の予測に加えます。 f(x) <- f(x) + lambda * f_b(x)
  • 残差を更新します。 r_i <- r_i - lambda * f_b(x_i)

3. 最終的なモデルは、縮小したB本の木の合計です。 f(x) = lambda * f_1(x) + lambda * f_2(x) + ... + lambda * f_B(x)

各木は元の目的変数 y ではなく、その時点の残差に当てはめられます。教科書が「元のデータセットの修正版」と呼んでいるのは、この残差に置き換えられたデータのことです。

数字で追う少しずつの改善

仕組みを簡単な数字で追ってみます。実際の値が y = 10 のデータが1つあり、lambda = 0.1 とします。説明を簡単にするため、各木はその時点の残差をぴったり予測できるものとします。

  • 始めは予測 0、残差 10 です。
  • 1本目の木は残差 10 を予測します。予測には 0.1 * 10 = 1.0 だけ加わり、予測は 1.0、残差は 9.0 になります。
  • 2本目の木は残差 9.0 を予測します。予測に 0.9 が加わって 1.9 になり、残差は 8.1 になります。
  • 3本目で予測は 2.71、残差は 7.29 になります。

このように、1本の木が一度に全部を説明するのではなく、1本ごとに残りの1割ずつを埋めていきます。lambda を 0.01 にすると1本あたりの前進はさらに小さくなり、同じ予測に近づくまでに、より多くの木を重ねることになります。

調整する3つのパラメータ

ブースティングには、使う側が決める値(調整パラメータ)が3つあります。

  • 木の本数 B: 何本の木を重ねるかです。多すぎると過学習を起こすことがあります。
  • 縮小パラメータ lambda: 1本の木の結果をどれだけ小さくして加えるかで、学習の速さを決めます。小さいほどゆっくり学習します。典型的には 0.01 や 0.001 のような小さな正の値が使われます。
  • 各木の分割数 d: 1本の木が何回分割するかで、組み上がるモデルの複雑さを決めます。d = 1 のときは、1回だけ分割する木になり、これをスタンプ(切り株)と呼びます。

ブースティングでは、1本ずつの木は小さくて単純で構いません。単純な木でも、前の木の残差に次々と当てはめて足し合わせることで、全体としては複雑な関係を表せるようになります。

バギングとの共通点と違い

バギングもブースティングも、多数の決定木を組み合わせて予測する点は同じです。違いは、木の作り方と、各木が学習するデータにあります。

  • 作る順序: バギングは複数の木を互いに独立に作ります。ブースティングは木を1本ずつ順番に作り、後の木は前の木の結果に依存します。
  • 学習に使うデータ: バギングは元のデータからブートストラップサンプリング(重複を許した無作為な抽出)で作った標本ごとに木を作ります。ブースティングはブートストラップサンプリングを使わず、その時点の残差に置き換えた元のデータに木を当てはめます。
  • 1本の木の役割: バギングでは各木がそれぞれ単独で予測全体を担います。ブースティングでは各木は、それまでに残った誤差の一部を埋める部品です。

使うときの注意点

ブースティングは少しずつ学習するため、木の本数 B と縮小パラメータ lambda の組み合わせで結果が変わります。lambda を小さくすると学習は丁寧になりますが、十分な精度に届くまでに多くの木が必要になります。一方で木の本数を増やしすぎると過学習を起こすことがあるため、本数は適切な範囲に抑える必要があります。

試験で問われること

G検定

  • ブースティングは、小さな決定木などの単純なモデルを1本ずつ逐次的に作り、前のモデルが予測しきれなかった部分(残差)に次のモデルを当てはめて足し合わせる、アンサンブル学習の方法として押さえます。
  • バギングとの違いを対で整理します。バギングは木を互いに独立に作り、ブートストラップサンプリングで作った標本を使います。ブースティングは木を順番に作り、後の木が前の木の結果に依存し、ブートストラップサンプリングを使いません。
  • 調整パラメータは、木の本数B(多すぎると過学習しうる)・縮小パラメータlambda(学習の速さを決め、小さいほどゆっくり学ぶ)・各木の分割数d(d = 1のときはスタンプ)の3つです。それぞれが何を制御するかを結び付けて覚えます。
  • 大きな決定木を1本作ると手元のデータに合わせ込みすぎて過学習しうるのに対し、ブースティングは小さな木を少しずつ加えてゆっくり学習する、という発想の違いを説明できるようにします。

最終更新日: 2026/09/23