Saya menerapkan fungsi berikut untuk menghitung entropi:
from math import log
def calc_entropy(probs):
my_sum = 0
for p in probs:
if p > 0:
my_sum += p * log(p, 2)
return - my_sum
Hasil:
>>> calc_entropy([1/7.0, 1/7.0, 5/7.0])
1.1488348542809168
>>> from scipy.stats import entropy # using a built-in package
# give the same answer
>>> entropy([1/7.0, 1/7.0, 5/7.0], base=2)
1.1488348542809166
Pemahaman saya adalah bahwa entropi adalah antara 0 dan 1, 0 artinya sangat pasti, dan 1 artinya sangat tidak pasti. Mengapa saya mendapatkan ukuran entropi lebih dari 1?
Saya tahu bahwa jika saya meningkatkan ukuran basis log, ukuran entropi akan lebih kecil, tapi saya pikir basis 2 adalah standar, jadi saya tidak berpikir itu masalahnya.
Saya pasti kehilangan sesuatu yang jelas, tetapi apa?
mathematical-statistics
python
entropy
Akavall
sumber
sumber
Jawaban:
Entropi adalah tidak sama dengan probabilitas .
Entropy mengukur "informasi" atau "ketidakpastian" dari variabel acak. Saat Anda menggunakan basis 2, diukur dalam bit; dan bisa ada lebih dari satu bit informasi dalam suatu variabel.
Dalam contoh ini, satu sampel "berisi" sekitar 1,15 bit informasi. Dengan kata lain, jika Anda mampu mengompres serangkaian sampel dengan sempurna, Anda akan membutuhkan banyak bit per sampel, rata-rata.
sumber
sumber
Memberi:
sumber