用語比較
決定木の事前剪定と事後剪定の違い
深さの制限とコスト複雑度剪定(G検定の決定木と過学習)
決定木の剪定(せんてい。枝を刈り込む処理)の2つの違いは木の大きさを抑える時点で、事前剪定は木を育てている途中で止め、事後剪定はいったん育てた木を後から刈り込みます。どちらも訓練データに合わせすぎる過学習を抑える手段です。
G検定では、最大の深さや葉の最小標本数で途中に止めるのが事前剪定、大きく育てた木を評価の指標を見ながら小さくするのが事後剪定と切り分けます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
事前剪定と事後剪定の要点
事前剪定
木を育てる途中で、分割を止める条件を決めておく方法。scikit-learn では、木の最大の深さ(max_depth)や、葉に必要な最小の標本数(min_samples_leaf)などで木の大きさを抑える。公式ドキュメントも、重みに基づく min_weight_fraction_leaf を「事前剪定の基準」と呼んでいる。
事後剪定
木をいったん育ててから、枝を刈り込んで小さくする方法。scikit-learn が実装するのは最小コスト複雑度剪定で、木の誤りの大きさに、葉の数に比例する罰則を足した値 R_α(T)=R(T)+α|T̃| を最小にする部分木を選ぶ。α は 0 以上の複雑さのパラメータで、公式ドキュメントはこの方法を過学習を避けるためのアルゴリズムと説明している。
違いを表で確認
| 比較軸 | 事前剪定 | 事後剪定 |
|---|---|---|
| 木の大きさを抑える時点 | 木を育てている最中 | 木を育て終えた後 |
| 使う手がかり | 深さ・葉の標本数などの、あらかじめ決めた上限や下限 | 木の誤りの大きさと、葉の数に応じた罰則を合わせた値 |
| scikit-learn での代表的な設定 | max_depth、min_samples_leaf、min_samples_split など | ccp_alpha(最小コスト複雑度剪定の α) |
| 育てる木の大きさ | 最初から小さく止めるので、大きな木は作らない | いったん大きな木を作ってから刈り込む |
| 設定値の決め方 | 深さや標本数を、評価を見ながら決める | α を変えながら、刈り込んだ木の評価を見て決める |
| 文中で手がかりになる語 | 深さの制限、分割を止める、葉の最小標本数、育てる前に決める | 枝を刈り込む、大きく育てた木、コスト複雑度、葉の数への罰則 |
G検定の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
決定木が訓練データでは満点なのに、新しいデータで外れる人
公式ドキュメントは、決定木が汎化しにくい過度に複雑な木を作ることがあり、これを過学習と呼ぶと説明します。木を深く育てきると、葉が少数の標本だけを説明するようになります。まず最大の深さか葉の最小標本数で上限を決める事前剪定が、対処の1つです。
深さの上限を決めるのが難しく、先に大きな木を作りたい人
どの深さが適切かが先に分からないなら、大きく育てた木から、評価の悪化が小さい枝を順に刈り込む事後剪定が候補になります。刈り込みの強さは α で調整し、大きくするほど葉の数への罰則が重くなります。
「剪定」と「正則化」を同じものと覚えている人
どちらも過学習を抑える点は共通ですが、剪定は木の枝を減らす操作で、正則化は一般に損失に罰則を足す考え方です。事後剪定の式 R(T)+α|T̃| は、誤りの大きさに葉の数への罰則を足した形なので、正則化に近い見方もできます。枝を刈る操作が剪定、と覚えておくと区別しやすくなります。
具体例で使い分ける
例 1
100件のデータで、葉の最小標本数が木の大きさを抑える
100件の訓練データで、min_samples_leaf=30 を指定して決定木を育てます。
- 葉は、すべて30件以上の標本を持つ必要があります。
- 100件を葉に振り分けるので、葉が4枚だと最低でも 30×4=120 件が必要で、100件では足りません。
- 葉の数は多くても3枚(30×3=90件以上100件以下)に抑えられます。
結論: 葉の最小標本数を上げると、育つ木の葉の数に上限がかかります。小さすぎる値は過学習しやすく、大きすぎる値は木がデータを学べない、と公式ドキュメントも述べます。
例 2
コスト複雑度で、大きな木と刈り込んだ木のどちらが選ばれるか
仮の数値で考えます。葉が5枚の木は、葉の不純度の合計 R(T) が 0.10 です。その木を刈り込んで葉を3枚にした木は、R(T) が 0.16 に増えます。
- α=0.02 のとき、5枚の木は 0.10+0.02×5=0.20、3枚の木は 0.16+0.02×3=0.22 で、5枚の木のほうが小さくなります。
- α=0.05 のとき、5枚の木は 0.10+0.05×5=0.35、3枚の木は 0.16+0.05×3=0.31 で、3枚の木のほうが小さくなります。
- 両者が等しくなる α は、0.10+5α=0.16+3α を解いて α=0.03 です。
結論: α が小さいうちは大きな木、α が 0.03 を超えると刈り込んだ木が選ばれます。α は、葉を1枚減らすために許せる誤りの増え方の目安として読めます。
例 3
育てる前に止めるか、育てた後に刈るかを決める
決定木の深さに見当がつく場合と、つかない場合を比べます。
- 深さの目安がある(たとえば説明しやすさのために3段までにしたい)なら、max_depth で最初から止められます。公式ドキュメントは、最初は max_depth=3 で木の当てはまりを確かめ、そこから深さを増やす進め方を勧めています。
- 目安がないなら、大きな木を作ってから α を変えて刈り込み、新しいデータでの成績が良い木を選びます。
結論: 上限を先に決められるなら事前剪定、決められないなら事後剪定、という順で考えます。
問題文から答えを選ぶ手順
- 1
木をいつ止めるかを見る
育てている最中に止める条件を使うなら事前剪定、育て終えた後に枝を刈るなら事後剪定です。
- 2
使う手がかりを見る
深さや葉の標本数のような、あらかじめ決めた上限や下限なら事前剪定です。誤りの大きさと葉の数の罰則を合わせた値なら事後剪定です。
- 3
設定の名前で確かめる
max_depth や min_samples_leaf は事前剪定、ccp_alpha は事後剪定の設定です。
- 4
目的を確かめる
どちらも決定木の過学習を抑えるための手段です。木の予測精度を上げるというより、新しいデータへの当てはまりを保つことが目的です。
試験での見分け方
- 1木を育てる途中で止めるのが事前剪定、育てた後で枝を刈るのが事後剪定。
- 2max_depth と min_samples_leaf は事前剪定、ccp_alpha は事後剪定(最小コスト複雑度剪定)の設定。
- 3事後剪定の式は R(T)+α|T̃|。α が大きいほど、葉の数への罰則が重くなる。
- 4どちらも決定木の過学習を抑える手段で、目的は新しいデータへの当てはまりを保つこと。
- 5深さの上限を先に決められるなら事前剪定、決められないなら事後剪定を検討する。
誤答しやすい選択肢
剪定は、育てた木を刈る操作だけだと考える
修正: 木を育てる途中で止める事前剪定もあります。公式ドキュメントは、重みに基づく min_weight_fraction_leaf を「事前剪定の基準」と呼び、深さや葉の標本数の上限も同じ目的の仕組みとして並べています。
α を大きくすると、木が大きくなると考える
修正: R_α(T)=R(T)+α|T̃| は、葉の数に α を掛けて罰則にします。α が大きいほど葉が多い木は不利になり、刈り込みが進みます。
剪定すれば訓練データの誤りも減ると考える
修正: 刈り込むと、訓練データでの誤りは同じか増えます。狙いは、新しいデータで外れにくい木にすることです。
事前剪定と事後剪定のどちらか一方しか使えないと考える
修正: 2つは排他ではなく、木を止める時点が違う別の手段です。整理するときは、どちらがどの時点に当たるかを分けて覚えます。
確認問題
Q1決定木を育てる途中で、最大の深さを3に制限することを何という?
答え: 事前剪定
木を育てている最中に大きさを抑えるので、事前剪定です。
Q2いったん大きく育てた決定木から、枝を刈り込んで小さくすることを何という?
答え: 事後剪定
木を育て終えた後で刈り込むので、事後剪定です。scikit-learn の最小コスト複雑度剪定がその例です。
Q3最小コスト複雑度剪定で、α を大きくするとどうなる?
答え: 葉の数への罰則が重くなり、刈り込みが進む
R_α(T)=R(T)+α|T̃| の第2項が葉の数に比例するため、α が大きいほど葉が多い木は不利になります。
Q4100件のデータで min_samples_leaf=30 とすると、葉は最大で何枚?
答え: 3枚
すべての葉に30件以上が必要で、4枚だと120件以上が要るため、100件では3枚までです。
到達チェック
- 事前剪定と事後剪定が、木を止める時点で分かれると説明できる
- max_depth と min_samples_leaf、ccp_alpha がどちらの剪定の設定か言える
- R(T)+α|T̃| の α が大きいほど刈り込みが進む理由を説明できる
- 剪定の目的が、訓練データへの合わせすぎを抑えることだと言える
関連ページで確認する
同じ資格で次に知りたいこと
- L2正則化と重み減衰(weight decay)の違い|SGDでは同じでAdamでは違う
L2正則化と重み減衰(weight decay)の違いを、損失に罰則を足す方法と重みを直接縮める方法の更新式、SGDでは等価になる条件、Adamでは等価にならない理由、AdamWの論文の数値まで、G検定の正則化の範囲と合わせて整理します。
- 事前分布と事後分布の違い|データを見る前の評価と、見たあとに改めた評価(ベイズ更新・G検定)
事前分布(データを見る前のパラメータの評価)と事後分布(ベイズの公式で改めた評価)の違いを、いつの評価か・何を使うか・何が計算できるかで整理。コイン投げの更新の数値例と確認問題つき。G検定のベイズ推定の補足。
- VAEのエンコーダとデコーダの違い|分布を推定する側と生成する側
VAEのエンコーダとデコーダの違いを、入出力、確率分布、学習・再構成・生成の3場面で整理。qφ(z|x)とpθ(x|z)、再パラメータ化、Transformerとの用語の違いをG検定向けに解説します。
よくある質問
Q事前剪定と事後剪定は何が違う?
木の大きさを抑える時点が違います。事前剪定は木を育てている途中で止める方法、事後剪定は育てた木を後から刈り込む方法です。どちらも過学習を抑えるために使います。
Qmax_depth は事前剪定ですか?
はい。木を育てる際に最大の深さを決める設定で、木の大きさを抑えて過学習を避けるために使います。scikit-learn の公式ドキュメントは、木の最大の深さを制御することを、過学習を防ぐ方法の1つに挙げています。
Qccp_alpha とは?
scikit-learn で最小コスト複雑度剪定を行うときの α の指定です。公式ドキュメントによれば、枝ごとの実効的な α が ccp_alpha より大きくなるまで、最も弱い枝から刈り込みます。
QG検定に剪定は出ますか?
このサイトが登録した出題範囲の項目には、決定木と過学習があります。剪定は決定木の過学習への対処として、この2つの項目をつなぐ考え方です。出題の形式や範囲は、受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
