titc.ai › BLOG

BLOG · AI入門・機械学習

勾配ブースティングの動きをアニメーションで理解する

「前の木が間違えたところを、次の小さな木が直す」を積み重ねる仕組みを、動かして確かめる

公開日 / 著者 富田 良治(TITC合同会社 代表社員)

勾配ブースティング(こうばいブースティング)は、小さな決定木を1本ずつ足していき、「前の木たちが間違えたところ」を次の木が直す、という作業を繰り返して予測を磨く手法です。「ダイレクトメール(DM)に反応して購入するお客様か」「解約しそうなお客様か」といった予測で、表形式のデータ(Excelの表のようなデータ)では特に高い精度が出やすいことで知られ、XGBoost(エックスジーブースト)やLightGBM(ライト・ジービーエム)という名前のソフトとして広く使われています。下のデモで、間違いが少しずつ直されていく様子を見てみましょう。

動かして確かめる

点の一つひとつがお客様です。横軸は「来店回数」、縦軸は「平均購入額」。青い丸(●)は「購入した」、赤いバツ(×)は「購入しなかった」お客様です。背景の濃さは、そのあたりにいるお客様が購入する確率の予測です(青が濃いほど「購入しそう」、赤が濃いほど「しなさそう」)。点の大きさは「いまのモデルが、そのお客様をどれだけ外しているか」を表します。まずは「再生」を押してください。

お客様の分布と購入確率の予測(背景の濃淡)

● 青い丸=購入した × 赤いバツ=購入しなかった / 大きい点ほど、いまのモデルが大きく外している(黄色い輪は特にひどい外れ) / 小さな白抜きの印=テスト用のお客様(学習には使いません)

誤りの推移(下がるほど予測が当たっています)

緑=学習用データの誤り、紫=テスト用データの誤り(学習に使っていない、いわば「本番のお客様」)。黄色の輪は、テスト用の誤りが最小だったラウンドです。

ラウンド:0 / 上限 100
学習用データの正解率:-
テスト用データの正解率:-
誤り:学習用 - / テスト用 -
「再生」か「1ラウンド進む」を押してください。

1ラウンド=①間違いの度合いを測る → ②その間違いを当てる小さな木を作る → ③学習率をかけて足し込む、の3段階です。再生中はラウンドが進むほど自動で速くなります。左の図の好きな場所をクリック(タップ)すると、その場所にいるお客様の購入確率が表示されます。

何が起きているのか:間違いを見つけて、小さな木で直して、足す

勾配ブースティングは、1ラウンドごとに次の作業をします。

  1. 最初の予測は「全体の平均」:まず全員に「購入する割合は全体で○%」という同じ予測をつけます。内部では確率そのものではなく、確率を足し算しやすい形に直した「スコア」(対数オッズ)を持っていて、「スコアを足していき、最後に確率に変換する」という作りです。変換にはシグモイド関数という、どんな数も0〜1の確率に収める関数を使います。
  2. 間違いの度合いを測る:お客様ごとに「実際の結果(購入=1、しない=0)から、予測した確率を引いた差」を求めます。購入したお客様なのに確率が低ければ差は大きなプラス、購入しなかったお客様なのに確率が高ければ大きなマイナスです。この差を残差(ざんさ)と呼びます。(デモで点が大きく光るところ)
  3. その間違いを当てる、小さな木を作る:お客様の「購入したかどうか」そのものではなく、②で求めた「いまのモデルの間違いの度合い」を予測する、深さ1〜3ほどの浅い決定木を作ります。木は「この区画のお客様は、いまのモデルだと実際より低めに見積もっている」といった偏りを探して、区画ごとに修正量を決めます。(デモで区切り線と+/−の数字が現れるところ)
  4. 学習率をかけて足し込む:修正量にそのまま従うのではなく、「学習率」(0.1なら1割)をかけた分だけスコアに足します。足すと背景の確率が更新され、外していた点が小さくなります。(デモで背景の濃淡が変わるところ)
  5. これを繰り返す:新しい予測でまた間違いを測り、次の木で直します。最終的な予測は「最初のスコア + 学習率 × (1本目の木 + 2本目の木 + …)」をシグモイド関数で確率に直したものです。

名前の「勾配(こうばい)」は、「誤りの測り方(ロジスティック損失)をいちばん減らす向き」を指します。ここで使う「購入したか − 予測した確率」という差は、ちょうどその向き(損失の勾配の逆向き)に当たります。つまり「間違いを直す木を足す」ことは、「誤りを減らす方向へ少しずつ進む」ことと同じ意味になっています。なお、デモの木の区画ごとの修正量は、「区画内の差の合計 ÷ 区画内の(確率×(1−確率))の合計」という、ニュートン法と呼ばれる1歩の計算で決めています。ざっくり言えば「その区画の平均的な見積もりのズレ」です。

「学習率」と「木の深さ」を変えて比べてみる

学習率を1.0にすると、1ラウンドで大きく直すぶん、グラフの線が一気に下がりますが、例外的なお客様に振り回されやすくなります。0.05にすると、着実で安定していますが、同じ精度に届くまでに多くのラウンドが要ります。木の深さを1にすると、1本の木は縦か横の線1本だけで区切るので、斜めの境界は階段のような形に少しずつ近づけていきます。深さを3にすると、1本の木でより細かく直せます。

ランダムフォレストとの違い

同じ「木をたくさん使う」手法に、決定木の記事でも触れたランダムフォレストがあります。ランダムフォレストは、木をお互い独立に(並列に)たくさん作って、多数決で答えを決めます。勾配ブースティングは、木を1本ずつ順番に(直列に)作り、前の木たちの間違いを見てから次の木を作ります。「みんなで意見を出し合う」のと、「前の人の間違いを直す人を、順にリレーでつなぐ」のとの違いです。

使うときの注意点

中小企業での使いどころ

顧客名簿や購買履歴、取引履歴など、行と列の表になっているデータがあれば、「DMに反応して購入する見込みの高いお客様の絞り込み」「解約しそうなお客様の早期発見」「支払いが遅れそうな取引先の見極め」「商品ごとの需要予測」(数値を当てる場合にも使えます)などに使えます。実際のソフトは、Pythonのライブラリ(XGBoost、LightGBMなど)のほか、これらを内部に使ったクラウドの分析サービスもあります。ただし、いきなり最強の手法を使うより、まず決定木や単純な集計で「基準」をつくり、それより精度を上げたいときに勾配ブースティングを試すのが現実的です。結果は「仮説」として現場の感覚と突き合わせ、検証用データで精度を確かめてから使いましょう。

ご相談

自社のデータで顧客分析や予測を試したい、AIで業務を自走化したい——そうした相談は、AIエージェント自走化プログラムまたはお問い合わせからどうぞ。

AIエージェント自走化プログラム お問い合わせ

富田 良治

富田 良治(とみた よしはる)

TITC合同会社 代表社員

AI経営コンサルタント。中小企業診断士・ITストラテジスト。元ITエンジニアで駄菓子屋オーナー。 プロフィールを見る