Skip to content

Machine Learning #6 | การคำนวณ Entropy และ Information gain

โพสต์ที่แล้วเกี่ยวกับ Machine learning เรารู้จัก Entropy คุณสมบัติของมันไปแล้วและรู้แล้วว่าเอาไปใช้ในการทำ feature selection ได้ คราวนี้มาลองคำนวณ entropy ดูบ้าง และอีกคำที่ควรรู้คือ “Information gain” ซึ่งเป็นการเทียบความ entropy ก่อน-หลังว่ามีการเปลี่ยนแปลงเท่าไหร่

การแปลความหมาย Information gain

Information gain คือผลต่างระหว่าง entropy ในสถานะปัจจุบันกับ entropy ของสถานะก่อนหน้าหาได้จากสมการ

Information gain (IG) = Entropy(before) - Entrolpy(after)

การแปลความหมายของ IG เป็นดังนี้

  • Information gain > 0 คือ information เพิ่มขึ้น (feature ที่ดี)
  • Information gain < 0 คือ information ลดลง (feature ที่แย่)
  • Information gain = 0 คือ information ไม่มีการเปลี่ยนแปลง (feature ไม่มีผลต่อการ classify)

ตัวอย่างการคำนวณ Entropy

ยกตัวอย่างผมมีข้อมูลเป็นวงกลมสีเขียว-สีชมพูคละกัน 10 วงเมื่อทำการแยกเป็น 2 class  (child 1 และ child 2) แล้วสามารถคำนวณได้ตามรูปข้างล่างนี้

หมายเหตุ: เนื่องจากผมขี้เกียจทำรูปประกอบ (ฮา) ขอวาดรูปและเขียนด้วยลายมือไก่เขี่ยนี่แล้วกัน

IMG_20160522_183029ตอนนี้เราคำนวณ entropy ทั้งหมดแล้วขั้นตอนต่อมาคือการหา IG ซึ่งจะได้ตามรูปข้างล่างนี้

IMG_20160522_183057

จากรูปจะเห็นว่าผมเอา entropy ของ child 1 และ child 2 ไปคูณกับจำนวนที่มีของแต่ละคลาสในแต่ละ child ต่อจำนวนทั้งหมด เพราะเราใช้มันเป็น weight เนื่องจากจำนวนแต่ละ child ไม่เท่ากัน

ฉะนั้น IG ที่หาได้คือ 0.256

Real-world examples

ตัวอย่างข้างบนเป็นตัวอย่างง่ายๆ sample space แค่ 10 samples เพื่อให้เห็นภาพรวมก่อน แล้วถ้ากับ dataset แบบอื่นล่ะเราจะคำนวณได้ยังไง?

ลองค้นกูเกิลดูจะพบตัวอย่างการคำนวณ entropy และ IG ทั้ง text, slide, video เช่น video ข้างล่างมีตัวอย่างการคำนวณ IG เพื่อเลือก feature (ในที่นี้คือภูมิอากาศแต่ละแบบ) ว่าสภาพอากาศแบบใดที่ควรใช้สร้าง model เพื่อทำนายว่าในวันนั้นเหมาะสมสำหรับการเล่นกีฬาหรือไม่

ส่วนอันนี้ตัวอย่างเดียวกันแต่เป็นภาษาไทย การคัดเลือก feature (feature selection) ด้วยวิธี Information Gain” 

ส่วนอันนี้เป็นอีกตัวอย่างการเลือก feature เพื่อสร้าง model ทำนายเพศจากชื่อ มีคนอธิบายเรื่อง entropy แล้วยกตัวอย่างประกอบด้วย เข้าไปดูที่ top comment ของกระทู้นี้ได้เลยครับ “What is “entropy and information gain”?

เดี๋ยวถ้าผมคิดตัวอย่างของผมเองออกจะลองคำนวณให้ดูแล้วกันครับ พอดีเห็นจากแหล่งอื่นอธิบายไว้ดีอยู่แล้ว ไม่เขียนซ้ำแล้วกันเนอะ

2 Comments

  1. Song Song

    ขอบคุณสำหรับบทความดีๆครับ ได้ความรู้เพิ่มมากขึ้นครับ แต่มีข้อสงสัยอยู่ข้อนึงครับ ขอสอบถามนะครับ
    จาก IG = Entropy(parent) – Entropy(child) การที่ค่า IG สูงแสดงว่าค่า Entropy ของ Feature นั้นจะต่ำใช่ไหมครับ แต่จากบทความ Entropy บอกว่า Entropy สูงแสดงถึงความแตกต่างมาก เป็นค่าที่ควรเลือก
    ผมเลยสงสัยว่ามันขัดแย้งกันหรือป่าวครับ ผมมือใหม่เรื่อง Machine Learning ครับ อยากขอคำชี้แนะหน่อยครับ

    ขอบคุณครับ

    • Kor Kor

      IG เป็น “ผลต่าง” ระหว่าง entropy ก่อน (initial) และหลังครับ ไม่ได้แปรผกผันกัน ไม่ใช่ IG สูงแล้ว entropy จะต่ำหรือ entropy สูงแล้ว IG จะต่ำ ลองดูตัวอย่างจากลิงก์นี้ดูนะครับ
      http://dataminingtrend.com/2014/data-mining-techniques/feature-selection-information-gain/

      ขอบคุณครับ 🙂

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.