機械学習の具体的手法
G検定の決定木とジニ係数・情報利得
G検定のシラバスには、機械学習の代表的な手法として決定木が並んでいます。決定木は、データを「はい・いいえ」の質問で順に分けていく手法です。覚えるのは、質問の良さを不純度の減少で測り、減少が最大の質問から選ぶという流れです。
このページは、10人のデータでジニ係数とエントロピーを計算し、良い質問と悪い質問の差を数字で確かめます。
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- 不純度 = ノードの中にクラスがどれだけ混ざっているかの尺度で、全員が同じクラスなら0
- ジニ係数 = 1 − (各クラスの割合の2乗の合計)
- 決定木の分割 = 分けたあとの不純度(人数で重みづけ)が、分ける前より最も下がる質問を選ぶ
- 情報利得 = 分ける前のエントロピー − 分けたあとのエントロピー(重みづけ)
- 深く育てすぎると過学習になるため、深さや葉の人数で止める
不純度の計算
scikit-learnの公式ドキュメントは、ノードmの中でクラスkが占める割合をp_mkとして、分類の不純度を2つ挙げています。ジニ係数は Σp_mk(1−p_mk)、エントロピーは −Σp_mk log(p_mk) です。ジニ係数は、割合の2乗の合計を1から引いた値と同じになります。
10人の客のうち、商品を購入した人が6人、しなかった人が4人いるとします(説明用の架空の例です)。この10人を、2つの質問で分けて比べます。分割Xは「キャンペーンメールを開いたか」で、開いた5人は全員が購入、開かなかった5人は1人だけが購入しました。分割Yは「30歳未満か」で、30歳未満の6人は4人が購入、30歳以上の4人は2人が購入しました。
| ノード | ジニ係数 | エントロピー(底2) |
|---|---|---|
| 親ノード(購入6人・非購入4人) | 1−(0.6²+0.4²)=0.48 | 約0.971 |
| 分割Xの左(5人: 購入5・非購入0) | 0 | 0 |
| 分割Xの右(5人: 購入1・非購入4) | 1−(0.2²+0.8²)=0.32 | 約0.722 |
| 分割Yの左(6人: 購入4・非購入2) | 1−((2/3)²+(1/3)²)≒0.444 | 約0.918 |
| 分割Yの右(4人: 購入2・非購入2) | 1−(0.5²+0.5²)=0.5 | 1 |
全員が同じクラスのノードは0になり、半々に混ざったノードが最大になります。2クラスの場合、ジニ係数の最大は0.5、底2のエントロピーの最大は1です。エントロピーの対数の底を変えると全体が定数倍されるだけなので、分割の優劣の順は変わりません。用語はランダムフォレストの用語集にもあります。
2つの分割を比べる
分けたあとの不純度は、各ノードの不純度を、そのノードの人数の割合で重みづけして足します。分ける前の不純度との差が、分割の良さです。
| 分割 | 分割後のジニ係数(重みづけ) | ジニ係数の減少 | 情報利得 |
|---|---|---|---|
| 分割X(メールを開いたか) | (5÷10)×0+(5÷10)×0.32=0.16 | 0.48−0.16=0.32 | 0.971−0.361≒0.610 |
| 分割Y(30歳未満か) | (6÷10)×0.444+(4÷10)×0.5≒0.467 | 0.48−0.467≒0.013 | 0.971−0.951≒0.020 |
分割Xは不純度を0.32下げ、分割Yは約0.013しか下げないため、決定木は分割Xを選びます。情報利得でも、0.610と0.020で同じ結論です。分割Xの左ノードは全員が購入で、不純度が0になっています。公式ドキュメントによると、決定木は不純度の減少が最大の分割を選び、分けた区画それぞれで同じ手順を繰り返します。複数の木を組み合わせる方法は決定木とランダムフォレストの違いのページにあります。
どこで分割を止めるか
公式ドキュメントは、分割を繰り返す手順の止め方として、次の条件を挙げています。
- 木の深さが上限(max_depth)に達した
- ノードのサンプル数が、分割に必要な最小数(min_samples_split)より少ない
- 分割による不純度の減少が、下限(min_impurity_decrease)より小さい
止めずに育てると、すべての葉が1人ずつになるまで分かれ、学習データにはほぼ合う木ができます。公式ドキュメントはこれを、複雑すぎて汎化しない過学習と呼び、枝刈り、葉の最小サンプル数、木の最大の深さの指定で防ぐと述べています。もう1つの弱点として、データが少し変わるだけで全く違う木ができる不安定さも挙げ、アンサンブルの中で使うと緩和できるとしています。過学習そのものは過学習と正則化のページ、複数のモデルを組み合わせる考え方はアンサンブル学習の用語集で確かめられます。
間違えやすい点
ジニ係数とエントロピーの違いを、表にします。表はこのページでの整理です。
| 観点 | ジニ係数 | エントロピー |
|---|---|---|
| 式 | 1−Σ(割合の2乗) | −Σ(割合×対数) |
| 全員が同じクラスのとき | 0 | 0 |
| 2クラスが半々のとき | 0.5 | 1(底2のとき) |
| 分割の良さ | 不純度の減少が大きいほど良い | 情報利得が大きいほど良い |
- 不純度が大きいほど良い分割とする: 良いのは、分割後の不純度が小さくなる(減少が大きい)分割です。
- 人数を無視して平均する: 例の分割Yは、(0.444+0.5)÷2ではなく、人数で重みづけして約0.467です。
- 深いほど精度が上がるとする: 学習データには合っても、新しいデータには合わない過学習になります。
「不純度の減少」「情報利得」は分割の選び方、「枝刈り」「最大の深さ」は過学習の防ぎ方と、語を分けて覚えます。
問題文から読み取る
問題文の言い回しから、答えを絞れます。このページの整理から導いた読み方で、出題を予想するものではありません。
- 「データを質問で順に分けていく」とあれば、決定木
- 「クラスの混ざり具合を表す」とあれば、不純度(ジニ係数・エントロピー)
- 「分割の前後でエントロピーがどれだけ減ったか」とあれば、情報利得
- 「学習データには合うが、新しいデータに合わない」とあれば、過学習
- 「データが少し変わると木の形が大きく変わる」とあれば、決定木の不安定さ
G検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
決定木は、どの分割を選びますか?
scikit-learnの公式ドキュメントは、不純度の減少が最大になる分割を選び、分けた区画ごとに同じ手順を繰り返すと説明しています。このページの例では、不純度の減少が0.32の分割Xが、0.013の分割Yより選ばれます。
ジニ係数とエントロピーで、選ばれる分割は変わりますか?
このページの例では、どちらも分割Xが選ばれます。一般には、尺度によって選ばれる分割が変わる場合もあります。公式ドキュメントは、2つの尺度を並べて示しています。
決定木はどこまで深く育てればよいですか?
深ければよいわけではありません。公式ドキュメントは、複雑すぎる木は汎化しない過学習になると述べ、枝刈り、葉の最小サンプル数、木の最大の深さの指定で防ぐとしています。
決定木の弱点は、ランダムフォレストでどう補いますか?
公式ドキュメントは、データの小さな変化で全く違う木ができる不安定さを、決定木をアンサンブルの中で使うことで緩和できると述べています。複数の木を組み合わせるランダムフォレストは、その代表的な手法です。
