Contoh:

Jika a memiliki variabel X=[1 2 2 0], bagaimana cara menghitung entropi yang benar?

Upaya saya (menggunakan MATLAB):

p(1) = 1/4; % kemungkinan terjadi 1

p(2) = 2/4; % kemungkinan terjadi 2

p(0) = 1/4; % kemungkinan terjadi 0

H = -(1/4*log2(1/4)+2/4*log2(2/4)+1/4*log2(1/4))
  = 1.5

Masalah dan kebingungan saya adalah, haruskah saya mempertimbangkan nilai nol X? Menggunakan fungsi entropy dari MATLAB saya mendapatkan nilai yang sama.

Terima kasih.

-1
user4061624 19 Januari 2018, 18:05

1 menjawab

Jawaban Terbaik

Jawaban atas pertanyaan Anda tergantung pada apa yang Anda coba lakukan.

Jika X mewakili data yang terkait dengan gambar skala abu-abu, maka fungsi entropi< /a> adalah yang Anda cari:

X = [1 2 2 0];
H = entropy(X); % 0.811278124459133

Tetapi variabel X Anda, maupun hasil yang Anda harapkan (1.5) tidak mengarah ke solusi itu. Bagi saya, sepertinya Anda hanya mencoba menghitung entropi Shannon pada vektor nilai acak. Oleh karena itu, Anda harus menggunakan pendekatan yang berbeda:

X = [1 2 2 0];

% Build the probabilities vector according to X...

X_uni = unique(X);
X_uni_size = numel(X_uni);

P = zeros(X_uni_size,1);

for i = 1:X_uni_size
    P(i) = sum(X == X_uni(i));
end

P = P ./ numel(X);

% Compute the Shannon's Entropy

H = -sum(P .* log2(P)); % 1.5

P harus dijumlahkan dengan 1 dan probabilitas (bukan nilai) sama dengan nol harus dikecualikan ke dalam perhitungan (menggunakan kode di atas , tidak mungkin menghasilkan probabilitas seperti itu sehingga tidak perlu menanganinya).

Mengapa hasilnya berbeda? Itu sangat sederhana untuk dijelaskan. Pada contoh pertama (yang menggunakan fungsi entropi), Matlab adalah dipaksa untuk memperlakukan X sebagai gambar skala abu-abu (matriks yang nilainya antara 0 dan 1 atau berkisar dari 0 hingga 255). Karena tipe dasar X adalah double, variabel ditransformasikan secara internal oleh fungsi im2uint8 sehingga semua nilainya berada dalam rentang yang benar dari gambar skala abu-abu... sehingga diperoleh:

X = [255 255 255 0];

Ini menghasilkan vektor probabilitas yang berbeda, sama dengan:

P = [0.25 0.75]; 

Yang menghasilkan indeks entropi Shannon sama dengan 0.811278124459133.

2
Tommaso Belluzzo 16 Mei 2018, 07:43