定義
YES/NOだけで答える質問ゲームで、正解を当てるために少しずつ質問の範囲を狭めていった経験があるのではないでしょうか。 決定木(ディシジョンツリー/Decision Tree)とは、AIが対象を分類したり結果を予測したりするときに、このように「はい/いいえ」で分かれる基準の質問を繰り返しながら最終的な答えを導き出す機械学習アルゴリズム(コンピューターが規則性を見つけ出す計算手法)です。 一番上の根っこ(ルート)となる質問から始まって条件ごとに枝分かれしていき、一番端の葉(リーフ)で結論を出す形が逆さまの木に似ていることから「決定木」と呼ばれています。
質問ゲームのように答えを絞り込む仕組み
スマートフォンの映画おすすめ診断などを思い浮かべてみてください。「今日はワクワクしたい気分?」に「はい」と答えると、次は「アクション映画が好き?」と質問が続き、最後にはぴったりの映画が画面に表示されます。
決定木もこれとまったく同じ仕組みで動きます。膨大なデータを前にしたコンピューターは、まずデータを一番きれいに2つに分けられる質問を選び出します。例えば迷惑メールを振り分けるときに、「メールの件名に『広告』という文字があるか?」という基準の質問を投げかけて、メールの山を2つに分割するようなイメージです。
こうして分けたグループに、さらに別の詳しい質問を次々と投げかけていきます。質問を1つ通過するごとにごちゃ混ぜだったデータが似たもの同士に整理され、最後の「葉」の段階で「このメールは迷惑メールである」「通常のメールである」という最終的な判断にたどり着きます。
質問の順番を決める秘密
では、コンピューターはどの質問を一番上に置き、どの質問を後に回すのでしょうか?その秘密は、データの「不純度(どれくらい混ざり合っているか)」を減らす計算にあります。
赤いビー玉と青いビー玉が半分ずつ混ざった袋は、中身がごちゃごちゃした(不純度が高い)状態です。ここで完璧な質問を1つ投げかけて、赤いビー玉の袋と青いビー玉の袋にきれいに分けられたら、ごちゃごちゃ感は一気にゼロになります。コンピューターは、このようにごちゃ混ぜ感を最も減らしてくれる質問を最初の質問として選びます。
もう少し専門的に言うと、このプロセスを「情報利得」を最大化すると表現します。コンピューターは数式を使って質問によってデータがどれくらい整頓されるかを数値化し、各段階でその瞬間に一番データをきれいに分けてくれる質問を1つずつ選びながら、質問の木を自ら作り上げていきます。そのため、完成した木全体が常に最も効率的であるとは限りません。
直感的にわかる強みと過学習の落とし穴
決定木の最大の強みは、なんといっても「説明のわかりやすさ(透明性)」です。複雑なニューラルネットワーク(深層学習)は、なぜその結論に至ったのか中身を覗くのが難しく、よくブラックボックスと呼ばれます。一方で決定木は、どんな質問とステップを経て答えが出たのかが明確な地図のように見えるため、人間が判断プロセスを一目で理解できます。
しかし、質問の木を細かく深く作りすぎると大きな落とし穴にはまります。ささいな特徴まですべて言い当てようと質問をつなげすぎると、手元の練習用データには100点満点でも、未知の新しいデータに出会うと見当違いな答えを出してしまう過学習(オーバーフィッティング)という現象が起きてしまいます。
これは、問題集の数字や誤植まで丸暗記してしまったせいで、本番のテストで数字が少し変わっただけで解けなくなってしまう生徒のようなものです。そのため実際の開発現場では、不要な枝を切り落とす「枝刈り」を行ったり、たくさんの決定木の判断を集めて総合する「ランダムフォレスト」という手法を組み合わせたりして活用されています。
よくある誤解
決定木は枝をできるだけ長く複雑にするほど、常に予測の精度が高くなる。
枝が多すぎると訓練用のデータだけに過剰に適応してしまう「過学習(オーバーフィッティング)」が発生し、実際の新しいデータに出会ったときに逆に間違った答えを出す可能性が高くなります。
日常で出会う場面
メールサービスにおいて、送信元アドレス、特定キーワードの有無、添付ファイルの有無を順にチェックして迷惑メールを自動で振り分ける際に使われます。
ネット通販で、顧客のアクセス時間帯、カートに入れた商品、過去の購入履歴を分析し、特定の商品を購入するかどうかを予測する際に活用されます。
つまり ひとことで
決定木は、データを最もきれいに分類できる質問を順番に繰り返しながら答えを導き出すAIアルゴリズムです。