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

Pasith Thanapatpisarn
3 min readJan 8, 2022

--

สวัสดีครับ ในตอนที่สองของ Evaluation Metrics เรามาทำความรู้จักกับเส้น ROC และค่า AUC กันครับ

สำหรับใครที่ยังไม่ได้อ่านเนื้อหาของตอนที่แล้ว (ซึ่งเกี่ยวข้องกับเนื้อหาใน Part นี้ด้วย) ก็สามารถเข้าไปอ่านได้ที่ลิงค์ด้านล่างครับ

และเนื้อหานี้อยู่ใน Fundamental Data Analytics & Data Scientist Series ถ้าหากสนใจอ่านเนื้อหาทั้งหมดภายใน Series นี้ก็สามารถเข้าไปอ่านที่ลิงค์ด้านล่างได้เลยครับ (รับรองว่าเนื้อหาสนุกและได้ความรู้ทุกตอนแน่นอนครับ🙂)

ROC-AUC Curve

ROC (Receiver Operating Characteristic) Curve เป็นเส้นที่ใช้วัดถึงประสิทธิภาพของโมเดลแบบ Classification ว่าสามารถทำนายประเด็นที่สนใจได้อย่างแม่นยำขนาดไหน(โดยทั่วไปนิยมวัดประสิทธิภาพของโมเดลแบบ Binary)

ส่วน AUC ก็คือ Area Under ROC Curve หรือพื้นที่ใต้กราฟ ROC นั่นเอง

ROC Curve

แต่ก่อนที่เราจะไปรู้จักเส้น ROC และ AUC เราต้องทำความรู้จักกับค่าแต่ละแกนของเส้น ROC เสียก่อน

Sensitivity & Specificity

ค่าความอ่อนไหว (Sensitivity) มันก็คือ“สัดส่วนความถูกต้องของผลการทำนายที่เราสนใจ (True Positive)” โดยมีค่าเท่ากับ

Sensitivity formula

ซึ่งจะสังเกตได้ว่า Sensitivity มันก็คือค่าเดียวกันกับ Recall นั่นเอง

ส่วนค่าความจำเพาะ (Specificity) ก็คือ“สัดส่วนความถูกต้องของผลการทำนายที่เราไม่ได้สนใจ (True Negative)” โดยมีค่าเท่ากับ

Specificity formula

Sensitivity & Specificity Example

ตัวอย่างสมมติที่ใช้ในตอนนี้จะต่อยอดมาจากตอนที่แล้ว นั่นก็คือโมเดลสำหรับการทำนายความชอบผัดไทยของชาวต่างชาตินั่นเอง

Confusion Matrix

ก่อนอื่นเรามาทบทวนเนื้อหาของ Part ที่แล้วด้วยการหาค่า Matrix ที่ใช้ทั้งหมดก่อนครับ

สูตรทั้งหมดจาก Part ที่แล้ว

จากตาราง เราก็จะได้

Accuracy = (76+63)/(76+63+10+35) = 77.22%

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%

และอีก 2 Matrix ที่เราเพิ่มเข้ามาใน Part นี้จะเท่ากับ

Sensitivity = Recall = 68.47%

Specificity = 63/(63+10) = 86.3%

tip✔️: ในกราฟ ROC จะเขียนว่าใช้ (1-Specificity) เราจะได้ค่า

1-specificity formula

เนื่องจากจะทำให้เส้น ROC นั้นวัดประสิทธิภาพของโมเดลจากการทำนายแบบ Positive กล่าวคือเส้น ROC นั้นวัดสัดส่วนของ True Positive เทียบกับสัดส่วนของ False Positive

Sensitivity และ (1-Specificity) จึงถูกเรียกอีกชื่อหนึ่งว่า True Positive Rate และ False Positive Rate

ดังนั้นค่า False Positive Rate ในตัวอย่างนี้จึงมีค่าเท่ากับ

(1-specificity) = 1–0.8613 = 0.1387 = 13.87%

เท่านี้เราก็เข้าใจค่าทั้งหมดมาสร้างกราฟ ROC กันแล้วครับ

ROC-AUC Example

เราลองมาอ่านผลของเส้น ROC และ AUC จากตัวอย่างเดิมกันครับ

รูปร่างของเส้น ROC จะเป็นเส้นที่โค้งเข้าหา True Positive Rate และ False Positive Rate ที่ [1, 1] เนื่องจากสุดท้ายแล้วหากค่าใดค่าหนึ่งมีค่าเท่ากับ 1 แล้วอีกค่าหนึ่งจะมีค่าเท่ากับ 1 เช่นกัน

ตัวอย่างเช่น หาก True Positive Rate เท่ากับ 1 หมายความว่าโมเดลสามารถทำนายคนที่ชอบกินผัดไทยได้ทั้งหมด แปลว่าความผิดพลาดที่โมเดลจะทำนายคนที่ชอบกินผัดไทยจะไม่เกิดขึ้น (False Positive Rate = 1)

ถ้าหากเราสร้างเส้น ROC จากผลของการทำนายเราจะเห็นว่าค่า True Positive Rate และ False Positive Rate มีค่าเท่ากันกับค่าที่เราเคยหามาเลย (68.47% และ 13.7% ตามลำดับ)

และสุดท้ายก็คือค่า AUC ซึ่งถ้าหากค่า AUC มีค่าสูงก็หมายความว่าโมเดลมีประสิทธิภาพมากนั่นเอง โดยเมื่อใช้ Logistic Regression (เส้นสีส้ม) ในการทำนายค่า AUC มีค่าเท่ากับ 74% ซึ่งเมื่อเทียบกับการไม่ใช้โมเดลในการทำนายซึ่งก็คือการสุ่มเสี่ยงทายหรือ Gambling (เส้นสีฟ้า) จะมีค่าเท่ากับ 50% ดั่งวลีที่ว่า “สุ่มแบบ 50:50” หมายความว่าการใช้ Logistic Regression โอกาสที่จะทำนายถูกต้องมากกว่าการสุ่มแบบเสี่ยงทายนั่นเอง

โดยเนื้อหาในการสร้างเส้น ROC และ AUC ด้วย python ผมจะทำแยกในภายภาคหน้า แต่ถ้าหากต้องการจะศึกษาการสร้างเส้น ROC และ AUC ก่อนก็สามารถเข้าไปดูที่ตัวอย่างด้านล่างได้เลยครับ

ถ้าชอบหรือต้องการสอบถามหรือพูดคุยเพิ่มเติม กดไปที่เพจ ดาต้าไส้แห้ง หรือ LinkedIn ข้างล่างเลยจ้า แล้วเรื่องถัดไปจะเป็นเรื่องอะไรก็ขอให้กดติดตามกันไว้ด้วยนะคร้าบ😍

--

--

Pasith Thanapatpisarn
Pasith Thanapatpisarn

Written by Pasith Thanapatpisarn

Analyst | Blogger named Data Sci Haeng

No responses yet