決定木は、とても人間らしいAI。
なぜなら、考え方がそっくりだからです。
たとえば、朝。
○雨が降ってる?
→ はい → 傘を持つ
→ いいえ → そのまま出る
○寒い?
→ はい → コートを着る
→ いいえ → 軽装
こんなふうに、「もし〇〇なら、△△」を、順番にたどっていく。
これが、決定木。
データを見て、「まず、ここで分けよう」「次は、この条件で分けよう」と枝分かれさせていく。
最初は一本の幹。そこから枝が伸び、さらに枝分かれして、最後に「葉」にたどり着く。
その葉に書いてあるのが、答えです。
年齢は30歳以上?
├─ はい
│ └─ 年収は600万円以上?
│ ├─ はい
│ │ └─ 過去に購入歴はある?
│ │ ├─ はい → 購入しそう
│ │ └─ いいえ → 迷いゾーン
│ └─ いいえ → 購入しなさそう
└─ いいえ → 購入しなさそう
そんな質問の連なりで、「この人は買いそう」「この人は買わなそう」を決める。
決定木のいいところは、仕組みが直感的、人間が見ても理解しやすい、なぜその判断になったか説明できるという点。
ビジネスでよく使われる理由もここ。
でも弱点もあります。
枝を伸ばしすぎると、細かい例外に反応しすぎてしまう。
これを「過学習」といいます。決定木は過学習をしやすい機械学習です。
決定木は、とても分かりやすいです。
それがゆえに、ときどき一つの木だけに頼りすぎてしまいます。
細かいデータに引っ張られて、現実より思い込みの強い答えを出してしまうことがあるのです。
これが、過学習。
そこで生まれた考え方が、アンサンブル学習器。
アンサンブル学習器は、ひとつのモデルに任せるのではなく、複数のモデルを組み合わせて判断する方法です。
みんなの意見を集めて、平均や多数決で答えを決めます。
こうすることで、偏った判断を減らせる、ブレにくくなる、過学習を起こしにくくなる。
つまり、「賢さ」より「安定感」を大切にしています。
決定木の弱点を、チームワークで補う発想です。
この代表的な手法が、バギングとブースティングです。
◆バギング…同時に考えて平均する
これは、同じ元データからランダムに抜き出したサンプルで、たくさんのモデルを同時に作る方法です。
それぞれ独立して考えて、最後に多数決や平均を取ります。
目的はシンプルで、判断のばらつきを減らし、安定した答えを出すのです。
誰かの極端な意見を、全体の平均でやさしくならします。
過学習への対策として、とても相性がいいです。
◆ブースティング…失敗を引き継いで成長する
こちらは少し違って、モデルを順番に作っていきます。
前のモデルが間違えたデータを、次のモデルが重点的に学びます。
失敗をバトンのようにつなぎながら、少しずつ精度を高めていきます。
精度はとても高くなるけれど、やりすぎると逆に過学習しやすい一面もあります。
アンサンブル学習器→複数モデルで判断して過学習を防ぐ
バギング→同時に学んで平均を取る(安定重視)
ブースティング→ 間違いを引き継いで順番に学ぶ(精度重視)
アンサンブル学習器の中でも、とくに有名なのがランダムフォレスト。
これは、たくさんの決定木を育てて、最後に多数決で答えを決めるモデルです。
まさに、バギングの代表的手段。
一本の決定木だけだと、ちょっとしたクセや偶然に引っ張られてしまいます。
でも森になると、誰かの思い込みは薄まり、全体として安定した判断になる。過学習しにくくなる、という強みがあります。
ここで大切なのが、ブーストラップ法。
ブーストラップ法は、元のデータから、ランダムに「復元あり」でサンプルを取り直すという方法。
「復元あり」というのは、同じデータが何回も選ばれることもあれば、選ばれないデータもある、ということ。
こうして作られた、少しずつ違うデータセットを使って、たくさんの決定木を育てます。
ブーストラップ法は、同じ記憶から、少しずつ違う経験を作る魔法。
だからそれぞれの木は、見ているデータが少し違う。育ち方も少し違う……。
結果として、同じ問題でも、微妙に違う意見を持つ木たちが生まれます。
その違いこそが、ランダムフォレストの強さなのです。
ブースティングの中でも、とくに有名で実力派なのが、勾配ブースティング。
勾配ブースティングは、モデルをひとつずつ順番に育てながら、前のモデルの「間違い」を次のモデルが引き継いで学んでいきます。
でも、ただ間違いを見るだけじゃありません。
「どこで、どれくらいズレたか」……そのズレ(誤差)を数値として捉えて、それを小さくする方向へ、少しずつ修正していくのです。
この「ズレを減らす方向」を教えてくれるのが、勾配。
だから名前が、勾配ブースティングといいます。
勾配ブースティングは、間違いの方向を感じ取りながら、少しずつ良くなっていくAIです。
一気に完璧を目指さず、小さな失敗を見て、そこを直して、また次へ、という、静かな積み重ね。
とても精度が高く、予測、分類、ランキングなど、実務の現場でも大活躍しています。(XGBoostやLightGBMも、この仲間です)
ただし、精度が高いぶん、パラメータ調整が難しい、やりすぎると過学習しやすいという、ちょっと職人気質な一面もあります。