hitexts

Hi, We texts to you.

Mutual Information คืออะไร?

Mutual Information คือหนึ่งใน Feature Utility Metric เป็นฟังก์ชันสำหรับวัดความสัมพันธ์ระหว่างฟีเจอร์กับค่าทำนายที่เราสนใจ เพื่อให้เราสามารถเลือกได้ง่ายขึ้นว่าจะใช้ฟีเจอร์ใดบ้างในการทำ Feature Engineering และการนำไปทำนายค่าในขั้นตอนถัด ๆ ไป ซึ่ง Mutual Information นี้ทำงานคล้ายกับ Correlation มากตรงที่มันทำหน้าที่วัดความสัมพันธ์ระหว่างข้อมูล แต่วิธี Mutual นั้นได้เปรียบในเรื่องของการใช้งานได้กับความสัมพันธ์หลากหลายรูปแบบไม่จำกัดว่าจะต้องเป็นความสัมพันธ์เชิงเส้นเพียงอย่างเดียว ดังนั้นวิธีการนี้จึงเหมาะมากกับการเริ่มต้นทำ Feature Development โดยมีข้อดีหลัก ๆ คือ

  • ง่ายต่อการใช้งานและทำความเข้าใจ
  • ช่วยให้ทำงานได้มีประสิทธิภาพมากขึ้น (ในแง่ของการคำนวณ)
  • มีทฤษฎีอ้างอิงได้
  • รับมือกับ Overfitting ได้ดี
  • สามารถจับความสัมพันธ์ได้หลายรูปแบบ

และสิ่งที่ Mutual Information วัดคือการอธิบายความสัมพันธ์ภายใต้ความไม่แน่นอน โดยที่ค่า MI ระหว่างข้อมูลนั้นเป็นการวัดว่าถ้ารู้ค่าหนึ่งมากขึ้นจะลดความไม่แน่นอนของอีกค่าหนึ่งได้อย่างไร สำหรับการตีความค่า MI Score ค่าที่น้อยที่สุดของ MI คือ 0.0 เมื่อ MI มีค่าเป็น 0 หมายความว่าข้อมูลเป็นอิสระต่อกัน (ไม่มีความสัมพันธ์) ในทางทฤษฎี MI นั้นไม่มีค่าสูงสุดกำหนดไว้ แต่ในทางปฏิบัติถ้าค่า MI เป็น 2 หรือมากกว่านั้นถือว่าไม่ปกติ (เพราะ MI นั้นเป็นค่า Logarithm ดังนั้นจึงเพิ่มขึ้นช้ามากๆ) สำหรับรายละเอียดเพิ่มเติมอ่านได้ที่นี่

Mutual Information ใช้งานอย่างไร

ในที่นี้จะเรียกใช้งานผ่าน Scikit-learn โดยจะอยู่ใน sklearn.feature_selection โดย mutual_info_regression ใช้สำหรับงานที่เป็นการทำนายค่า และ mutual_info_classif ใช้สำหรับงานจำแนกประเภท ในที่นี้เราจะใช้กับงาน Binary Classification บนชุดข้อมูล วัตถุที่โคจรใกล้โลก

ฟีเจอร์มีดังนี้

  • id: รหัสของวัตถุที่โคจร ตั้งโดย NASA
  • name: ชื่อของวัตถุที่โคจร ตั้งโดย NASA
  • est_diameter_min: ค่าประมาณของเส้นผ่านศูนย์กลางต่ำสุด
  • est_diameter_max: ค่าประมาณของเส้นผ่านศูนย์กลางสูงสุด
  • relative_velocity: ความเร็วสัมพัทธ์ของวัตถุที่โคจร
  • miss_distance: ระยะห่างของวัตถุกับโลก
  • orbiting_body: โคจรรอบอะไร
  • sentry_object: เป็นวัตถุเฝ้าระวังหรือไม่
  • absolute_magnitude: intrinsic luminosity

ค่าที่ต้องการจะจำแนกประเภท (Target)

  • hazardous: เป็นอันตรายหรือไม่ (Boolean)

นำเข้า Library ที่ใช้ และอ่านข้อมูลเก็บไว้ใน DataFrame

เตรียม Features และ Target และตรวจสอบ Data Type ของแต่ละคอลัมน์

แปลงข้อมูลที่เป็น Categorical และกำหนดให้ค่าที่แปลงข้างต้นเป็น Discrete Features (ค่าที่ไม่ต่อเนื่อง)

