🎓 レベル:標準 | 重要度:B(重要)
📎 前提:相互情報量 | 関連:機械学習(決定木・特徴選択)
要点(BLUF)
- 決定木の分割基準 情報利得(information gain) は、特徴 とラベル の 相互情報量 そのもの:
- 「その特徴で分けると、ラベルの不確かさがどれだけ減るか」。利得が大きい特徴ほどラベルをよく説明し、決定木は各ノードで利得最大の特徴を選んで分割します。
- 特徴選択のフィルタ法(相互情報量で特徴をランク付け)も同じ原理。決定木の構築・特徴選択の実装は機械学習分野へ。
1. 情報利得=相互情報量
ラベル の不確かさは 。特徴 の値で場合分けすると、残る不確かさは条件付きエントロピー 。その減り分が情報利得です:
これは 相互情報量 の定義そのもの。(独立)なら特徴はラベルについて何も教えず、( が を完全決定)なら分割でラベルが確定します。決定木は各ノードで全特徴の情報利得を計算し、最大の特徴で分割して、子ノードで再帰します。
2. コード:情報利得で特徴を選ぶ(底2, bit)
「外出するか」を天気・風の2特徴から予測する小データで、各特徴の情報利得を計算し、利得最大の特徴が選ばれることを確かめます。
import numpy as np
# 情報利得 IG = I(特徴;ラベル) = H(ラベル) - H(ラベル|特徴) (底2)
data=[ # (天気, 風, 外出)
('晴','弱',1),('晴','強',1),('晴','弱',1),('曇','弱',1),('曇','強',0),
('雨','弱',0),('雨','強',0),('雨','弱',1),('曇','弱',1),('晴','強',0),
]
def H(labels):
vals,counts=np.unique(labels,return_counts=True)
p=counts/counts.sum(); return -np.sum(p*np.log2(p))
def info_gain(idx):
base=H([d[2] for d in data])
feats=set(d[idx] for d in data)
cond=sum(len([d for d in data if d[idx]==fv])/len(data)
* H([d[2] for d in data if d[idx]==fv]) for fv in feats)
return base-cond
print(f"ラベル(外出)のエントロピー H(Y)={H([d[2] for d in data]):.4f} bit")
gains={}
for name,idx in [('天気',0),('風',1)]:
gains[name]=info_gain(idx)
print(f"特徴『{name}』の情報利得 IG=I(特徴;Y)={gains[name]:.4f} bit")
best=max(gains,key=gains.get)
print(f"-> 情報利得が最大の『{best}』(IG={gains[best]:.4f})を決定木は最初の分割に選ぶ")
出力:
ラベル(外出)のエントロピー H(Y)=0.9710 bit
特徴『天気』の情報利得 IG=I(特徴;Y)=0.0955 bit
特徴『風』の情報利得 IG=I(特徴;Y)=0.2564 bit
-> 情報利得が最大の『風』(IG=0.2564)を決定木は最初の分割に選ぶ
出力の意味:外出ラベルの不確かさは bit。これを天気で分けると不確かさが bit、風で分けると bit 減ります——風の方がラベルをよく説明するので、決定木は最初の分割に風を選びます。情報利得は相互情報量 そのものなので、必ず非負(情報不等式とデータ処理不等式)で、無関係な特徴は利得0。こうして「ラベルの不確かさを最も減らす質問」を貪欲に選んでいくのが決定木の学習で、その心臓部は情報理論のエントロピーと相互情報量です。
3. 数式の直観的意味
情報利得による分割は「最も情報量の多い質問から順に聞く」戦略です。これは20の質問ゲームで「答えを最も絞り込む質問」を選ぶのと同じで、エントロピー(自己情報量とエントロピー)が「平均質問回数」だった話と直結します。注意点として、情報利得は取りうる値が多い特徴を過大評価する偏りがあり(極端には ID のような特徴は で利得最大だが無意味)、実用の決定木では利得比(information gain ratio)やジニ不純度で補正します。この補正や木の剪定・アンサンブル(ランダムフォレスト)の実装は機械学習分野の領分で、ここでは「分割基準=相互情報量」という情報理論の核を示すに留めます。データ処理不等式(情報不等式とデータ処理不等式)から、特徴を加工しても元の情報量は増えない——だから良い特徴を選ぶことに意味があります。
⚠️ よくある誤解
- 「情報利得は決定木専用の指標」ではない:相互情報量 そのもので、特徴選択のフィルタ法など広く使われます。
- 「利得が大きい特徴ほど常に良い」ではない:取りうる値が多い特徴を過大評価する偏りがあります。利得比やジニで補正が必要。
- 「情報利得が0なら無関係」ではない: はこの特徴単独ではラベルと独立、の意味。他の特徴と組み合わせると効くことがあります(交互作用)。
- 「情報利得は因果」ではない:依存(相互情報量)の強さで、因果ではありません(相互情報量)。
対応シミュレーション
- 本文のコードで各特徴の情報利得と分割特徴の選択を実証済み。
関連ノート
- 相互情報量(前提・情報利得=)
- 情報不等式とデータ処理不等式(特徴加工で情報は増えない)
- 自己情報量とエントロピー(平均質問回数としてのエントロピー)
- 変分推論とELBO(次のトピック・ベイズの近似推論)
- 第7章 機械学習・統計との接続 目次
- 情報理論 全体目次