เมื่อครึ่งปีก่อนผมได้มีโอกาสเข้าไปดูเว็บ Kaggle โดยบังเอิญครับ มันเป็นเว็บสำหรับแข่งขันการทำโมเดลต่างๆ ของสาย AI, Machine Studying และ Information Science พอเข้าไปผมรู้สึกว้าวกับมันมากกับการที่เราสามารถทำนายการเกิดมะเร็ง การมีชีวิตรอด หรือทำนายราคาบ้านได้ วันนั้นผมคิดว่าจะต้องทำให้ได้แบบนี้ได้บ้าง ปณิธานง่ายมากๆ ครับ
บทความนี้เป็นเรื่องเกี่ยวกับการใช้ Machine Studying แบบ Supervised Studying โดยกลั่นกรองจากการเรียนรู้ตลอดครึ่งปีที่ผ่านมา ซึ่งอาจไม่ได้ครอบคลุมทุกอย่าง แต่ผมก็ได้พยายามทำออกมาให้เข้าใจได้ง่ายที่สุด เพื่อเป็นประโยชน์กับผู้ที่กำลังสนใจในด้านนี้เหมือนผม หรือผู้ที่เพิ่งรู้จักด้านนี้ก็สามารถเข้าใจได้
หากพูดถึงจุดเริ่มต้นเมื่อหลายๆ คนเข้าเว็บ Kaggle ครั้งแรก เชื่อว่าคงมีไม่น้อยที่สังเกตว่ามีการแข่งขันหนึ่งที่ได้รับความนิยมสูงและเป็นการแข่งขันที่เปิดโลก Machine Studying ของหลายๆ คน มันคือ การทำนายโอกาสที่คนจะรอดชีวิตจากเรือ Titanic โดยใช้ Machine Studying เพื่อสร้างแบบจำลองที่คาดการณ์ว่า “ผู้โดยสารประเภทไหนที่มีแนวโน้มที่จะเอาชีวิตรอดจากเหตุการณ์ได้มากกว่า” จากข้อมูลผู้โดยสารที่มีอยู่ เช่น ชื่อ อายุ เพศ ชนชั้นทางเศรษฐกิจและสังคม ฯลฯ
มันไม่ได้ยากหรือซับซ้อนจนเกินไป ผมจึงคิดว่าเป็นโอกาสดีที่เราจะมาเริ่มต้นจาก Titanic นี้แหละ!
แต่ก่อนจะเข้าเนื้อหาเรามาปูเกี่ยวกับพื้นฐานขั้นตอนกันก่อนครับ
ปกติหากเราไปหา Machine Studying Course of หรือ Workflow ก็ตามในอินเทอร์เน็ตเราจะเจอว่ามีค่อนข้างจะหลายแบบหลายเจ้า บางเจ้าละเอียดมาก บางเจ้าก็สำหรับมือใหม่เลย
ผมจึงทำการสรุปจากหลายๆที่และหยิบส่วนที่สำคัญให้พอเข้าใจได้ง่ายสำหรับมือใหม่แบบผม Workflow จะแบ่งเป็น 3 ส่วน 4 ขั้นตอน
1. Undertaking Setup
- Perceive the enterprise targets: ก่อนอื่นเราต้องเข้าใจเป้าหมายทางธุรกิจของเราก่อนว่าอยากจะทำอะไร เช่น อยากเพิ่มยอดขาย หาลูกค้าใหม่ หรือปรับปรุงบริการลูกค้า
- Body an issue: คือการตั้งคำถามที่เราต้องการจะหาคำตอบ จากความเข้าใจธุรกิจที่เราได้วิเคราะห์มา
- Select the answer to your drawback: หลังจากรู้เป้าหมายแล้ว เราก็ต้องเลือกวิธีการหรือประเภทของโมเดลที่จะช่วยเราแก้ปัญหานั้น เช่น ใช้โมเดลทำนาย (predictive mannequin) หรือโมเดลแบ่งกลุ่ม (clustering mannequin)
2. Information Preparation
- Information assortment: ขั้นแรกคือการรวบรวมข้อมูลที่เราต้องการ ไม่ว่าจะเป็นข้อมูลจากบริษัทเราเองหรือข้อมูลจากแหล่งอื่น ๆ เช่น ข้อมูลการขาย ข้อมูลลูกค้า หรือข้อมูลออนไลน์
- Information cleansing: ทำความสะอาดข้อมูลที่รวบรวมมา เช่น ลบข้อมูลที่ซ้ำกัน แก้ไขข้อมูลที่ผิดพลาด หรือเติมเต็มข้อมูลที่ขาดหายไป
- Exploratory Information Evaluation (EDA): วิเคราะห์ข้อมูลเบื้องต้นเพื่อทำความเข้าใจ เช่น ดูการกระจายตัวของข้อมูล หาความสัมพันธ์ระหว่างตัวแปรต่าง ๆ และสร้างกราฟหรือแผนภูมิเพื่อให้เห็นภาพรวมของข้อมูล
- Function engineering: สร้างและเลือกคุณสมบัติที่สำคัญสำหรับการทำนาย เช่น สร้างฟีเจอร์ใหม่จากข้อมูลเดิม หรือเลือกเฉพาะฟีเจอร์ที่มีความสำคัญต่อการทำนาย
- Cut up the info: แบ่งข้อมูลออกเป็นสองส่วน คือ ข้อมูลฝึก (coaching set) สำหรับฝึกโมเดล และข้อมูลทดสอบ (testing set) สำหรับทดสอบโมเดล เพื่อให้เรารู้ว่าโมเดลทำงานได้ดีเพียงใด
3. Modeling
- Hyperparameter tuning: ปรับค่าพารามิเตอร์ของโมเดลเพื่อเพิ่มประสิทธิภาพ เช่น การปรับค่า studying charge หรือจำนวนต้นไม้ใน random forest
- Prepare your fashions: ฝึกโมเดลด้วยข้อมูลฝึกที่เราเตรียมไว้ เพื่อให้โมเดลเรียนรู้จากข้อมูลและสามารถทำนายได้
- Make predictions: ใช้โมเดลที่ฝึกแล้วทำการทำนายกับข้อมูลทดสอบ เพื่อดูว่าโมเดลทำนายได้ดีเพียงใด
- Assess mannequin efficiency: ประเมินประสิทธิภาพของโมเดลโดยใช้ตัวชี้วัด เช่น ความถูกต้อง (accuracy) การเรียกคืน (recall) และความแม่นยำ (precision) เพื่อดูว่าโมเดลทำงานได้ดีเพียงใด
4. Deployment
- Deploy the mannequin: นำโมเดลที่ผ่านการทดสอบแล้วไปใช้งานจริง เช่น ในแอปพลิเคชันหรือระบบอื่น ๆ ที่เราต้องการ
- Monitor mannequin efficiency: คอยตรวจสอบการทำงานของโมเดลในสถานการณ์จริง เพื่อดูว่ามีประสิทธิภาพหรือไม่ หากโมเดลเริ่มทำงานได้ไม่ดี เราอาจต้องปรับปรุงหรือฝึกใหม่
เพื่อให้เข้าใจง่ายขึ้น จริงๆ แล้วถ้าสังเกตกัน Workflow นี้ไม่ต่างอะไรกับการทำอาหารเลย
- การตั้งค่าโครงการ → เสมือนการเข้าใจร้าน เข้าใจลูกค้า และกำหนดเป้าหมายที่ต้องทำ อย่างเช่น อยากทำอาหารที่ช่วยเพิ่มยอดขาย จากนั้นจึงเลือกหาสูตรอาหาร มันอาจมีหลายสูตรหรือหลายวัตถุดิบ แต่นั้นคือหน้าที่ของเราที่จะทดลองจนหาเจอ
- การเตรียมข้อมูล → การเตรียมข้อมูลเริ่มต้นจากการรวบรวมข้อมูลเหมือนกับการซื้อวัตถุดิบจากตลาด ต่อมาทำความสะอาดข้อมูลเหมือนกับการล้างผักและเตรียมวัตถุดิบให้พร้อม การวิเคราะห์ข้อมูลเบื้องต้นเปรียบเสมือนการตรวจสอบวัตถุดิบและวางแผนการปรุงอาหารตามสูตร
- การสร้างโมเดล → การสร้างโมเดลเริ่มต้นจากการปรับค่าพารามิเตอร์เหมือนกับการปรับสูตรอาหารเพื่อได้รสชาติที่ดีที่สุด จากนั้นฝึกโมเดลเหมือนกับการทำอาหารตามสูตรที่ปรับมาแล้ว
- การนำไปใช้งาน → การนำไปใช้งานเหมือนกับการเสิร์ฟอาหารให้ผู้อื่นชิม ตามด้วยการประเมินประสิทธิภาพและปรับปรุงเพื่อให้ดียิ่งขึ้น
เมื่อเราเอา Workflow ที่กล่าวมาใช้กับการแข่งขันทำนายโอกาสการรอดชีวิตจากเหตุเรือไททานิคจะสรุปออกมาสั้นๆดังนี้ครับ
Undertaking setup:
- เข้าใจโจทย์และเป้าหมายการทำนาย
Information preparation:
- โหลดข้อมูลและทำความสะอาด(Information cleansing)
- วิเคราะห์ข้อมูลเบื้องต้น(Information Evaluation)
- สร้างฟีเจอร์ใหม่(Function engineering)
- แบ่งข้อมูลเป็น coaching set และ testing set
Modeling:
- ปรับค่าพารามิเตอร์
- ฝึกโมเดล
- ทำนายด้วยข้อมูลทดสอบ
- ประเมินประสิทธิภาพของโมเดล
- ไม่มีส่วนที่4เนื่องจากเป็นการแข่งขัน
ส่วนนี้ผมขอเริ่มด้วยคำถาม แล้วทำไมต้อง Enterprise? วิเคราะห์เลยไม่ได้หรือ? ทำไมไม่เก็บข้อมูลไปก่อนแล้วค่อยมาดูว่าทำอะไรได้บ้าง?
จริงๆ แล้วใน Workflow ของหลายๆ ที่ก็ไม่ได้มีส่วนนี้ แต่ผมต้องการที่จะใส่มันเข้ามาเพื่อที่จะเชื่อมโยงผลการวิเคราะห์ข้อมูลให้ตอบโจทย์ธุรกิจมากที่สุดและเพื่อให้ Undertaking ของเราไม่เกิดปัญหาตามมา
- วิเคราะห์ไปแล้วไม่ได้มีผลกับธุรกิจ
- ทำโมเดลตั้งนานสุดท้ายได้ออกมาเป็นสิ่งที่ธุรกิจเขารู้กันอยู่แล้ว
- หรือหลงวนเวียนอยู่ในข้อมูลที่ไม่ได้สำคัญ
จึงเป็นสาเหตุที่เราต้องเข้าใจการทำงาน แนวคิด ข้อจำกัดและเป้าหมายของธุรกิจ
แต่ด้วยความที่บทความนี้เป็นการทำโจทการแข่งขันโมเดล เราจึงไม่ต้องวิเคราะห์ธุรกิจกัน และไปที่การทำโจทกันเลย
โจทย์ที่เราได้รับคือ ให้คาดการณ์ว่าผู้โดยสารคนไหนรอดชีวิตจากเหตุเรือไททานิคล่ม โดยจะมีเพียงสองค่า คือ รอดชีวิต กับ ไม่รอดชีวิต ในกรณีนี้ทำให้รู้ว่าต้องใช้ Classification (การจัดหมวดหมู่) ในการทำนายว่าผู้โดยสารรอดชีวิตหรือไม่ โดยจะมีโมเดลที่นิยมกันอย่าง Logistic Regression, Choice Tree, Random Forest, Help Vector Machine (SVM), Okay-Nearest Neighbors (KNN)