Mengapa saya mendapatkan entropi informasi lebih dari 1?

11

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?

Akavall
sumber
Bukankah pangkalan bergantung pada jenis entropi? Bukankah entropi Shannon basis 2, dan entropi mekanika statistik log alami?
Alexis
@Alexis, tetapi bukankah kisaran entropi Shannons antara 0 dan 1?
Akavall
1
Tidak: Entropi Shannon adalah non-negatif.
Alexis
2
Tampaknya tidak ada yang salah dengan entropi lebih besar dari 1 jika saya memiliki lebih dari dua peristiwa, dan nilai entropi adalah antara 0 dan 1 hanya dalam kasus khusus, di mana acara saya bersifat biner (saya memiliki dua peristiwa).
Akavall

Jawaban:

17

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.

CL.
sumber
Terima kasih. Saya pikir saya mengerti, tetapi saya ingin memastikan. Saya pernyataan berikut kan? Jika saya hanya memiliki dua hasil, maka sebagian besar informasi yang dapat saya peroleh adalah 1 bit, tetapi jika saya memiliki lebih dari 2 hasil daripada saya dapat memperoleh lebih dari 1 bit informasi.
Akavall
Iya. (Misalnya, pertimbangkan empat hasil yang terdistribusi secara seragam, yang dapat dihasilkan oleh dua kali lemparan koin yang adil per sampel.)
CL.
Untuk menambah ini, rentang entropi dari 0-1 untuk masalah klasifikasi biner dan 0 untuk mencatat basis 2 k, di mana k adalah jumlah kelas yang Anda miliki.
MichaelMMeskhi
13

logkk

log210log2211121log2k

logk01

Nick Cox
sumber
tidak tahu tentang itu, terima kasih. Jadi pada dasarnya dasar logaritma sama dengan panjang sampel, dan tidak lebih?
Fierce82
2
Panjang sampel juga tidak penting. Berapa banyak kategori yang Anda miliki.
Nick Cox
hanya untuk memperjelas, apakah k jumlah kategori yang memungkinkan, atau jumlah kategori yang Anda hitung untuk entropi? misalnya. saya punya 10 kategori yang mungkin, tetapi ada 3 sampel yang mewakili 2 kategori dalam sistem yang saya hitung untuk entropi. Apakah k dalam kasus ini 2?
eljusticiero67
0log0
-2

e

from math import log

def calc_entropy(probs):
    my_sum = 0
    for p in probs:
        if p > 0:
            my_sum += p * log(p)

    return - my_sum

Memberi:

>>> calc_entropy([1/7.0, 1/7.0, 5/7.0])
0.796311640173813
Alexis
sumber
Saya tahu saya bisa melakukan itu, tetapi saya mendapat kesan bahwa menggunakan log basis 2 juga harus menghasilkan nilai entropi antara 0 dan 1. Bisakah log basis 2 hanya digunakan ketika saya memiliki dua probabilitas?
Akavall
log2p
1