[Fundamental Data Analytics & Data Scientist EP.20] วัดประสิทธิภาพของโมเดลด้วย Evaluation Metrics Part 1
ในตอนก่อนหน้าของ Series Data Science Model เราได้สร้างโมเดลด้วย Logistic Regression เพื่อเปรียบเทียบกับ Linear Regression ดังตารางด้านล่าง
ซึ่งวิธีการของเราก็คือ นำผลของทั้งสองโมเดลมาเปรียบเทียบกันทุกตัว ถ้าหากข้อมูลของเรามีน้อย ก็อาจจะดูประสิทธิภาพของแต่ละโมเดลได้ แต่ถ้าหากข้อมูลเป็น Big Data ที่มีเป็นล้านหล่ะ?
คำตอบก็คือ เราจะต้องมีค่าใดค่าหนึ่งที่ใช้ในการวัดประสิทธิภาพโดยรวมซึ่งเราเรียกกันว่า Evaluation Metrics นั่นเอง
โดยในวันนี้ เราจะมาแนะนำ Evaluation Metrics ที่นิยมใช้ในการวัดประสิทธิภาพของโมเดลกันครับ
RMSE
เห็นชื่อแล้วคุ้นหน้ากันบ้างไหมเอ่ย? เพราะก่อนหน้านี้เราก็เคยใช้ Squared Error ที่ต่ำที่สุดหรือ Least Squared Error: LSE ในการสร้างโมเดล Linear Regression ไปแล้ว
ซึ่ง Root Mean Squared Error: RMSE เป็น Evaluation Matrix ที่เหมาะสำหรับการวัดประสิทธิภาพของโมเดลประเภท Regression Problem
ขั้นตอนการคำนวณก็ทำได้โดยนำผลลัพธ์ของการทำนายมาเทียบกับค่าจริงกำลังสอง (Squared Error) จากนั้นนำมาเฉลี่ยและใส่ root เพื่อให้เห็นค่าความเบี่ยงเบนของโมเดลนั่นเอง (จะเห็นว่ารูปสมการ RMSE จะคล้ายกันกับ Standard Deviation เลยครับ)
โดยปกติแล้ว โมเดลที่มีประสิทธิภาพสูงที่สุดจะมีค่า RMSE ที่ต่ำที่สุดเมื่อเทียบกับโมเดลแบบอื่นครับ (ซึ่งก็คือ Least RMSE ครับ)
Confusion Matrix
มันคือตารางวัดประสิทธิภาพของโมเดล classification ที่มีขนาด C*C โดยที่ค่า Cก็คือประเภทของผลลัพธ์ที่เราได้ (Classifiers) เช่น ถ้าหากเราสร้างโมเดลในการทำนายโรคไข้หวัด (เป็นไข้หวัด, ไม่เป็นไข้หวัด) Confusion Matrix ของเราก็จะมีขนาด 2*2 นั้นเอง
โดยลักษณะตารางของ Confusion Matrix จะแบ่งสองส่วนคือส่วนที่เป็นผลลัพธ์จริง (True/Actual Class) และผลลัพธ์ที่ได้จากการทำนายผลด้วยโมเดล (Predicted Class)
จะเห็นว่าด้านในตารางจะมีตัวอักษรย่ออยู่ 4 ตัวที่เราจะต้องทำความรู้จักนั้นคือ
- True Positive (TP): หมายถึงจำนวนข้อมูลที่เป็น positive และโมเดลสามารถทำนายออกมาได้ถูกต้องว่าเป็น positive เช่น คนที่ไม่ได้เป็นไข้หวัดอยู่แล้วและโมเดลทำนายออกมาได้ถูกต้องว่าเขาไม่ได้เป็นไข้หวัด
- True Negative (TN): หมายถึงจำนวนข้อมูลที่เป็น negative และโมเดลสามารถทำนายออกมาได้ถูกต้องว่าเป็น negative เช่น คนที่เป็นไข้หวัดอยู่แล้วและโมเดลทำนายออกมาได้ถูกต้องว่าเขาเป็นไข้หวัด
- False Positive (FP): หมายถึงจำนวนข้อมูลที่เป็น negative แต่โมเดลทำนายออกมาว่าเป็น positive เช่น คนที่เป็นไข้หวัดอยู่แล้วแต่โมเดลทำนายออกมาได้ว่าเขาไม่ได้เป็นไข้หวัด ปัญหานี้ในทางสถิตินิยมเรียกกันว่า Type I error
- False Negative (FN): หมายถึงจำนวนข้อมูลที่เป็น positive แต่โมเดลทำนายออกมาว่าเป็น negative เช่น คนที่ไม่ได้เป็นไข้หวัดแต่โมเดลทำนายออกมาได้ว่าเขาเป็นโรคไข้หวัด ปัญหานี้ในทางสถิตินิยมเรียกกันว่า Type I error
นั่นแปลว่าข้อมูลที่ทายได้ถูกต้องนั้นจะต้องอยู่ในพื้นที่สีเขียว ซึ่งก็คือ True Negative, True Positive และข้อมูลที่โมเดลทายผิดจะไปอยู่ในพื้นที่สีแดง ซึ่งก็คือ False Negative, False Positive ซึ่งโมเดลที่มีประสิทธิภาพสูงเมื่อวัดด้วย confusion matrix ก็หมายถึงโมเดลที่มีข้อมูลอยู่ในพื้นที่สีเขียวมากที่สุดนั่นเอง
ในกรณีที่ Confusion Matrix มีขนาดใหญ่มาก เรายังสามารถหาค่าที่สามารถวัดประสิทธิภาพของโมเดลที่เป็นค่าๆเดียวได้ซึ่งเป็นที่นิยมมากกว่าการอ่าน Confusion Matrix โดยตรง ได้แก่
Accuracy: ความถูกต้องของการทำนายผลทั้งหมดของโมเดล
Precision: ความถูกต้องของประเด็นที่โมเดลสนใจที่จะทำนาย
Recall: สัดส่วนที่โมเดลสามารถทำนายประเด็นที่เราสนใจทั้งหมด
F1-Score
F1-Score นั้นคือค่าเฉลี่ยแบบ harmonic (harmonic mean) ของ Precision และ Recall ซึ่งจะทำให้ค่าที่ออกมาเป็นการวัดประสิทธิภาพของโมเดลด้วย 2 Metrics รวมกันนั่นเอง
Example 1
ตัวอย่างที่เราจะใช้ก็คือผลของ Confusion Matrix ที่มาจากการทำนายโรคมะเร็งเต้านมด้วย Logistic Regression ที่เราทำเอาไว้ในตอนที่แล้ว
Accuracy = (41+72)/(41+72+0+1) = 99.12%
Precision = 41/(41+0) = 100%
Recall = 41/(41+1) = 97.62%
F1-score = 2(1*0.9762)/(1+0.9762) = 98.8%
ซึ่งถ้าหากดูภาพรวมแล้ว โมเดลนี้ถือว่าเป็นโมเดลที่มีประสิทธิภาพและทำนายผลได้อย่างแม่นยำมากๆ เนื่องจาก Accuracy และ F1-score มีค่าถึง 98–99%
แต่ในความเป็นจริงแล้วค่า Matrix เหล่านี้ก็ไม่ได้ออกมาสวยงามเสมอไป เราลองมาดูตัวอย่างที่สองกันครับ
Example 2
สมมติว่าเราไปเก็บข้อมูลประชากรศาสตร์, ความถี่ในการเข้าร้านอาหาร/street food , ความชอบในการกินอาหาร street food ของชาวต่างชาติ และคำถามที่สำคัญคือเขาชอบกินผัดไทยหรือไม่ ? เพื่อนำไปสร้างโมเดลสำหรับการทำนายความชอบกินผัดไทยของชาวต่างชาติ เพื่อปรับปรุงสูตรและเพิ่มยอดขายให้กับร้านขายผัดไทยของเราที่ตั้งอยู่แถวแหล่งท่องเที่ยวของชาวต่างชาติ
ผลของการทำนายโดยใช้ Logistic Regression ในกลุ่มตัวอย่างจำนวน 184 คนและสร้างเป็น Confusion Matrix ออกมาดังนี้
จากตาราง Confusion Matrix เราจะได้ค่า
Accuracy = (76+63)/(76+63+10+35) = 75.54%
Precision = 76/(76+10) = 88.37%
Recall = 76/(76+35) = 68.47%
F1-score = 2*(0.8837*0.6847)/(0.8837+0.6847) = 77.16%
ซึ่งเราจะเห็นว่าโมเดลก็ถือว่ามีความแม่นยำในการทำนาย เนื่องจากมีค่า Accuracy และ Precision ที่สูงถึง 75.54%, 88.37% ตามลำดับ
แต่โมเดลนี้กลับมีค่า Recall เพียงแค่ 68.47% ทั้งนี้เนื่องจากโมเดล “ทำนายเฉพาะคนที่ชอบผัดไทยได้แม่นยำน้อย ” คนที่ชอบผัดไทยทั้งหมดควรเป็น 76+35 = 111 คน แต่โมเดลทำนายเฉพาะคนที่ชอบผัดไทยได้เพียง 76 คน
ซึ่งวิธีการแก้ไขปัญหาเบื้องต้นก็คือ การเข้าไปดูชุดข้อมูลของคนที่ชอบผัดไทยว่าตัวแปรใดหรือชุดข้อมูลใดที่ทำให้เกิดความสับสนของโมเดลที่ใช้ในการทำนาย การเพิ่มชุดข้อมูลฝึก และการ optimize model ให้ทำนายคนที่ชอบผัดไทยได้แม่นยำยิ่งขึ้นครับ
จบแล้วนะครับสำหรับ Evaluation Metrics Part 1 แน่นอนว่ายังไม่จบเพียงเท่านี้ ยังมี Metrics ตัวอื่นสำหรับการประเมินประสิทธิภาพของโมเดลอีกใน Part ที่สองครับ
ถ้าชอบหรือต้องการสอบถามหรือพูดคุยเพิ่มเติม กดไปที่เพจ ดาต้าไส้แห้ง หรือ LinkedIn ข้างล่างเลยจ้า แล้วเรื่องถัดไปจะเป็นเรื่องอะไรก็ขอให้กดติดตามกันไว้ด้วยนะคร้าบ😍