เรียกใช้งาน mutual_info_classif โดยพารามิเตอร์ที่ต้องการคือ feature, target และกำหนด discrete_features (ถ้ามี)

แสดงผลค่า MI Score โดยเรียงจากมากไปน้อย เพื่อดูว่าฟีเจอร์ไหนบ้างที่ส่งผลกับการจำแนกประเภทวัตถุใกล้โลกที่อาจเป็นอันตราย จะเห็นว่า sentry_object และ orbiting_body นั้นไม่มีความสัมพันธ์ใด ๆ กับค่าที่ต้องการจำแนกเลย (เนื่องจากในชุดข้อมูล 2 คอลัมน์นี้มีค่าเหมือนกันหมด)

และ est_diameter_min กับ est_diameter_max จะสัมพันธ์ใกล้เคียงกัน โดยถ้าดูจาก Correlation ปกติจะเห็นว่ามันสัมพันธ์กันเอง ดังนั้นเลือกมาใช้แค่ค่าใดค่าหนึ่งก็ได้

Conclusion

เมื่อทราบถึงความสัมพันธ์เบื้องต้นของฟีเจอร์และเป้าหมายแล้ว จึงเริ่มต้นทำ Feature Engineering และ สร้างโมเดลต่อไป

Related Post

Metadata คืออะไร บอกอะไรเกี่ยวกับชุดข้อมูลนั้น ๆ บ้าง
25Sep

Metadata คืออะไร บอกอะไรเกี่ยวกับชุดข้อมูลนั้น ๆ บ้าง

Metadata คือข้อมูลที่อธิบายชุดข้อมูล เพื่อให้เข้าใจได้เบื้องต้นว่าเป็นชุดข้อมูลเกี่ยวกับอะไร ประเภทไฟล์ วันที่สร้างและปรับปรุง

Mutual Information ขั้นตอนแรกที่แนะนำให้ทำตอนเริ่มโปรเจค ML
05Aug

Mutual Information ขั้นตอนแรกที่แนะนำให้ทำตอนเริ่มโปรเจค ML

การทำงานด้าน Machine Learning นั้นจะต้องเจอข้อมูลและมีคำถามเสมอว่าควรเริ่มจากอะไรดี โดย Mutual Information เป็นหนึ่งในขั้นตอนที่แนะนำให้ทำ

One Hot Encoding วิธีแปลงข้อมูลประเภท Category เพื่อใช้เทรนโมเดล
01Aug

One Hot Encoding วิธีแปลงข้อมูลประเภท Category เพื่อใช้เทรนโมเดล

วิธีการแปลงข้อมูลประเภทหมวดหมู่/ประเภท (ที่เป็นตัวอักษร) ให้เป็นชุดตัวเลขด้วยวิธีการ One Hot Encoding เพื่อให้โมเดลสามารถเรียนรู้ได้

ANN (Artificial Neural Network) พื้นฐานของ Deep Learning
22Jul

ANN (Artificial Neural Network) พื้นฐานของ Deep Learning

การเรียนรู้เชิงลึก (Deep Learning) นั้นเป็นเทคนิคที่มัประสิทธิภาพมากในงาน Machine Learning ปัจจุบันซึ่งเบื้องหลังของมันก็คือการใช้ ANN

Parsing Dates การจัดการกับข้อมูลวันที่ในชุดข้อมูลด้วย Pandas
04Jul

Parsing Dates การจัดการกับข้อมูลวันที่ในชุดข้อมูลด้วย Pandas

ในหลาย ๆ ชุดข้อมูลมักจะมีการเก็บวันที่ไว้ด้วยเสมอ ซึ่งการ Parsing Dates จะช่วยให้ใช้งานวันที่เหล่านั้นได้ง่ายยิ่งขึ้น

Data source แหล่งชุดข้อมูลสำหรับใช้ทำงานด้านข้อมูลช่วยให้โปรเจคราบรื่นยิ่งขึ้น
01Jul

Data source แหล่งชุดข้อมูลสำหรับใช้ทำงานด้านข้อมูลช่วยให้โปรเจคราบรื่นยิ่งขึ้น

การจะเริ่มทำโปรเจคอะไรสักอย่างสิ่งที่ขาดไม่ได้เลยคือข้อมูล แล้วยิ่งเป็นงานที่เกี่ยวข้องกับ Data แล้วนั้น Data source จึงเป็นสิ่งจำเป็นมาก

© 2022 hitexts. All rights reserved