Last updated on May 31, 2016
โพสต์ที่แล้วเกี่ยวกับ Machine learning เรารู้จัก Entropy คุณสมบัติของมันไปแล้วและรู้แล้วว่าเอาไปใช้ในการทำ feature selection ได้ คราวนี้มาลองคำนวณ entropy ดูบ้าง และอีกคำที่ควรรู้คือ “Information gain” ซึ่งเป็นการเทียบความ entropy ก่อน-หลังว่ามีการเปลี่ยนแปลงเท่าไหร่
การแปลความหมาย Information gain
Information gain คือผลต่างระหว่าง entropy ในสถานะปัจจุบันกับ entropy ของสถานะก่อนหน้าหาได้จากสมการ
การแปลความหมายของ 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) แล้วสามารถคำนวณได้ตามรูปข้างล่างนี้
หมายเหตุ: เนื่องจากผมขี้เกียจทำรูปประกอบ (ฮา) ขอวาดรูปและเขียนด้วยลายมือไก่เขี่ยนี่แล้วกัน
ตอนนี้เราคำนวณ entropy ทั้งหมดแล้วขั้นตอนต่อมาคือการหา IG ซึ่งจะได้ตามรูปข้างล่างนี้
จากรูปจะเห็นว่าผมเอา 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”?”
เดี๋ยวถ้าผมคิดตัวอย่างของผมเองออกจะลองคำนวณให้ดูแล้วกันครับ พอดีเห็นจากแหล่งอื่นอธิบายไว้ดีอยู่แล้ว ไม่เขียนซ้ำแล้วกันเนอะ
ขอบคุณสำหรับบทความดีๆครับ ได้ความรู้เพิ่มมากขึ้นครับ แต่มีข้อสงสัยอยู่ข้อนึงครับ ขอสอบถามนะครับ
จาก IG = Entropy(parent) – Entropy(child) การที่ค่า IG สูงแสดงว่าค่า Entropy ของ Feature นั้นจะต่ำใช่ไหมครับ แต่จากบทความ Entropy บอกว่า Entropy สูงแสดงถึงความแตกต่างมาก เป็นค่าที่ควรเลือก
ผมเลยสงสัยว่ามันขัดแย้งกันหรือป่าวครับ ผมมือใหม่เรื่อง Machine Learning ครับ อยากขอคำชี้แนะหน่อยครับ
ขอบคุณครับ
IG เป็น “ผลต่าง” ระหว่าง entropy ก่อน (initial) และหลังครับ ไม่ได้แปรผกผันกัน ไม่ใช่ IG สูงแล้ว entropy จะต่ำหรือ entropy สูงแล้ว IG จะต่ำ ลองดูตัวอย่างจากลิงก์นี้ดูนะครับ
http://dataminingtrend.com/2014/data-mining-techniques/feature-selection-information-gain/
ขอบคุณครับ 🙂