Skip to content

Machine Learning #5 | ทำความเข้าใจ Entropy กันสักหน่อย

โพสต์ที่แล้วผมพูดถึง Entropy (ภาษาไทยใช้ว่าคำว่า “ความแปรปรวน” ฟังแล้วไม่เก็ตเลยว่าคืออะไร) ซึ่งผมบอกถึงประโยชน์ของมันว่าใช้ในการทำ Feature selection ได้  โพสต์นี้เรามาทำความเข้าใจคำว่า entropy กัน

Entropy คืออะไร มีคุณสมบัติยังไง

Entropy ในที่นี้ผมหมายถึง Information Entropy นะครับ ถ้าจำไม่ผิดรู้สึกว่าทางเคมีก็มีการใช้คำว่า entropy  เหมือนกัน ผมไม่รู้ว่าเหมือนกันไหมเพราะความรู้เคมีผมแค่หางอึ่ง แต่ concept คงคล้ายกันมั้ง

entropy ถูกนำเสนอโดย Shannon เป็นนักฟิสิกส์ วิศวกรไฟฟ้าและนักคณิตศาสตร์ (เก่งจัด) ซึ่งได้รับการยกย่องว่าเป็น “Father of Information Theory” ใครเคยเรียนพวก communication, information คงคุ้นหูกันดี

Entropy ถูกใช้ในการคำนวณหาความไม่บริสุทธิ์ (impurity) ของข้อมูล หมายความว่าข้อมูลมีความแตกต่างกัน ยกตัวอย่างการส่งข้อมูล (transmission) ผ่าน channel หนึ่ง ข้อมูลของเรานั้นแรกเริ่มเดิมทีมีความบริสุทธิ์ (purity) แต่เมื่อส่งผ่าน channel ก็มักจะมี noise เข้ามารบกวนหรือข้อมูลอาจจะ lost ระหว่างส่งทำให้ข้อมูลเมื่อไปถึงฝั่งรับมีความไม่บริสุทธิ์ สมมุติว่าเราส่ง 11111111 ผ่าน channel แต่เมื่อถึงฝั่งรับกลับกลายเป็น 11110011 แสดงว่า impurity ของข้อมูลเราเพิ่มขึ้นเพราะมีส่วนที่แตกต่างไปจากเดิมคือมี 00 ปนเข้ามา อีกนัยหนึ่งคือให้ content มากขึ้นเพราะจากเดิมที่มีแต่ 1 ก็มี 0 เพิ่มเข้ามา

Entropy มีค่าระหว่าง 0-1 และจะมีค่าสูงขึ้นเมื่อข้อมูลมีความแตกต่างกันมาก สมมุติว่าผมมีถังลูกบอลซึ่งคละสีกันเขียว-แดงจำนวน 100 ลูก ค่าของ entropy จะมีค่ามากที่สุดเมื่อในถังมีลูกบอลสีเขียว 50 ลูกและมีลุกบอลสีแดง 50 ลูก (ต่างกันมากเพราะมีเท่ากัน) แต่ถ้ามีสีเขียวมากหรือสีแดงมากกว่า entropy จะเริ่มลดลงเพราะมีแนวโน้มที่ข้อมูลจะเหมือนกันมากขึ้น ดูรูปนี้น่าจะเข้าใจครับSelection_106

ให้อัตราส่วนระหว่างลูกบอล เขียว:แดง = 90:10  และ  70:30 ตามลำดับจะได้ว่าข้อมูลชุดที่ 1 จะมี entropy น้อยกว่าชุดที่ 2 คือถ้ามีอันใดอันหนึ่งมากเกินไป entropy จะลดลง

นิยาม Entropy และสมการ

Information entropy หรือ Shannon’s entropy นิยามว่า entropy ว่า “log-base-2 of number of possible outcomes ” ยกตัวอย่างการทอยเหรียญโอกาสออกหัว (H):ก้อย (T) เป็น 50:50 (ถ้ามีโอกาสออกเท่ากันตำราฝรั่งจะบอกว่า “fair” ) 1 เหรียญ possible outcomes = 2 (H, T) ถ้ามี 2 เหรียญ possible outcomes = 4 (HH, HT, TH, TT) ที่ใช้ log ฐาน 2 เพราะข้อมูลเป็นเลขฐาน 2 โดย 1 บิตแทนค่าได้ 2 ค่า, 2 บิตได้ 4 ค่า จำนวนที่ represent ได้จะเป็น 2^n

ในกรณีที่เราต้องการทราบว่าแต่ละ class ให้ content มากน้อยขนาดไหน (ในที่นี้คือกี่บิต) เราจะคำนวณได้จาก log ฐาน 2 ของความน่าจะเป็นของ class นั้นๆ เช่นตัวอักษร A-Z มี 26 ตัว ความน่าจะเป็นของแต่จะตัวคือ 1/26 จะได้ -log_2(1/26) = 4.700 ถ้าตัวอักษรไทย ก-ฮ ก็ 1/44 จะได้ -log_2(1/44) = 5.459 เป็นต้น entropy หาได้จากความน่าจะเป็นของคลาสนั้นๆ คูณด้วย log ฐาน 2 ของความน่าจะเป็นของคลาสนั้นเอง เขียนได้เป็น

Entropy(x_i) = -P(x_i) log_2P(x_i)

โดย x คือ class สามารถมีได้มากกว่า 1 class ฉะนั้น entropy ก็คือผลรวม probability ของแต่ละ class สามารถเขียนใน form ทั่วไปได้เป็น

H(X) = -\sum_{i=1}^{n} P(x_i) log_2P(x_i)

หมายเหตุ: จริงๆ แล้วสมการข้างบน i=1 และ n ต้องอยู่กึ่งกลางล่างและบนเครื่องหมาย Sum ตามลำดับ แต่ Latex plugin ของ wordpress มันกาก render ไม่ถูก – -“

แล้วเราจะประยุกต์ใช้ entropy ยังไง?

เราต้องการทำ classification เป้าหมายคือการจำแนก instances/samples ที่คล้ายกันให้อยู่กลุ่มเดียวกันซึ่ง instance อาจจะมีหลาย features คำถามต่อมาคือ แล้วเราจะรู้ได้ยังไงว่า features ใดบ้างเมื่อนำไป train แล้วได้ model ที่ predict แล้วน่าจะได้ accuracy มากที่สุด เราก็ต้องเลือก features ที่ให้ content มากที่สุด, features ที่ทำให้แยกของ 2 สิ่งแตกต่างกันจนสามารถออกจากกันได้อย่างชัดเจน ชุดข้อมูลที่ดีที่สุดในการเอาไป train ก็ชุดข้อมูลที่มี entropy มากที่สุดนั่นเอง

จากสมการสังเกตว่าใช้ log ฐาน 2 เพราะมีพื้นฐานมาจากบิตซึ่งมีค่า 1 และ 0 การหา entropy จึงมักใช้กับ classification ที่เป็น binary-classification หรือ 2-classes classification เช่น แยกอีเมลสแปมออกจากอีเมลปกติ (Yes or No), ทำนายเพศจากชื่อว่าเป็นหญิงหรือชาย (Male or Female), การสร้าง Decision tree ที่แต่ละ node ตอบ Yes หรือ No ฯลฯ

ยังไม่ได้เข้าเรื่อง Information gain เลย ชักจะยาวเกินไปละ โพสต์หน้าจะลองทำตัวอย่างง่ายๆ แล้วลองคำนวณ entropy และ information gain ดูครับ

Resources:

2 Comments

Leave a Reply

Your email address will not be published.