BLOG · AI入門・機械学習
「前の木が間違えたところを、次の小さな木が直す」を積み重ねる仕組みを、動かして確かめる
勾配ブースティング(こうばいブースティング)は、小さな決定木を1本ずつ足していき、「前の木たちが間違えたところ」を次の木が直す、という作業を繰り返して予測を磨く手法です。「ダイレクトメール(DM)に反応して購入するお客様か」「解約しそうなお客様か」といった予測で、表形式のデータ(Excelの表のようなデータ)では特に高い精度が出やすいことで知られ、XGBoost(エックスジーブースト)やLightGBM(ライト・ジービーエム)という名前のソフトとして広く使われています。下のデモで、間違いが少しずつ直されていく様子を見てみましょう。
点の一つひとつがお客様です。横軸は「来店回数」、縦軸は「平均購入額」。青い丸(●)は「購入した」、赤いバツ(×)は「購入しなかった」お客様です。背景の濃さは、そのあたりにいるお客様が購入する確率の予測です(青が濃いほど「購入しそう」、赤が濃いほど「しなさそう」)。点の大きさは「いまのモデルが、そのお客様をどれだけ外しているか」を表します。まずは「再生」を押してください。
● 青い丸=購入した × 赤いバツ=購入しなかった / 大きい点ほど、いまのモデルが大きく外している(黄色い輪は特にひどい外れ) / 小さな白抜きの印=テスト用のお客様(学習には使いません)
緑=学習用データの誤り、紫=テスト用データの誤り(学習に使っていない、いわば「本番のお客様」)。黄色の輪は、テスト用の誤りが最小だったラウンドです。
1ラウンド=①間違いの度合いを測る → ②その間違いを当てる小さな木を作る → ③学習率をかけて足し込む、の3段階です。再生中はラウンドが進むほど自動で速くなります。左の図の好きな場所をクリック(タップ)すると、その場所にいるお客様の購入確率が表示されます。
勾配ブースティングは、1ラウンドごとに次の作業をします。
名前の「勾配(こうばい)」は、「誤りの測り方(ロジスティック損失)をいちばん減らす向き」を指します。ここで使う「購入したか − 予測した確率」という差は、ちょうどその向き(損失の勾配の逆向き)に当たります。つまり「間違いを直す木を足す」ことは、「誤りを減らす方向へ少しずつ進む」ことと同じ意味になっています。なお、デモの木の区画ごとの修正量は、「区画内の差の合計 ÷ 区画内の(確率×(1−確率))の合計」という、ニュートン法と呼ばれる1歩の計算で決めています。ざっくり言えば「その区画の平均的な見積もりのズレ」です。
学習率を1.0にすると、1ラウンドで大きく直すぶん、グラフの線が一気に下がりますが、例外的なお客様に振り回されやすくなります。0.05にすると、着実で安定していますが、同じ精度に届くまでに多くのラウンドが要ります。木の深さを1にすると、1本の木は縦か横の線1本だけで区切るので、斜めの境界は階段のような形に少しずつ近づけていきます。深さを3にすると、1本の木でより細かく直せます。
同じ「木をたくさん使う」手法に、決定木の記事でも触れたランダムフォレストがあります。ランダムフォレストは、木をお互い独立に(並列に)たくさん作って、多数決で答えを決めます。勾配ブースティングは、木を1本ずつ順番に(直列に)作り、前の木たちの間違いを見てから次の木を作ります。「みんなで意見を出し合う」のと、「前の人の間違いを直す人を、順にリレーでつなぐ」のとの違いです。
顧客名簿や購買履歴、取引履歴など、行と列の表になっているデータがあれば、「DMに反応して購入する見込みの高いお客様の絞り込み」「解約しそうなお客様の早期発見」「支払いが遅れそうな取引先の見極め」「商品ごとの需要予測」(数値を当てる場合にも使えます)などに使えます。実際のソフトは、Pythonのライブラリ(XGBoost、LightGBMなど)のほか、これらを内部に使ったクラウドの分析サービスもあります。ただし、いきなり最強の手法を使うより、まず決定木や単純な集計で「基準」をつくり、それより精度を上げたいときに勾配ブースティングを試すのが現実的です。結果は「仮説」として現場の感覚と突き合わせ、検証用データで精度を確かめてから使いましょう。
自社のデータで顧客分析や予測を試したい、AIで業務を自走化したい——そうした相談は、AIエージェント自走化プログラムまたはお問い合わせからどうぞ。