[Fundamental Data Analytics & Data Scientist EP.20] วัดประสิทธิภาพของโมเดลด้วย Evaluation Metrics Part 1

Pasith Thanapatpisarn
3 min readNov 27, 2021

--

ในตอนก่อนหน้าของ Series Data Science Model เราได้สร้างโมเดลด้วย Logistic Regression เพื่อเปรียบเทียบกับ Linear Regression ดังตารางด้านล่าง

ผลที่ทำนายได้ของ Logistic Regression (ทศนิยม 4 ตำแหน่ง)

ซึ่งวิธีการของเราก็คือ นำผลของทั้งสองโมเดลมาเปรียบเทียบกันทุกตัว ถ้าหากข้อมูลของเรามีน้อย ก็อาจจะดูประสิทธิภาพของแต่ละโมเดลได้ แต่ถ้าหากข้อมูลเป็น Big Data ที่มีเป็นล้านหล่ะ?

คำตอบก็คือ เราจะต้องมีค่าใดค่าหนึ่งที่ใช้ในการวัดประสิทธิภาพโดยรวมซึ่งเราเรียกกันว่า Evaluation Metrics นั่นเอง

Accuracy หนึ่งใน Evaluation Metrics

โดยในวันนี้ เราจะมาแนะนำ Evaluation Metrics ที่นิยมใช้ในการวัดประสิทธิภาพของโมเดลกันครับ

RMSE

เห็นชื่อแล้วคุ้นหน้ากันบ้างไหมเอ่ย? เพราะก่อนหน้านี้เราก็เคยใช้ Squared Error ที่ต่ำที่สุดหรือ Least Squared Error: LSE ในการสร้างโมเดล Linear Regression ไปแล้ว

Least Square Error

ซึ่ง 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)

source

จะเห็นว่าด้านในตารางจะมีตัวอักษรย่ออยู่ 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 ที่เราทำเอาไว้ในตอนที่แล้ว

Confusion Matrix

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 ของชาวต่างชาติ และคำถามที่สำคัญคือเขาชอบกินผัดไทยหรือไม่ ? เพื่อนำไปสร้างโมเดลสำหรับการทำนายความชอบกินผัดไทยของชาวต่างชาติ เพื่อปรับปรุงสูตรและเพิ่มยอดขายให้กับร้านขายผัดไทยของเราที่ตั้งอยู่แถวแหล่งท่องเที่ยวของชาวต่างชาติ

อย่าอ่านบทความตอนท้องว่างนะครับ😝 source

ผลของการทำนายโดยใช้ Logistic Regression ในกลุ่มตัวอย่างจำนวน 184 คนและสร้างเป็น Confusion Matrix ออกมาดังนี้

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 ข้างล่างเลยจ้า แล้วเรื่องถัดไปจะเป็นเรื่องอะไรก็ขอให้กดติดตามกันไว้ด้วยนะคร้าบ😍

--

--