基礎編

情報数理に関する基本的な計算問題

データセットのエントロピー計算 レベル1

ある分類問題のデータセットが10個あり、クラスAが6個、クラスBが4個含まれています。このデータセットの情報エントロピー(シャノンエントロピー)を計算しなさい。ただし、計算には \( \log_2 \) を使用してください。(小数点以下3桁まで求めてください)

解説
解答と解説を表示
<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>
問題 1/1
カテゴリ一覧に戻る