次の DEMO を見にいく

*当ブログではアフェリエイト広告を利用しています。

AI基礎・概要

決定木とは?仕組み・ジニ不純度・剪定までやさしく解説【機械学習入門】

決定木のアイキャッチ画像。ルートノードからYes/Noで枝分かれする決定木の図解とロボットキャラクターのルミィのイラスト
momeq

📌「機械学習の手法って結局どれもブラックボックスで、何でその答えになったのか説明できないんでしょ?」——そんなイメージを持っている人にこそ知ってほしいのが「決定木」です。決定木は、データを「YES/NO」の質問で枝分かれさせていく、人間の思考プロセスにいちばん近い機械学習手法。仕組みがシンプルで結果の根拠もはっきり示せるため、ビジネスの現場で今も第一線で使われ続けています。この記事では、決定木の仕組み・ジニ不純度・剪定・実務での使いどころまで、初心者向けにやさしく解説します。

ルミィ
ルミィ

決定木って、フローチャートを描く感覚に近いんだよね。だから「なんでAIってそう判断したの?」って聞かれても、ちゃんと説明できるのが強みなんだ~

🌳 決定木とは何か|イメージでつかむ

決定木(けっていぎ、Decision Tree)とは、データをYES/NOの質問で枝分かれさせていき、最終的に「このデータはこのクラス」と判定する手法です。たとえば「顧客が商品を買うかどうか」を予測したいとき、ツリーは次のように枝分かれしていきます。

「年齢は30歳以上?」→YESなら「年収500万円以上?」→YESなら「購入する」、NOなら「購入しない」——というふうに、質問を重ねていくうちに答えにたどり着くイメージです。この「質問と枝分かれの連鎖」が木のような構造に見えるため、決定木と呼ばれます。

📊 決定木は「分類」も「予測」もできる

決定木の強みのひとつは、ひとつの手法で「分類」と「数値予測」の両方ができることです。

「購入する/しない」「スパム/スパムでない」のようにクラスを予測するときは分類木、「売上はいくらか」「家賃はいくらか」のように数値を予測するときは回帰木と呼びます。どちらの場合も、「データを枝分かれさせて分けていく」という基本の考え方は同じです。この汎用性の高さが、決定木がビジネスで広く使われる理由のひとつになっています。

🧪 ジニ不純度|「どこで枝分かれさせるか」を決める指標

決定木の中身でいちばんよく使われるのがジニ不純度(Gini Impurity)です。「枝分かれの基準(どの変数で・どの値で分けるか)を決めるためのものさし」と考えてください。

ジニ不純度はとてもシンプルで、「そのノード(枝先)に含まれるデータが、どれくらい混ざっているか」を0〜0.5の値で表します。たとえば「YESばかり」「NOばかり」のように1種類しかない状態ならジニ不純度=0(純粋)、半々に混ざっている状態なら最大値(2クラスなら0.5)になります。

計算式は次の通りです。クラスiの割合をpiとすると:

Gini = 1 − Σ pi²

決定木は枝分かれするたびに「分けたあとのジニ不純度がいちばん下がる質問はどれか?」を全変数から探して、いちばん効率よくデータを純粋にできる質問を選びます。これを葉が十分に純粋になるか、停止条件に達するまで繰り返すのが学習のしくみです。

✅ 決定木のメリット

決定木が長く愛されているのは、次のようなメリットがあるからです。

ひとつ目は、結果が人間にとってわかりやすいこと。判定の過程を「この質問にこう答えたから、この結論になった」と説明できます。ブラックボックスになりがちなディープラーニングとは対照的で、この「説明可能性」は金融や医療など、説明責任が重視される分野で特に重宝されます。

ふたつ目は、データの前処理がシンプルで済むこと。線形回帰のようにデータのスケールを揃える必要がほとんどなく、カテゴリデータもそのまま扱えるため、最初の一歩を踏み出しやすい手法です。

みっつ目は、説明変数の重要度がわかること。「どの変数が予測に効いているか」がスコアとして出てくるため、ビジネス上の示唆を得やすくなります。

よっつ目は、非線形な関係も扱えること。変数間の関係が直線では表せないようなデータでも、枝分かれを重ねることで柔軟にフィットしてくれます。

⚠️ 決定木のデメリット

一方で、決定木には次のような弱点もあります。

ひとつ目は、過学習しやすいこと。枝分かれをどこまでも続けられるため、学習データに合わせすぎて未知データでは精度が下がる、という現象が起きやすくなります。これを防ぐには、後述する剪定(せんてい)でモデルの複雑さを適度に抑える必要があります。

ふたつ目は、データのブレに弱いこと。学習データが少し変わっただけで木の構造が大きく変わってしまう、という不安定さがあります。

