解答と解説を表示
<h4>情報エントロピー(シャノンエントロピー)の計算</h4>
<p>情報エントロピーは、確率変数の不確かさ(乱雑さ)を表す尺度です。データセットにおいては、クラス分布の不均一性を測るために用いられます。エントロピー \( H(X) \) の計算式は以下の通りです。</p>
<div class="formula">
$ H(X) = - \sum_{i=1}^{k} p_i \log_2(p_i)$
</div>
<p>ここで、\( k \) はクラスの数、\( p_i \) はクラス \( i \) が出現する確率です。</p><h5>ステップ1: 各クラスの確率を計算</h5>
<p>データセットの総数は 10個です。</p>
<ul>
<li>クラスAの確率 \( p_A \): \( \frac{6}{10} = 0.6 \)</li>
<li>クラスBの確率 \( p_B \): \( \frac{4}{10} = 0.4 \)</li>
</ul><h5>ステップ2: エントロピーの計算式に代入</h5>
<div class="formula">
$ H(X) = - [ p_A \log_2(p_A) + p_B \log_2(p_B) ]$
</div>
<p>\( \log_2(0.6) \approx -0.736965... \) と \( \log_2(0.4) \approx -1.321928... \) を用いて計算します。</p>
<div class="formula">
$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$
</div><p>したがって、このデータセットの情報エントロピーは約 0.971 です。</p><div class="key-point">
<div class="key-point-title">エントロピーの性質</div>
<ul>
<li>すべてのデータが同じクラスに属する場合、エントロピーは最小値 0 となります(不確かさがない)。</li>
<li>すべてのクラスが均等に出現する場合、エントロピーは最大値 \( \log_2(k) \) となります(不確かさが最大)。この例では2クラスなので、最大エントロピーは \( \log_2(2) = 1 \) です。計算結果の 0.971 は、クラス分布がやや不均一(Aが多い)ものの、かなり混在していることを示しています。</li>
<li>決定木アルゴリズム(ID3, C4.5など)では、情報利得(Information Gain)を計算する際にこのエントロピーが用いられ、分割によってどれだけエントロピーが減少するか(不確かさが減少するか)を基準に最適な分割属性を選びます。</li>
</ul>
</div><h5>Python (SciPy) による計算</h5>
<div class="code-block">
<pre>
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
</pre>
</div>