ทำไมฉันถึงได้รับข้อมูลข่าวสารมากกว่า 1


11

ฉันใช้ฟังก์ชันต่อไปนี้เพื่อคำนวณเอนโทรปี:

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

ผลลัพธ์:

>>> 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

ความเข้าใจของฉันคือเอนโทรปีอยู่ระหว่าง 0 และ 1, 0 หมายถึงแน่นอนมากและ 1 หมายถึงไม่แน่นอนมาก ทำไมฉันถึงได้ค่าเอนโทรปีมากกว่า 1

ฉันรู้ว่าถ้าฉันเพิ่มขนาดฐานบันทึกการวัดเอนโทรปีจะเล็กลง แต่ฉันคิดว่าฐาน 2 เป็นมาตรฐานดังนั้นฉันจึงไม่คิดว่านั่นเป็นปัญหา

ฉันต้องคิดถึงบางสิ่งที่ชัดเจน แต่อะไรนะ


ฐานไม่ขึ้นอยู่กับประเภทของเอนโทรปีหรือเปล่า ฐาน 2 นอนส์เอนโทรปีไม่ได้หรือไม่และเอนโทรปีสถิติกลศาสตร์ธรรมชาติ
Alexis

@Alexis แต่เอนโทรปีของ Shannons ไม่อยู่ในช่วงระหว่าง 0 ถึง 1 ใช่ไหม
Akavall

1
ไม่: เอนโทรปีของแชนนอนนั้นไม่เป็นลบ
Alexis

2
ดูเหมือนว่าไม่มีอะไรผิดปกติถ้าเอนโทรปีมีค่ามากกว่า 1 ถ้าฉันมีเหตุการณ์มากกว่าสองเหตุการณ์และค่าของเอนโทรปีอยู่ระหว่าง 0 ถึง 1 เฉพาะในกรณีพิเศษซึ่งเหตุการณ์ของฉันเป็นแบบไบนารี (ฉันมีสองเหตุการณ์)
Akavall

คำตอบ:


17

เอนโทรปีเป็นไม่ได้เช่นเดียวกับความน่าจะเป็น

เอนโทรปีวัดค่า "ข้อมูล" หรือ "ความไม่แน่นอน" ของตัวแปรสุ่ม เมื่อคุณใช้ฐาน 2 มันจะวัดเป็นบิต และอาจมีข้อมูลมากกว่าหนึ่งบิตในตัวแปร

ในตัวอย่างนี้ตัวอย่างหนึ่ง "ประกอบด้วย" ข้อมูลประมาณ 1.15 บิต กล่าวอีกนัยหนึ่งถ้าคุณสามารถบีบอัดตัวอย่างจำนวนหนึ่งได้อย่างสมบูรณ์แบบคุณจะต้องใช้จำนวนบิตต่อตัวอย่างโดยเฉลี่ย


ขอบคุณ. ฉันคิดว่าฉันเข้าใจ แต่ฉันต้องการให้แน่ใจ ฉันมีคำสั่งต่อไปนี้ใช่มั้ย หากฉันมีเพียงสองผลลัพธ์ข้อมูลส่วนใหญ่ที่ฉันสามารถได้รับคือ 1 บิต แต่ถ้าฉันมีผลลัพธ์มากกว่า 2 รายการกว่าที่ฉันจะได้รับข้อมูลมากกว่า 1 บิต
Akavall

ใช่. (ตัวอย่างเช่นพิจารณาสี่ผลลัพธ์ที่กระจายอย่างสม่ำเสมอซึ่งอาจสร้างขึ้นโดยการโยนเหรียญยุติธรรมสองตัวอย่างต่อหนึ่งตัวอย่าง)
CL

เพื่อเพิ่มสิ่งนี้เอนโทรปีมีค่าตั้งแต่ 0-1 สำหรับปัญหาการจำแนกเลขฐานสองและ 0 ไปยังฐานฐาน 2 k โดยที่ k คือจำนวนของคลาสที่คุณมี
MichaelMMeskhi

13

ค่าสูงสุดของเอนโทรปีคือโดยที่คือจำนวนหมวดหมู่ที่คุณใช้ ค่าตัวเลขจะขึ้นอยู่กับฐานของลอการิทึมที่คุณใช้เข้าสู่ระบบkk

การใช้ฐาน 2 ลอการิทึมเป็นตัวอย่างเช่นในคำถาม:มีที่และเป็นดังนั้นมากขึ้นผลกว่าเป็นความผิดแน่นอนถ้าจำนวนของประเภทคือหรือ2คุ้มค่ามากขึ้นกว่าจะผิดถ้ามันเกินkเข้าสู่ระบบ210เข้าสู่ระบบ2211121เข้าสู่ระบบ2k

ในมุมมองของนี้มันเป็นเรื่องธรรมดาที่จะไต่เอนโทรปีโดยเพื่อให้ผลแล้วจะล้มลงระหว่างและ ,เข้าสู่ระบบk01


ไม่ทราบเกี่ยวกับสิ่งนั้นขอบคุณ ดังนั้นโดยพื้นฐานแล้วฐานของลอการิทึมจึงเท่ากับความยาวของตัวอย่างและไม่มากไปกว่านี้?
Fierce82

2
ความยาวของตัวอย่างนั้นไม่สำคัญเช่นกัน คุณมีกี่หมวดหมู่
Nick Cox

เพื่ออธิบายให้ชัดเจนมันคือจำนวนหมวดหมู่ที่เป็นไปได้หรือจำนวนหมวดหมู่ที่คุณคำนวณเอนโทรปี เช่น. ฉันมี 10 หมวดหมู่ที่เป็นไปได้ แต่มี 3 ตัวอย่างที่เป็นตัวแทนของ 2 หมวดหมู่ในระบบฉันกำลังคำนวณเอนโทรปีสำหรับ k ในกรณีนี้คือ 2
eljusticiero67

หมวดหมู่ที่ไม่ได้เกิดขึ้นในทางปฏิบัติได้สังเกตความน่าจะเป็นที่ศูนย์และไม่มีผลต่อผลลัพธ์ของเอนโทรปี มันเป็นแบบแผนที่แข็งแกร่งซึ่งสามารถพิสูจน์ได้อย่างแม่นยำมากขึ้นว่าจะต้องดำเนินการเป็นศูนย์ (ฐานของลอการิทึมเป็นสาระสำคัญที่นี่) -0เข้าสู่ระบบ0
Nick Cox

-2

ลองนี้ (หมายเหตุฐาน ):อี

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

ให้:

>>> calc_entropy([1/7.0, 1/7.0, 5/7.0])
0.796311640173813

ฉันรู้ว่าฉันสามารถทำเช่นนั้นได้ แต่ฉันรู้สึกว่าการใช้ log base 2 ควรให้ค่าเอนโทรปีระหว่าง 0 และ 1 สามารถใช้ log ฐาน 2 ได้ก็ต่อเมื่อฉันมีความน่าจะเป็นสองข้อเท่านั้น
Akavall

การใช้ เข้าสู่ระบบ2 วัดจำนวนบิตที่จำเป็นในการอธิบายลักษณะความไม่แน่นอนของอนุกรม พี-values ดูxkcd.com/936และen.wikipedia.org/wiki/Entropy_%28information_theory%29
Alexis

คำตอบนี้จะแนะนำว่าเอนโทรปีที่แสดงใน nats ไม่ควรเกิน 1แต่ฉันสงสัยว่าเป็นข้อมูลที่คุณตั้งใจจะสื่อเพราะมันไม่จริง
whuber
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.