みっつ目は、単体だと予測精度に限界があること。これらの弱点を補うために、「ランダムフォレスト」や「XGBoost」など、決定木をたくさん組み合わせる手法が登場しました。これらは現代のビジネスで最もよく使われる機械学習手法のひとつになっています。

✂️ 剪定(せんてい)|過学習を防ぐ重要テクニック

決定木の過学習を防ぐためのもっとも基本的なテクニックが剪定(pruning)です。木が伸びすぎないように、適度なところで枝分かれを止めたり、できあがった枝を切り戻したりする操作のことを指します。剪定には大きく2種類のアプローチがあります。

🌱 事前剪定(pre-pruning)

木が育ちすぎる前に「これ以上は枝分かれさせない」というルールを最初から設定する方法です。scikit-learnのDecisionTreeClassifierでは、次のようなパラメータで事前剪定をコントロールします。

  • max_depth:木の最大の深さ(例:5にすると、最大5階層までしか枝分かれしない)
  • min_samples_split:枝分かれを試みる最低サンプル数
  • min_samples_leaf:葉(最終ノード)に最低限残すサンプル数
  • max_leaf_nodes:作る葉の数の上限

🌿 事後剪定(post-pruning)

いったん木を最後まで育ててから、「重要度の低い枝」を後から切り戻す方法です。scikit-learnではコスト複雑度剪定(CCP, Cost Complexity Pruning)が用意されており、ccp_alphaというパラメータで切り戻しの強さを調整できます。

💼 どんな場面で使われるか

ビジネスの具体例をいくつか見てみましょう。金融での信用スコアリング(この顧客に融資して大丈夫か)、医療での診断補助(この症状はどの病気の可能性が高いか)、マーケティングでの顧客セグメント・購入予測・解約予測、製造業での不良品検知など、活用範囲は非常に幅広いです。

特に「なぜそう判定したのかを、現場の人に説明したい」というケースで決定木は強い味方になります。

ルミィ
ルミィ

「精度が高い」だけじゃなくて、「説明できる」ってビジネスではすごく大事なんだよね。お客さんに理由を聞かれたとき、ちゃんと答えられるのが決定木のいいところ!

🌲 ランダムフォレストとの関係

決定木を学ぶと、次に必ず出てくるのがランダムフォレストです。ランダムフォレストは、「たくさんの決定木を作って、多数決で結論を出す」という手法。一本の決定木の弱点(不安定さ・過学習)を、複数の木を組み合わせることで補い、精度と安定性を一気に引き上げています。

さらにその発展型として、Kaggleコンペで上位入賞の常連となっているXGBoostLightGBMといった手法もあります。つまり決定木を押さえることは、現代の機械学習の主要手法を理解するための、もっとも重要な一歩になるのです。

📚 関連記事と次のステップ

決定木の前段階として、回帰の基礎を押さえておくと理解がより深まります。また、分類タスクの定番であるロジスティック回帰も決定木と並んで重要な手法です。

▶ 関連記事:【完全ガイド】線形回帰分析を学ぶ全ステップ

▶ 関連記事:ロジスティック回帰とは?線形回帰との違いを初心者向けに解説

今後「AIの歩き方」では、決定木シリーズとして以下を順次公開していく予定です。

  • Python(scikit-learn)で決定木を実装する
  • 決定木の可視化(graphvizやplot_tree)
  • ランダムフォレスト入門
  • XGBoostとLightGBMの違い
  • 特徴量重要度の見方

📖 まとめ|「わかりやすい」が最大の武器

決定木は、機械学習の手法のなかでも「なぜそういう結論になったのか」が人間にわかりやすいという、大きな強みを持っています。そのわかりやすさは、ビジネスでモデルを実際に使ううえで極めて重要な価値です。

さらに、この決定木をベースにして、ランダムフォレストやXGBoostといった現代のトップクラスの手法が発展しています。決定木を押さえることは、その先の手法を理解するための土台になります。

大事なポイントを最後にもう一度整理しておきましょう。

  • 決定木はYES/NOの質問を重ねて結論にたどり着く手法
  • 枝分かれの基準はジニ不純度でデータの「混ざり具合」を測って決める
  • 分類にも数値予測にも使える汎用性の高さが魅力
  • 最大の強みは「説明できる」こと。金融・医療・マーケで重宝される
  • 弱点は過学習不安定さ。剪定とアンサンブルで克服できる
  • ランダムフォレストやXGBoostへの登竜門になる
ルミィ
ルミィ

まずは「質問を重ねて枝分かれしていく」っていうシンプルなイメージをつかめればOK!次はPythonで実際に動かしてみたり、ランダムフォレストに進んでみたりしよう~

ルミィ
ルミィ
AIナビゲーター
ChatGPTにハマってから毎日AIを触り続けるブログ運営者。最新AIツールを初心者目線で発信しています。YouTubeでも解説動画を投稿中!
記事URLをコピーしました