ML Engineer มี metrics ที่ใช้วัดความถูกต้องของโมเดลหลายตัวมากดังนั้นเราจึงทำการรวบรวมค่าต่างๆไว้ เพราะมีเยอะมากจนบางทีก็ลืมมันไป ไว้เก็บไว้ดูหากลืมคำไหนในที่นี้ก็รวม metrics หลักๆ ไว้ในนี้ละกันเนอะ หลักๆ คือได้นำข้อมูลมากจาก DataRockie เพราะเขียนสรุปให้ได้ง่ายและเข้าใจ และมี metrics เพิ่มเติมที่เราได้เจอเพิ่มเติมและนำมาเพิ่มไว้ในนี้ด้วย

โดยเราแบ่งเป็น Matrix เป็น 2่ กลุ่มใหญ่ ๆ
สำหรับปัญหา regression และ classification

metrics ที่จะกล่าวถึงคือ

Regression
— MAE, MAD, MSE, MAPE, RMSE, R2
Classification
— Accuracy, Precision, Recall, F1-Score, F-Beta Score, AUC

ในบทความนี้เราใช้ terminology (คำศัพท์) ดังนี้

  • [y] prediction/forecast — ผลการทำนายของโมเดล
  • [y] actual — ค่าจริง
  • metrics คือค่าที่ได้จากการคำนวณ/ เปรียบเทียบผล prediction vs. actual ว่าโมเดลของเราทำนายได้ถูกต้องแค่ไหน

Regression

Metrics สำหรับปัญหา Regression เราสร้างโมเดล Regression เพื่อทำนายตัวแปร y แบบ continuous (ตัวเลข) สามารถเขียนสมการคำนวณค่า error ได้แบบนี้

Error = prediction — actual

ML เรียก error function นี้ว่า “Loss function” และเป้าหมายของการ train โมเดลคือการ minimize หรือลดค่า loss ให้มีค่าต่ำที่สุด รูปด้านล่างคือ Linear Regression ง่ายๆเพื่อทำนายค่า y ด้วยตัวแปร x

ref: http://www.sthda.com/english/sthda-upload/images/machine-learning-essentials/linear-regression.png

จุดสีดำบนรูปคือ actual data ส่วนเส้นตรงสีแดงคือ prediction ที่ได้จากการ train Linear Regression ระยะห่างของ prediction vs. actual คือค่า loss ที่เราต้องการ minimize

MAE,MAD

Metric ตัวแรก (หรือ loss function) ที่เราใช้เทรน Linear Regression คือ MAE ย่อมาจาก “Mean Absolute Error” คำนวณง่ายๆแค่หาผลรวมของค่า absolute(error) แล้วคูณกับ 1/n เพื่อเปลี่ยนเป็นค่าเฉลี่ย

MAD บางแหล่งอ้างอิงเรียกว่า“Median Absolute Deviation” หรือ “Mean Absolute Deviation” บางแหล่งใช้สูตรเดียวกัน บางแหล่งได้บอกความต่างของทั้งคู่ดังรายละเอียดด้านล่างนี้

ref: https://i.ytimg.com/vi/XJ8CpXtOATM/maxresdefault.jpg

หากมองรวมๆ แล้วหาก ไม่มี outlier แล้วนั้นค่าที่คำนวณคือเหมือนกันเลย

MAPE

MAPE ย่อมาจาก “Mean Absolute Percentage Error” มีลักษณะคล้าย MAE แต่เปลี่ยนค่าเป็น percent

ตัวอย่างการคำนวณ

MSE

MSE ย่อมาจาก “Mean Squared Error” จะคล้ายกับ MAE แค่เปลี่ยนจากการทำ absolute เป็น squared (ยกกำลังสองค่า error) ก่อนหาค่าเฉลี่ย

Technical Note — MSE จะดีกว่า MAE เวลาใช้พวก gradient descent algorithm เพราะว่าตอนหา derivative diff สมการ loss ด้วย calculusจะทำได้ง่ายกว่า

RMSE

RMSE ย่อมาจาก “Root Mean Square Error” ทำ square root ค่า MSE เพื่อให้ได้ค่า loss ที่มีหน่วยเดียวกับตัวแปร y เหตุผลที่ต้องทำ SQRT เพราะว่าเรายกกำลังสองค่า error ก่อนหาค่าเฉลี่ยทำให้หน่วยมันเปลี่ยนไปจากเดิม (คนคิด RMSE เลยบอกว่าขอรูทกลับได้ไหม)

จากที่อธิบายมาสามตัว RMSE จะแปลผลง่ายสุดเลย Linear Regression ที่มี RMSE เท่ากับ 2.56 แปลว่าโดยเฉลี่ยโมเดลทำนาย y ผิดไป +/- 2.56 point

MAE,MAD,MAPE MSE, RMSE มีค่ายิ่งต่ำยิ่งดี ถ้าเท่ากับ 0 แปลว่าโมเดลทำนายค่า y ได้ถูกต้องเป๊ะ 100% ในทางปฏิบัติโอกาสที่จะเทรนโมเดลได้ loss = 0 เป็นไปได้ยากมาก เพราะอาจนำไปสู่ปัญหา Overfitting ได้

R2

R2 หรือ R-Squared เป็น metric ที่ใช้กันเยอะมากเวลารัน Linear Regression แบบนักสถิติ ในสูตรด้านล่าง y_hat คือ prediction และ y_bar คือค่าเฉลี่ยของ y อีกชื่อที่นักสถิติใช้เรียก R2 คือ Explained Variance

Variance คืออะไร?

