Introduction to Machine Learning#
บทเรียนเกี่ยวกับ machine learning เบื้องต้นได้ถูกสอนและบรรจุอยู่ใน Brain Buiding Blocks โดยสามารถทบทวนได้จาก Session ที่ 7 ของ Brain Building Blocks
Machine learning (การเรียนรู้ของเครื่อง) คือสาขาหนึ่งของปัญญาประดิษฐ์ (Artificial Intelligence, AI) ที่เน้นการพัฒนาและออกแบบวิธีการให้เครื่องคอมพิวเตอร์สามารถเรียนรู้จากข้อมูลโดยไม่จำเป็นต้องระบุโครงสร้างหรือกฎกำหนดอย่างชัดเจน เครื่องคอมพิวเตอร์จะสามารถวิเคราะห์และสกัดความรู้หรือแบบแผนที่อยู่ภายในชุดข้อมูล ทำนายผลลัพธ์ หรือทำงานอื่นได้ โดยจะต้องอาศัยอัลกอริทึม (Algorithms) ต่างๆ ในการเรียนรู้
AI-Machine Learning-Deep Learning ที่มา
แผนภาพข้างต้นแสดงถึงวิวัฒนาการ AI ซึ่งก็คือความฉลาดเทียมที่สร้างขึ้นให้กับสิ่งไม่มีชีวิต โดยมี Machine Learning หรือการเรียนรู้ของเครื่อง จัดเป็นส่วนหนึ่งและเปรียบเหมือนสมองของ AI และส่วน Deep Learning (การเรียนรู้เชิงลึก) จัดเป็นการเรียนรู้ของเครื่องด้วยอัลกอริทึมโครงข่ายประสาทเทียม (Artificial Neural Networks, ANNs) ซึ่งเลียนแบบการทำงานของระบบประสาทของมนุษย์
การจำแนก Machine learning ตามการเรียนรู้ของข้อมูล#
เราสามารถจำแนกประเภทของ Machine learning ตามการเรียนรู้ของข้อมูลได้เป็นหลายประเภท เช่น
Supervised Learning (การเรียนรู้แบบมีผู้สอน) เป็นการเรียนรู้ที่ต้องอาศัยชุดข้อมูลควบคู่ไปกับชุดคำตอบของข้อมูลหรือผลเฉลย (ซึ่งเรามักจะเรียกกันว่า labels หรือ targets) ในการฝึกฝนโมเดล เพื่อให้เกิดการเรียนรู้และสร้างรูปแบบในการจำแนกหรือทำนายผลลัพธ์ของชุดข้อมูลที่ต้องการศึกษา โมเดลที่เป็นที่นิยมใช้สำหรับ supervised learning ได้แก่ Linear Regression, Logistic Regression, Support Vector Machine (SVM), Decision Tree, Random Forest, และ Neural Networks เป็นต้น โจทย์ที่เรามักจะเจอในการทำงานกับ supervised learning ประกอบด้วย
Classification (การจำแนกหมวดหมู่): เป็นการจำแนกข้อมูลออกเป็นประเภทต่าง ๆ เช่น การจำแนกอีเมล์ว่าเป็นอีเมล์ที่เป็นสแปมหรือไม่เป็นสแปม หรือการจำแนกภาพถ่ายว่าเป็นภาพถ่ายของคนหรือสัตว์
Regression (การทำนายค่า): เป็นการทำนายผลลัพธ์ที่มีลักษณะเป็นค่าต่อเนื่องหรือตัวเลข โดยตัวอย่างที่นิยมใช้ เช่น การทำนายราคาของบ้าน การทำนายยอดขายสินค้าในอนาคต เป็นต้น
Unsupervised Learning (การเรียนรู้แบบไม่มีผู้สอน): ลักษณะของการเรียนรู้ประเภทนี้อาศัยชุดของข้อมูลที่ไม่มีชุดคำตอบหรือผลเฉลย โมเดลจะเรียนรู้โดยการสำรวจโครงสร้าง หาความสัมพันธ์โครงสร้างข้อมูล ตัวอย่างของเทคนิคที่เป็นที่รู้จักของ Unsupervised Learning ได้แก่ เทคนิค Clustering (การจัดกลุ่ม) และ เทคนิค Dimensionality Reduction (การลดมิติของข้อมูล เพื่อลดความซับซ้อนก่อนนำไปใช้ต่อ หรือเพื่อแสดงผลในรูปกราฟอ่านได้ง่ายขึ้น) ที่เราได้เรียนรู้กันมาในบทเรียนที่แล้ว
Reinforcement Learning (การเรียนรู้แบบเสริมกำลัง): เป็นการเรียนรู้ที่โมเดลพัฒนาตนเองขึ้น จากการลองผิดลองถูกในสถานการณ์ต่างๆ และจากการสังเกตสิ่งแวดล้อมรอบตัว ภายใต้เงื่อนไขของการได้รับรางวัลเมื่อโมเดลนั้นทำได้ถูกหรือตอบถูกนั่นเอง ตัวอย่างของ Reinforcement Learning ที่ถูกนำมาประยุกต์ใช้ในเกมส์ เช่น AlphaGo เป็น AI ที่เรียนรู้และฝึกหัดจากข้อมูลเกมส์การแข่งขันโกะจำนวนมหาศาลของผู้เล่นต่างๆ รวมถึงเกมส์ที่เล่นกับตัวเอง จนมีความสามารถเล่นเกมโกะให้ชนะผู้เล่นระดับโลกได้
ภาพแสดงการจำแนก Machine Learning ตามการเรียนรู้ของข้อมูล: Supervised Learning, Unsupervised Learning และ Reinforcement Learning ที่มา
กระบวนการสร้างแบบจำลอง Machine Learning#
แผนภาพแสดงกระบวนการสร้างแบบจำลอง Machine Learning ที่มา
แผนภาพด้านบนแสดงกระบวนการสร้างโมเดล Machine Learning เราจะสังเกตเห็นได้ว่า ขั้นตอนการเก็บข้อมูล และการเตรียมข้อมูลนั้นมีความสำคัญอย่างมาก ไม่แพ้ขั้นตอนการสร้างโมเดลเลยทีเดียว ซึ่งเราอาจจะต้องใช้ความละเอียดรอบคอบและเวลาพอสมควรกับขั้นตอนนี้ ต่อไปเราจะมาลงรายละเอียดของแต่ละขั้นตอนกัน
การเก็บรวบรวมข้อมูล (Data Collection): ข้อมูลเหล่านี้อาจเป็นข้อมูลที่ได้รับการจัดเก็บในรูปแบบที่มีลักษณะโครงสร้างแน่นอนและสามารถนำไปใช้ได้ง่าย (structured data) เช่น tsv และ csv หรืออาจเป็นข้อมูลที่ไม่ได้มีโครงสร้างที่แน่นอนและเป็นระเบียบ (unstructured data)
การตรวจสอบและจัดเตรียมข้อมูล (Data Preprocessing): การตรวจสอบและจัดเตรียมข้อมูลให้พร้อมใช้งาน ประกอบด้วย
การทำความสะอาดข้อมูล (Data Cleaning) ด้วยการจัดการข้อมูลที่หายไปโดยการเติมข้อมูล (data imputation) หรือการละทิ้งข้อมูล (drop) ที่เราไม่สนใจ
การแปลงข้อมูลให้เป็นรูปแบบที่เหมาะสม (Transformation) ด้วยการปรับข้อมูลให้อยู่ในรูปแบบที่คอมพิวเตอร์จะสามารถนำไปใช้งานได้ง่าย
การรวมข้อมูล (Data Integration) โดยการนำข้อมูลที่เกี่ยวข้องทั้งหมด มารวบรวมให้เป็นข้อมูลชุดเดียวกันโดยทำการเชื่อมข้อมูลของ บุคคลหรือวัตถุสิ่งเดียวกันให้อยู่ใน entry เดียวกัน หรือสามารถอ้างอิงถึงกันได้ง่าย
การดึงคุณลักษณะที่สำคัญออกมาจากข้อมูล (Feature Extraction): ขั้นตอนนี้จะดึงคุณลักษณะที่สำคัญมาเป็นตัวแทนของจุดข้อมูลที่เรามี โดยเราจะเรียกคุณลักษณะที่ดึงออกมาว่า feature ซึ่งมักจะเป็นคุณลักษณะที่จะช่วยให้เราแก้โจทย์ปัญหาได้ง่ายขึ้นกว่าการใช้ข้อมูลดิบโดยตรง และควรเป็นคุณลักษณะที่มีความเหมาะสมต่อโมเดลที่เลือกใช้
การเลือกแบบจำลอง (Model Selection): คือการพิจารณาความเหมาะสมของปัญหาและข้อมูลที่มีอยู่ โดยเลือกแบบจำลองที่เหมาะสมต่อผลลัพท์ที่ต้องการ เช่น
แบบจำลองการทำนายค่า (regression) เหมาะสำหรับปัญหาที่ต้องการผลลัพธ์แสดงค่าตัวเลข (หรือชุดของตัวเลข) ที่มีความต่อเนื่อง หรือมีสมบัติความเป็นลำดับขั้น ordinal
แบบจำลองการจำแนกประเภท (classification) เหมาะสำหรับปัญหาที่ต้องการจำแนกจุดข้อมูลแต่ละจุดว่าเป็นประเภทใด เช่น การจำแนกข้อมูลภาพถ่ายสมองว่าเป็นผู้มีสุขภาพดีหรือเป็นผู้ที่มีภาวะผิดปกติทางสมอง
แบบจำลองการจัดกลุ่มข้อมูล (clustering) เหมาะสมกับการดูโครงสร้างของข้อมูลว่ามีการกระจุกตัว หรือการกระจายตัวในรูปแบบใด ซึ่งใช้การเรียนรู้แบบ unsupervised
การฝึกแบบจำลอง (Model Training): ในกระบวนการนี้จะเป็นการให้ข้อมูลที่เตรียมแก่แบบจำลองที่เราเลือก เพื่อให้แบบจำลองใช้ฝึกฝนและเรียนรู้วิธีการที่จะแก้ปัญหาให้ได้
การประเมินแบบจำลอง (Model Evaluation): เมื่อแบบจำลองถูกฝึกแล้ว จะต้องทำการประเมินผลประสิทธิภาพของแบบจำลอง โดยใช้ชุดข้อมูลทดสอบที่แยกไว้เพื่อประเมินค่าเชิงสถิติ เช่น ค่าความถูกต้อง (accuracy) ค่าความแม่นยำ (precision) ค่าความไว (recall) หรือค่าความคลาดเคลื่อนเฉลี่ย (mean squared error) เป็นต้น
สิ่งที่กล่าวมาข้างต้น เป็นหลักการพื้นฐานที่เราสามารถนำมาใช้เพื่อเป็นแนวทางในการศึกษาเพื่อสร้างแบบจำลองที่ตรงตามความต้องการและแก้ปัญหาได้อย่างเหมาะสม มุมมองการตั้งคำถามหรือเป้าหมายในการสร้างแบบจำลองเองก็เป็นส่วนสำคัญที่จะทำให้เราสามารถใช้ machine learning ในการแก้ปัญหาได้อย่างมีประสิทธิภาพ นอกจากวิธีการพื้นฐานดังแสดงข้างต้นแล้วยังมีตัวอย่างการวิเคราะห์ปัญหารูปแบบอื่น ๆ เช่น https://developers.google.com/machine-learning/problem-framing ซึ่งแต่ละวิธีก็มีข้อดีและข้อด้อยต่างกัน และขึ้นกับความถนัดของผู้ใช้ด้วยเช่นกัน
Model Evaluation#
บทเรียนเรื่อง model evaluation ได้ถูกบรรจุอยู่ใน Brain Buiding Blocks โดยสามารถทบทวนเนื้อหาได้จาก Model Evaluation ของภายใต้ Session 6: Data Modeling
การประเมินแบบจำลองหรือโมเดลเป็นหนึ่งในขั้นตอนที่สำคัญในการวัดประสิทธิภาพ (performance) ของโมเดลว่าดีเพียงพอต่อการนำไปใช้งานหรือไม่ กระบวนการนี้มีความสำคัญไม่น้อยไปกว่าการเลือกและการสร้างโมเดล
ตัวอย่างตัวชี้วัดที่เป็นที่นิยมใช้ในการประเมินแบบจำลองในโจทย์ประเภท regression ประกอบด้วย R-squared, Mean Absolute Error (MAE), Mean Squared Error (MSE), Root Mean Squared Error (RMSE)
ในส่วนของโจทย์ประเภท (classification) จะมีตัวอย่างตัวชี้วัด ดังนี้
Confusion Matrix เป็นตารางที่แสดงผลลัพธ์จากการทำนายของแบบจำลองในการแก้ปัญหา classification โดยที่ขนาดของตารางขึ้นอยู่กับจำนวนประเภท (class หรือ category) ที่เราต้องการทำนายผลลัพธ์ เช่น สำหรับโจทย์ที่มี 2 classes ตัว confusion matrix จะเป็นตารางขนาด 2 x 2 ถ้าเกิดว่าเป็นโจทย์ที่มีจำนวน class มากกว่า 2 ตัว confusion matrix ก็จะมีขนาดใหญ่ขึ้นเรื่อย ๆ เช่น 4 x 4 สำหรับโจทย์ที่ต้องการจำแนกข้อมูลออกเป็น 4 classes
ตัวอย่าง สมมติว่าเราต้องการใช้โมเดล machine learning ในการตรวจคัดกรองดูว่าผู้ที่เข้ารับการตรวจมีภาวะรู้คิดบกพร่องหรือว่าปกติดี โจทย์ข้อนี้จะเป็นโจทย์ classification ที่มี 2 classes ประกอบด้วย
Positive - มีภาวะรู้คิดบกพร่อง
Negative - ปกติดี
ในการวัดผล confusion matrix จะมีขนาดเป็น 2 x 2 ตามแผนภาพด้านล่าง
แผนภาพแสดง Confusion Matrix ที่มา
โดยที่
TPs: True Positives คือ จำนวนเคสที่พบว่า เป็น positive และโมเดลทำนายถูกต้อง ว่าเป็น positive
โมเดลตอบถูกต้องว่าผู้เข้ารับการตรวจมีภาวะรู้คิดบกพร่องจริง
TNs: True Negatives คือ จำนวนเคสที่พบว่า เป็น negative และโมเดลทำนายถูกต้อง ว่าเป็น negative
โมเดลตอบถูกต้องว่าผู้เข้ารับการตรวจไม่มีภาวะรู้คิดบกพร่องจริง
FPs: False Positives คือ จำนวนเคสที่พบว่า เป็น negative แต่โมเดลทำนายผิด ว่าเป็น positive
โมเดลตอบว่าผู้เข้ารับการตรวจมีภาวะการรู้คิดบกพร่อง ทั้ง ๆ ที่ในความเป็นจริง เป็นผู้ที่ไม่มีภาวะนั้น
FNs: False Negatives คือ จำนวนเคสที่พบว่า เป็น postitive แต่โมเดลทำนายผิด ว่าเป็น negative
โมเดลตอบว่าผู้เข้ารับการตรวจไม่มีภาวะการรู้คิดบกพร่อง ทั้ง ๆ ที่ในความเป็นจริง เป็นผู้ที่ที่มีภาวะนั้น หากเรานำเอาโมเดลที่มี false negative เยอะมาใช้งาน เราก็จะเสียโอกาสที่จะตรวจพบผู้ที่มีภาวะการรู้คิดบกพร่อง
Accuracy (ค่าความถูกต้อง): เป็นค่าที่แสดงถึงความแม่นยำของโมเดลโดยรวม ใช้บอกว่าโมเดลสามารถทำนายได้ถูกต้องและตรงกับสิ่งที่เกิดขึ้นจริงเท่าไรเมื่อเทียบกับจำนวนการทำนายทั้งหมด โดยค่า accuracy จะมีค่าอยู่ระหว่าง 0 กับ 1 ยิ่งมีค่าเข้าใกล้ 1 แปลว่าโมเดลเราทำนายผลได้ดีมาก
Precision (ค่าความแม่นยำ): เป็นค่าที่แสดงถึงความสามารถของโมเดลในการทำนายคลาสที่สนใจ (positive) ว่าได้แม่นยำแค่ไหน หรือก็คือ สัดส่วนจำนวนเคสที่ป่วยจริง ต่อ จำนวนเคสทั้งหมดที่โมเดลทำนายว่าป่วย
Sensitivity/Recall (ค่าความอ่อนไหวหรือค่าความไว): แสดงถึงความสามารถของโมเดลในการทำนายคลาสที่สนใจ (positive) ได้อย่างถูกต้อง เทียบกับผลการทำนายว่าเป็นคลาสที่สนใจทั้งหมด หรือก็คือ สัดส่วนจำนวนเคสที่ป่วยจริงและโมเดลทำนายถูกต้อง ต่อ จำนวนเคสคนป่วยทั้งหมดในกลุ่มตัวอย่าง
Specificity (ส่วนค่าความจำเพาะ): แสดงถึงความสามารถของโมเดลในการทำนายคลาสที่เราไม่สนใจ (negative) ได้อย่างถูกต้อง หรือก็คือ สัดส่วนจำนวนเคสปกติที่โมเดลทำนายถูกต้อง ต่อ จำนวนเคสคนปกติทั้งหมดในกลุ่มตัวอย่าง
F1 Score: ค่าเฉลี่ยฮาร์โมนิกระหว่าง precision และ recall
ROC Curve (Receiver Operating Characteristic Curve): กราฟที่แสดงความสามารถในการแยกแยะของโมเดลระหว่าง TPR: True Positive Rate (sensitivity) และ FPR: False Positive Rate (1-specificity) เป็นการ plot ระหว่างค่าสัดส่วนที่ทำนายได้อย่างถูกต้อง กับค่าสัดส่วนที่ทำนายผิด (false positive)
โดยที่
AUC (Area Under the ROC Curve): ค่าของพื้นที่ใต้เส้นโค้ง ROC ซึ่งสามารถใช้เป็นตัวบ่งชี้ของประสิทธิภาพของโมเดลในการแยกแยะ AUC มีค่าอยู่ระหว่าง 0 กับ 1 ยิ่งค่าเข้าใกล้ 1 แปลว่าโมเดลในภาพรวมสามารถทำนายผลลัพธ์ได้ดีมาก
แผนภาพแสดง ROC curve ซึ่งค่าทางแกน \(x\) คือ False Positive Rate (TPR) และค่าทางแกน \(y\) คือ True Positive Rate (FPR) ที่มา
การวัดผลประสิทธิภาพโมเดลด้วย ROC curve
เส้นประสีแดงแสดงประสิทธิภาพของโมเดลแบบทำนายสุ่ม เส้นทึบสีเขียวและเส้นทึบสีฟ้าที่อยู่เหนือเส้นประสีแดงไปทางมุมซ้ายบน แสดงถึงโมเดลที่มีประสิทธิภาพดี ในขณะโมเดลที่ก่อให้เกิดเส้นที่เอนไปทางมุมขวาล่างที่ต่ำกว่าเส้นสีแดง แสดงถึงโมเดลมีประสิทธิภาพต่ำ
จากเส้น ROC curves เราสามารถประมาณพื้นที่ใต้กราฟหรือ AUC (Area under the ROC curve) ของโมเดลที่เกิดจากการทำนายแบบสุ่ม (random classifier) ได้เท่ากับ 0.5 โมเดลที่มีประสิทธิภาพดีนั้นจะมีค่า AUC เข้าใกล้ 1 ซึ่งเส้น ROC curve จะเข้าใกล้ทางด้านมุมซ้ายบนมากที่สุด
อย่างไรก็ตามในการใช้งานจริงเราควรพิจารณาตัวชี้วัดเหล่านี้ประกอบกัน ซึ่งเราสามารถเรียกใช้ฟังก์ชันเหล่านี้ในไลบรารี scikit-learn
โดยสามารถศึกษาเพิ่มเติมได้จาก Model Evaluation
ตัวอย่างการใช้ Confusion Matrix#
สมมติผลการทดสอบโมเดล machine learning (ML) คัดกรองผู้ป่วยโควิดด้วย chest X-ray เปรียบเทียบผลการทดสอบด้วย Real time (RT)-PCR ซึ่งเป็นวิธีมาตรฐานและมีความแม่นยำ จากจำนวนผู้ทดสอบทั้งหมด 1,584 ราย มีค่าดังตาราง confusion matrix นี้
ผลในตารางแสดงว่า การใช้โมเดล ML สามารถจำแนกผู้ติดเชื้อโควิดได้ถูกต้องจำนวน 1,069 ราย และผู้ไม่ติดเชื้อได้ถูกต้องจำนวน 405 ราย และพบว่ามีจำนวน 38 รายที่โมเดลทำนายว่าไม่มีเชื้อโควิด แต่จากการตรวจด้วย RT-PCR ยืนยันการติดเชื้อโควิด และที่น่าสนใจมีจำนวน 72 รายที่โมเดลทำนายว่าติดเชื้อแต่จากการตรวจด้วย RT-PCR พบว่าไม่ติดเชื้อ (ถือเป็น false alarm)
ลองคำนวณค่า accuracy, precision, specificity, sensitivity ของโมเดล ML คัดกรองผู้ป่วยโควิดด้วย chest X-ray ด้วยสูตรการคำนวณที่อธิบายไว้ข้างต้น และอภิปรายถึงผลที่คำนวณได้ต่อประสิทธิภาพของโมเดล
จากค่าที่คำนวณ accuracy, specificity, precision, sensitivity ของโมเดล ML คัดกรองผู้ป่วยโควิดด้วย chest X-ray เราสมควรนำโมเดลมาใช้จริงหรือไม่ เพราะอะไร
ใน tutorial ถัดไป เราจะมาเรียนรู้การใช้โมเดล Machine learning ที่ผ่านการเรียนรู้แบบ supervised learning มาแก้ปัญหา classification กัน โดยเราจะลองมาทำความรู้จักกับ Logistic Regression, Support Vector Machine, Decision Tree, Random Forest, และ K-Nearest Neighbors และใน tutorial สุดท้ายของบทเรียนนี้ เราจะได้ลองนำเอาโมเดลเหล่านี้มาทดลองใช้ในการจำแนกอารมณ์ของคนจากคลื่นสัญญาณไฟฟ้าของสมอง (Electroencephalogram, EEG) กัน
ผู้จัดเตรียม tutorial: ดร. มนฤดี เลี้ยงรักษา