ド根性Python

( python | machine_learning | computer_vision | lifehack )

エントロピーと分散の直感的な違い

この記事は直感的理解を助けることを目的とし、正確性に欠くことがある。

分散もエントロピーも、直感的には、どちらも 確率変数の散らばり具合 を表してる。(本当は、散らばり具合という表現はよくないが。)

エントロピーは低ければ低いほど、固まっていて、高ければ高いほど散らばっている。

オナラで例えると、出したばっかは濃厚で、エントロピーが低く、しばらく経つと、広がっていき、エントロピーは高くなっていく。

それでは、分散とエントロピーはどういった違いがあるのか?

確率変数が単峰(uni-modal)な分布に従う場合、分布が尖るほど、エントロピーも分散も小さくなる。

しかし、多峰(multi-modal)な分布の場合、分布が尖ると、分散は高いが、エントロピーは低いとなる可能性がある。それぞれの山の分散が山の間より、十分小さい場合がそう。

以下のコードは、分散が同じだがエントロピーが異なる単峰な分布と、多峰な分布の図を表示する。

n = 100000

x = np.random.normal(-2, 0.1, int(n/2))
y = np.random.normal( 2, 0.1, int(n/2))
z = np.concatenate((x,y))

a = np.random.normal(0, z.std(), n)

fa, bins, _ = plt.hist(a, bins=100, label='uni')
fz, _, _ = plt.hist(z, bins=bins, label='multi')
plt.grid()
plt.legend()

f:id:hrsma2i:20180922231036p:plain

from scipy.stats import entropy

entropy(fz/n)
entropy(fa/n)

z.var()
a.var()

# entropy
# 1.6694403507782112 (multi)
# 3.8589971158298737 (uni)
#
# variance
# 4.01208858765457 (multi)
# 4.000793706567515 (uni)

どちらも、分散は同じだが、エントロピーは異なっている。

話題が若干、変わるが、この2つの分布は、分散だけでなく、平均もほぼ同じ。 しかし、分布の形はかなり異なる。 この2つの分布は、平均と分散だけを見るのは危険、データの可視化は重要ということを示す具体例にもなるだろう。

むちゃくちゃ適当な記事だが、「エントロピーと分散ってどう違うの?」って気になった人の理解の補助となればいい。