我有一个关于计算分裂熵的基本问题。
假设我有2个班级,是和否。在这个集合中,我有3个样本是和2个样本编号
如果我计算出这组的熵,我会得到:
-(2/5)*(log(2/5)/log(2))-(3/5)*(log(3/5)/log(2))=0.9710
现在,这让我感到困惑。如果熵为零,我将只有一个类的样本。如果熵是0.5(对于2个类)我有50%是和50%没有样本。接近1的值告诉我现在究竟是什么?
请指点,我觉得我在这里看不到明显的东西,但我不明白熵何时达到1?答案 0 :(得分:0)
在像你这样的二元例子中,如果系统的熵完美地分配给每个可能的结果(10个样本,5个是,5个否),则系统的熵将接近1。从均匀分布越远,越接近0.您可以在wikipedia上看到二元熵图。
更具体地说,熵和的完美分布是log2(numClasses)。所以对于2 == log2(2)== 1。
答案 1 :(得分:0)
Entropy goes to 1 as the the number of observations with 50% probability of success in binomial distribution approaches to infinity.
For example,
c <- rbinom(100000,1,0.5)
freqsC <- table(c)/length(c)
entropyC <- -sum(freqsC * log2(freqsC))
entropyC
[1] 0.9999885
This is the entropy value with 100000 observations.
And here is the entropy value with 100000000 observations.
f <- rbinom(100000000,1,0.5)
freqsF <- table(f) / length(f)
entropyF <- -sum(freqsF * log2(freqsF))
entropyF
[1] 1
This is actually 0.999999969120836 but R gives it as 1.
Hope it helps.