อธิบายภาษาคนง่ายๆ R2 คือ variance ที่โมเดลของเราอธิบายได้เป็นสัดส่วนจาก total variance ทั้งหมดของข้อมูลชุดนั้น (นักสถิติใช้สูตรคำนวณ total variance = explained variance + error) โดย R2 จะมีค่าอยู่ระหว่าง 0–1

ยิ่งเข้าใกล้ 1 แปลว่าโมเดลเราทำนายผลได้ดี

Classification

มาลองดู metrics ของปัญหา classification กันบ้าง ตัวอย่างวันนี้เราสร้างโมเดล ทำนายอีเมล์ ชื่อทางการของปัญหานี้คือ binary classification ที่ตัวแปร y มีได้แค่สองค่า {0, 1}

สิ่งแรกที่ทุกคนต้องรู้จักคือ Confusion Matrix ตาราง cross-tabs 2×2 ระหว่าง prediction และ actual label

ตารางด้านบนสรุปผลการทำนายผลลัพธ์จะถูกแบ่งเป็นสี่ช่อง แต่ละช่องมีชื่อเรียกทางการว่า True Positive, False Positive, False Negative, True Negative
(อ่านจากซ้ายไปขวา บนลงล่าง)

การคำนวณ metrics ต่างๆจะใช้ตัวเลขในตารางนี้เป็นหลัก และผลการทำนายอีเมล์ทั้งหมดนี้มี N=100

Accuracy

Accuracy คือ metric ที่ใช้งานง่ายที่สุด บอกว่าโมเดลเราทำนายถูกทั้งหมดกี่ % จากตารางด้านบน accuracy = (20 + 50) / 100 = 70% คำนวณจากเส้นทแยงมุมของ confusion matrix ได้เลย

ถ้าแบบทางการหน่อย เราจะเขียนสูตรว่า accuracy = (TP + TN)/ N โดยค่า accuracy จะมีค่าอยู่ระหว่าง 0–1 ยิ่งเข้าใกล้ 1 แปลว่าโมเดลเราทำนายผลได้ดีมาก

Precision

นิยามของ Precision คือความน่าจะเป็นที่โมเดลทำนาย spam ถูกต้องจากการทำนาย spam ทั้งหมด 32 ครั้ง (20 + 12 ผลรวมแถวบนของ confusion matrix)

แทนค่าในสมการ precision = TP / (TP + FP) = 20 / (20 + 12) = 62.5%

Recall

นิยามของ Recall คือความน่าจะเป็นที่โมเดลสามารถตรวจจับ spam จากจำนวน spam email ทั้งหมดในข้อมูลของเรา 38 ฉบับ (20 + 18 ผลรวมคอลั่มแรกของ confusion matrix)

แทนค่าในสมการ recall = TP / (TP + FN) = 20 / (20 + 18) = 52.6%

F1-Score

F1-Score คือค่าเฉลี่ยแบบ harmonic mean ระหว่าง precision และ recall นักวิจัยสร้าง F1 ขึ้นมาเพื่อเป็น single metric ที่วัดความสามารถของโมเดล (ไม่ต้องเลือกระหว่าง precision, recall เพราะเฉลี่ยให้แล้ว)

แทนค่าในสมการ F1 = 2 * ( (0.625 * 0.526) / (0.625 + 0.526) ) = 57.1%

Accuracy ไม่ใช่ metric เดียวที่เราต้องดู

F-Beta Score

F Score มีสูตรทั่วไปที่เราสามารถกำหนดค่า Beta ได้เอง (เช่น F1 คือการกำหนด Beta = 1) ถ้าเราอยากให้น้ำหนักไปทาง precision ให้กำหนดค่า Beta < 1 แต่ถ้าอยากเน้นที่ recall ให้กำหนดค่า Beta > 1 .

ถ้าเรากำหนด Beta=0 จะได้ค่า precision เพียวๆเลย ( prove สูตรให้ดูด้านล่าง) การใช้ F-Beta Score ช่วยให้เราปรับ metric ได้เหมาะสมตามสถานการณ์ เช่น งานที่เน้น recall ก็ให้ใช้ Beta = 2, 3, 5 เป็นต้น

# example beta=0
F0 = (1 + 0) * (precision * recall) / (0 + recall)
F0 = precision * recall / recall
F0 = precision

AUC

AUC ย่อมาจาก “Area Under <ROC> Curve” เป็นอีกหนึ่ง metric ยอดนิยมที่ใช้กันแทบทุกงานเลย AUC มีค่าอยู่ระหว่าง 0–1 ยิ่งเข้าใกล้ 1 แปลว่าโมเดลในภาพรวมสามารถทำนาย y ได้ดีมาก

  • AUC = 0.50 ไม่ต่างอะไรกับการเดาสุ่มเลย
  • AUC > 0.70 คือเกณฑ์มาตรฐานสำหรับโมเดลส่วนใหญ่
  • AUC > 0.80 โมเดลทำงานได้ดี
  • AUC > 0.90 โมเดลทำงานได้ดีมาก
https://blog.csdn.net/pipisorry/article/details/51788927

Conclusion

เวลาทำงาน regression จะใช้ RMSE กับ R2 เป็นหลัก
ส่วน classification จะดูค่า accuracy, precision, recall, F1, AUC

ในการคำนวนค่าต่างๆนั้น สามารถใช้ library ได้หลากหลายภาษา เช่น R/ Python
ได้อย่างง่ายดาย

ขอบคุณข้อมูลแหล่งที่มาจาก

--

--

Porntiva Visitsora-at

Big Data Engineering program, CITE, Dhurakij Pundit University