決定木とは?意味・仕組みと木のモデルを扱った論文(2026年11月時点)
決定木(けっていぎ)
Decision tree / ディシジョンツリー
決定木とは、主に「はい」か「いいえ」で答える質問を木の形に重ね、条件をたどった先の葉の値で分類や数値の予測をする機械学習の手法のこと。正解つきの例から学ぶ教師あり学習の一つ。
要するに
- 各節で不純度が最も下がる条件を選び、データを2つに分けることをくり返して木を育てる
- 深くしすぎると過学習するので、深さの上限、葉の最小の例の数、剪定で育ちすぎを抑える
- ランダムフォレストや XGBoost などの勾配ブースティングは、多数の決定木を組み合わせる
最終確認

決定木を使うモデルにかかわる論文
目次8
ひとことで言うと
決定木は、ふつうは「はい」か「いいえ」で答える質問を木の形に重ねて、分類や数値の予測をする機械学習の手法だ。Google の講座「Decision Forests」は、決定木を、木の形に階層的に並べた「質問」の集まりからなるモデルと説明している。正解つきの例から学ぶ教師あり学習の一つで、scikit-learn(Python の機械学習のライブラリ)は分類と回帰(数値の予測)の両方に使える方法としている。
講座には、動物の種類を当てる木の例がある。「脚は3本以上か」に「はい」、「目は3つ以上か」に「いいえ」と進むと、予測は「犬」になる。
仕組み
決定木は次の流れで作られ、使われる。
- 根(いちばん上の節)に、学習用のデータをすべて置く。
- 節ごとに考えられる条件をすべて採点し、点がいちばん高い条件でデータを2つに分ける。数値の特徴量なら「x が28以上か」のような条件になる。
- 分けた先の節でも、同じことをくり返す。
- よい条件が見つからない節は葉(それ以上分けない節)になる。分類では、そこに集まった例で最も代表的なラベルが葉の予測になる。
- 予測するときは、新しいデータを根から条件に従って下へ送り、たどり着いた葉の値を答えにする。
Google の講座によると、最適な決定木を求める問題は NP 困難で、ふつうは各節でその場の最善の条件を選ぶ貪欲な方法で木を育てる。scikit-learn は、この方法では全体として最適な木が得られる保証はないとしている。
分け方の良し悪しは不純度(1つの節にちがうラベルがどれだけ混ざっているか)で測る。混ざり具合を表す量の1つがエントロピーで、Google の講座によると、2つのラベルが半々のときに最大、1種類だけのときに0になる。情報利得は、分ける前のエントロピーから、分けた後の2つの組のエントロピーを例の数で重みづけした和を引いた差で、大きいほどよい分け方になる。ジニ不純度(Gini)は、節の中の各クラスの割合から計算する不純度だ。Google の講座は、情報利得と Gini を分類でよく使うものとして挙げている。
数値の予測では、平均二乗誤差などを使う。講座によると、数値の特徴量をしきい値で分ける方法は値の順番だけを見るので、学習の前に特徴量の正規化や尺度の調整をしなくてよい。
表で見る最新の状況
上の論文の欄は、TRAIL が解説した論文から、決定木を使うモデルにかかわる2本を古い順に並べたものだ。確認日は2026年11月6日。
2017年6月の CatBoost は、決定木の勾配ブースティングで、商品名や地域のようなカテゴリの値をどう扱うかを検討した。カテゴリごとの目的変数の平均を特徴量にすると、その行の正解が数値に紛れ込む。論文は行をランダムな順番に並べ、その行より前の例だけで統計を計算する方法で対処した。TRAIL の解説によると、9つの公開データセットでは、損失と誤り率が LightGBM と XGBoost より低いか同程度の値だった。ただし著者らは、3つのデータセットで統計的な有意差を確認できなかったと記している。
2025年11月の TabPFN-2.5 は、表のデータ用の基盤モデルだ。比較の相手には、XGBoost や CatBoost などの木のモデルが入っている。TRAIL の解説によると、公開のベンチマーク TabArena-Lite のうち1万行・500特徴量までの分類では、初期設定の TabPFN-2.5 が4時間調整した AutoGluon 1.4 より良い集計結果になった。回帰では、60通りの調整のあとに AutoGluon を上回ったと報告している。公開モデルのライセンスは、商用や本番での利用を禁じている。
決定木とランダムフォレスト・勾配ブースティングの違い
| 決定木 | ランダムフォレスト | 勾配ブースティング | |
|---|---|---|---|
| 木の数 | 1本 | 多数 | 多数 |
| 木の作り方 | 深さの上限や剪定で育ちすぎを抑える | 例の抜き出し方と、節ごとに試す特徴量をランダムに変え、剪定せずに育てる | 前の木までの誤差を予測する木を、順に1本ずつ足す |
| 予測のまとめ方 | たどり着いた葉の値 | 各木の予測の多数決や平均 | 各木の出力の和(2値の分類では、和をさらに関数に通す) |
| 木の深さ | 調整する | 深い | 浅い(Google の TF-DF の既定は深さ6) |
| 過学習 | 起きやすい | 木を足しても過学習しない | 起きうるので、検証用のデータで早めに止める |
Google の講座は、ランダムフォレストを最も広く使われる木の組み合わせ方としている。各木は学習用のデータから同じ例を重ねて選んでよい抜き出し方(ブートストラップ)で作った組で学ぶ。scikit-learn によると、ランダムさを入れると木ごとの誤りの結びつきが弱まり、予測を平均すると誤りの一部が打ち消し合う。
勾配ブースティングでは、それまでの木の誤りを次の木が直していく。実装には XGBoost、LightGBM、CatBoost などがある。XGBoost は2016年に Chen と Guestrin が発表した。要旨によると、まばらなデータ向けのアルゴリズムに、キャッシュの使い方やデータの圧縮・分割の工夫を組み合わせ、数十億件を超える例まで扱えるとしている。LightGBM は2017年に Ke らが NIPS で発表し、要旨によると、複数の公開データセットの実験で、従来の勾配ブースティングより学習を最大20倍以上速くし、精度はほぼ同じだった。CatBoost は2017年に Prokhorenkova らが発表し、カテゴリの値の扱いと、順序付きブースティングという学習の方法を提案した。
仕事でどう関係するか
表のデータで売上や解約を予測するとき
Google の講座は、表計算のシートや CSV、データベースの表のようなデータには、決定木を組み合わせたモデルを最初に選ぶべきだとしている。2022年の Grinsztajn らの論文は、45のデータセットで深層学習の手法と比べ、1万件ほどの中規模のデータでは XGBoost やランダムフォレストのような木のモデルがなお最高水準だったと報告した。この結論は、2022年時点の手法と中規模のデータについてのものだ。一方、画像や文章のようなデータには、ニューラルネットワークのほうが一般に向く。
外部にモデルの開発を頼むときは、比べる候補と記録してほしい項目を最初に伝えておくとよい。
顧客データで解約を予測するモデルを比べてください。
- 候補は、決定木、ランダムフォレスト、勾配ブースティング(LightGBM など)の3つ
- 検証用のデータでの成績と、学習にかかった時間を表にまとめる
- 決定木は深さの上限を3から始め、成績を見ながら深くする予測の理由を説明する必要があるとき
1本の決定木は条件をたどれば予測の理由を説明できる。scikit-learn は、決定木を中身の見える「ホワイトボックス」のモデルとし、ニューラルネットワークのような中身の見えないモデルでは結果の解釈が難しくなりうるとしている。木は図にして見せられる。どの特徴量が効いたかを示す重要度には偏りがあり、読み方の注意は特徴量のページにまとめている。
深さなどの設定を決めるとき
決定木の深さの上限や葉に残す例の数は、学習の前に人が決めるハイパーパラメータだ。scikit-learn は、まず深さの上限を3にして木の合い方を見てから深くし、葉の最小の例の数は5から試すよう勧めている。木が1段深くなるごとに、木を埋めるのに要る例の数は2倍になる。Google の講座によると、決定木は学習が速いので、交差検証(データを10個などの組に分け、順番に1組を評価に使う方法)で値を選べる。
注意点と限界
決定木は過学習しやすい。Google の講座によると、データに雑音があると、学習用の例をすべて正しく分ける木は、新しいデータでの成績が悪くなる。防ぐには、深さの上限を決める(例:10)、葉に残す例の数に下限を決める、学習のあとで枝を刈る(剪定)の3つの方法があり、組み合わせて使うことも多い。剪定では、葉に置き換えると検証用のデータでの成績がよくなる枝を刈る。
scikit-learn には、葉の数に応じた罰則を加えて木を刈る「最小コスト複雑度剪定」があり、ccp_alpha という値で強さを決める。
決定木は、データが少し違うだけで、まったく別の形の木になることがある。Google の講座は、数件の例を変えるだけで木の構造と解釈がすっかり変わりうるとしている。scikit-learn によると、この不安定さは木を組み合わせると和らぐ。
予測はなめらかでなく階段状になるため、学習したデータの範囲の外を予測する外挿は苦手だ。特定のクラスが多いデータでは木が偏るので、scikit-learn は学習の前にクラスの比率をそろえるよう勧めている。また、scikit-learn の決定木は、1.9.1 の説明の時点では、カテゴリの値をそのまま扱えない。
よくある質問
決定木とは簡単に言うと何か
「はい・いいえ」の質問を重ねて答えを出すモデルだ。条件をたどると、たどり着いた葉の値が予測になる。分類にも数値の予測にも使える。
ジニ不純度と情報利得はどう違うか
どちらも、ある分け方がラベルをどれだけきれいに分けるかを比べる物差しだ。情報利得はエントロピーの減り方で測り、ジニ不純度は各クラスの割合から不純度を計算する。Google の講座は、どちらも分類でよく使うとしている。
決定木の過学習はどう防ぐか
深さの上限、葉の最小の例の数、剪定の3つで防ぐ。どの値がよいかは、検証用のデータか交差検証で確かめる。木を組み合わせるランダムフォレストも、1本の木の過学習を補う。
ランダムフォレストと勾配ブースティングはどちらを使えばよいか
両方を試して比べるのがよい。scikit-learn は、どちらの計算の費用が大きいかはデータと課題によるとし、自分の問題で両方の性能と計算の効率を比べるよう勧めている。scikit-learn によると、勾配ブースティングが作る浅い木は、学習も予測も速い。
画像や文章にも使えるか
使えなくはないが、一般には向かない。Google の講座は、回避策はあるものの、画像や文章のようなデータはニューラルネットワークのほうがうまく扱うとしている。
関連する用語
出典
- 1.10. Decision Trees(scikit-learn 1.9.1)scikit-learn
- 1.11. Ensembles: Gradient boosting, random forests, bagging, voting, stacking(scikit-learn 1.9.1)scikit-learn
- Decision trees(Decision Forests)Google
- Types of conditions(Decision Forests)Google
- Appropriate data for decision forests(Decision Forests)Google
- Growing decision trees(Decision Forests)Google
- Exact splitter for binary classification with numerical features(Decision Forests)Google
- Overfitting and pruning(Decision Forests)Google
- Decision Forests(Decision Forests)Google
- Random forests(Decision Forests)Google
- Gradient Boosted Decision Trees(Decision Forests)Google
- Overfitting, regularization, and early stopping(Decision Forests)Google
- XGBoost: A Scalable Tree Boosting System(arXiv:1603.02754)Tianqi Chen、Carlos Guestrin
- LightGBM: A Highly Efficient Gradient Boosting Decision Tree(NIPS 2017)Guolin Ke ほか
- CatBoost: unbiased boosting with categorical features(arXiv:1706.09516)Liudmila Prokhorenkova ほか
- Why do tree-based models still outperform deep learning on tabular data?(arXiv:2207.08815)Léo Grinsztajn、Edouard Oyallon、Gaël Varoquaux
- 公開
- 執筆
- TRAIL編集部(編集方針)