Используя некоторые математические приемы и MATLAB, мы можем легко вычислить энтропию заданного входа. Например
x = [10 25 4 10 9 4 4];
[a,b]=hist(x,unique(x));
x =
10 25 4 10 9 4 4
a =
3 1 2 1
b =
4 9 10 25
У меня следующий вопрос: поскольку мы используем функцию журнала, рекомендуется ли добавлять небольшую константу в функцию логарифма для обеспечения правильных вычислений? Например, должны ли мы использовать +eps
? В качестве примера:
probbailities=a./numel(x);
probbailities =
0.4286 0.1429 0.2857 0.1429
-sum(probbailities .*log2(probbailities));
ans =
1.8424
-sum(probbailities .*log2(probbailities+eps));
ans =
1.8424
log2(0) = -Inf
. Так что да, чтобы избежать неприятностей, эпсилон может быть хорошей идеей. Потому что с числовой неточностью вы потеряете некоторую информацию. Но если вы работаете с 4 цифрой, то достаточно и eps. - person Vuwox   schedule 06.06.2014