情報エントロピー(シャノンエントロピー)の計算
情報エントロピーは、確率変数の不確かさ(乱雑さ)を表す尺度です。データセットにおいては、クラス分布の不均一性を測るために用いられます。エントロピー \( H(X) \) の計算式は以下の通りです。
$ H(X) = - \sum_{i=1}^{k} p_i \log_2(p_i)$
ここで、\( k \) はクラスの数、\( p_i \) はクラス \( i \) が出現する確率です。
ステップ1: 各クラスの確率を計算
データセットの総数は 10個です。
- クラスAの確率 \( p_A \): \( \frac{6}{10} = 0.6 \)
- クラスBの確率 \( p_B \): \( \frac{4}{10} = 0.4 \)
ステップ2: エントロピーの計算式に代入
$ H(X) = - [ p_A \log_2(p_A) + p_B \log_2(p_B) ]$
\( \log_2(0.6) \approx -0.736965... \) と \( \log_2(0.4) \approx -1.321928... \) を用いて計算します。
$H(X) = - [ (0.6 \times (\log_2(0.6))) + (0.4 \times (\log_2(0.4))) ]
\approx - [ -0.4422 + (-0.5288) ]
\approx - [ -0.9710 ]
\approx 0.971$
したがって、このデータセットの情報エントロピーは約 0.971 です。
エントロピーの性質
- すべてのデータが同じクラスに属する場合、エントロピーは最小値 0 となります(不確かさがない)。
- すべてのクラスが均等に出現する場合、エントロピーは最大値 \( \log_2(k) \) となります(不確かさが最大)。この例では2クラスなので、最大エントロピーは \( \log_2(2) = 1 \) です。計算結果の 0.971 は、クラス分布がやや不均一(Aが多い)ものの、かなり混在していることを示しています。
- 決定木アルゴリズム(ID3, C4.5など)では、情報利得(Information Gain)を計算する際にこのエントロピーが用いられ、分割によってどれだけエントロピーが減少するか(不確かさが減少するか)を基準に最適な分割属性を選びます。
Python (SciPy) による計算
import numpy as np
from scipy.stats import entropy# 各クラスの出現回数
counts = np.array([6, 4])# 出現回数から確率分布を計算
probabilities = counts / np.sum(counts)# エントロピーを計算 (底はeがデフォルトなので、底を2に指定)
entropy_value = entropy(probabilities, base=2)print(f"Probabilities: {probabilities}")
print(f"Entropy (base 2): {entropy_value:.4f}")
# 出力:
# Probabilities: [0.6 0.4]
# Entropy (base 2): 0.9710