แมชชีนเลิร์นนิง - เมตริกประสิทธิภาพ

มีเมตริกต่างๆที่เราสามารถใช้เพื่อประเมินประสิทธิภาพของอัลกอริทึม ML การจำแนกประเภทและอัลกอริทึมการถดถอย เราต้องเลือกเมตริกสำหรับการประเมินประสิทธิภาพ ML อย่างรอบคอบเนื่องจาก -

  • วิธีวัดและเปรียบเทียบประสิทธิภาพของอัลกอริทึม ML จะขึ้นอยู่กับเมตริกที่คุณเลือกทั้งหมด

  • คุณให้น้ำหนักความสำคัญของลักษณะต่างๆในผลลัพธ์อย่างไรจะได้รับอิทธิพลอย่างสมบูรณ์จากเมตริกที่คุณเลือก

เมตริกประสิทธิภาพสำหรับปัญหาการจำแนกประเภท

เราได้กล่าวถึงการจำแนกประเภทและอัลกอริทึมในบทก่อนหน้านี้ ในที่นี้เราจะพูดถึงเมตริกประสิทธิภาพต่างๆที่สามารถใช้ในการประเมินการคาดการณ์สำหรับปัญหาการจัดประเภท

เมทริกซ์ความสับสน

เป็นวิธีที่ง่ายที่สุดในการวัดประสิทธิภาพของปัญหาการจำแนกประเภทโดยที่ผลลัพธ์อาจเป็นประเภทของคลาสสองประเภทขึ้นไป เมทริกซ์ความสับสนไม่ใช่อะไรนอกจากตารางที่มีสองมิติ ได้แก่ “ ตามจริง” และ“ คาดการณ์” และนอกจากนี้มิติข้อมูลทั้งสองยังมี“ True Positives (TP)”,“ True Negatives (TN)”,“ False Positives (FP)”,“ False Negatives (FN)” ตามที่แสดงด้านล่าง

คำอธิบายคำศัพท์ที่เกี่ยวข้องกับเมทริกซ์ความสับสนมีดังนี้ -

  • True Positives (TP) - เป็นกรณีที่ทั้งคลาสจริงและคลาสของจุดข้อมูลที่คาดการณ์ไว้คือ 1

  • True Negatives (TN) - เป็นกรณีที่ทั้งคลาสจริงและคลาสที่คาดการณ์ไว้ของจุดข้อมูลเป็น 0

  • False Positives (FP) - เป็นกรณีที่คลาสจริงของจุดข้อมูลคือ 0 และคลาสของจุดข้อมูลที่คาดการณ์ไว้คือ 1

  • False Negatives (FN) - เป็นกรณีที่คลาสจริงของจุดข้อมูลคือ 1 และคลาสของจุดข้อมูลที่คาดการณ์ไว้คือ 0

เราสามารถใช้ฟังก์ชัน confusion_matrix ของ sklearn.metrics เพื่อคำนวณ Confusion Matrix ของโมเดลการจำแนกประเภทของเรา

ความแม่นยำในการจำแนกประเภท

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

$$ ความแม่นยำ = \ frac {TP + TN} {+++} $$

เราสามารถใช้ฟังก์ชัน precision_score ของ sklearn.metrics เพื่อคำนวณความแม่นยำของรูปแบบการจำแนกประเภทของเรา

รายงานการจำแนกประเภท

รายงานนี้ประกอบด้วยคะแนนของ Precisions, Recall, F1 และ Support มีคำอธิบายดังนี้ -

ความแม่นยำ

ความแม่นยำที่ใช้ในการเรียกเอกสารอาจกำหนดเป็นจำนวนเอกสารที่ถูกต้องที่ส่งคืนโดยแบบจำลอง ML ของเรา เราสามารถคำนวณได้อย่างง่ายดายโดยเมทริกซ์ความสับสนด้วยความช่วยเหลือของสูตรต่อไปนี้ -

$$ แม่นยำ = \ frac {TP} {TP + FP} $$

การเรียกคืนหรือความอ่อนไหว

การเรียกคืนอาจกำหนดเป็นจำนวนผลบวกที่ส่งคืนโดยแบบจำลอง ML ของเรา เราสามารถคำนวณได้อย่างง่ายดายโดยเมทริกซ์ความสับสนด้วยความช่วยเหลือของสูตรต่อไปนี้ -

$$ Recall = \ frac {TP} {TP + FN} $$

ความจำเพาะ

ความจำเพาะตรงกันข้ามกับการเรียกคืนอาจถูกกำหนดเป็นจำนวนเชิงลบที่ส่งคืนโดยแบบจำลอง ML ของเรา เราสามารถคำนวณได้อย่างง่ายดายโดยเมทริกซ์ความสับสนด้วยความช่วยเหลือของสูตรต่อไปนี้ -

$$ ความจำเพาะ = \ frac {TN} {TN + FP} $$

สนับสนุน

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

คะแนน F1

คะแนนนี้จะให้ค่าเฉลี่ยฮาร์มอนิกของความแม่นยำและความจำ ในทางคณิตศาสตร์คะแนน F1 คือค่าเฉลี่ยถ่วงน้ำหนักของความแม่นยำและการเรียกคืน ค่าที่ดีที่สุดของ F1 จะเป็น 1 และแย่ที่สุดคือ 0 เราสามารถคำนวณคะแนน F1 ได้โดยใช้สูตรต่อไปนี้ -

= ∗ (∗) / (+)

คะแนน F1 มีส่วนสนับสนุนความแม่นยำและการเรียกคืนที่เท่าเทียมกัน

เราสามารถใช้ฟังก์ชันการจัดหมวดหมู่_reportของ sklearn.metrics เพื่อรับรายงานการจำแนกประเภทของรูปแบบการจำแนกประเภทของเรา

AUC (พื้นที่ภายใต้เส้นโค้ง ROC)

AUC (Area Under Curve) -ROC (Receiver Operating Characteristic) เป็นเมตริกประสิทธิภาพโดยพิจารณาจากค่าเกณฑ์ที่แตกต่างกันสำหรับปัญหาการจำแนกประเภท ตามชื่อแนะนำ ROC คือเส้นโค้งความน่าจะเป็นและ AUC จะวัดความสามารถในการแยกส่วน กล่าวง่ายๆคือเมตริก AUC-ROC จะบอกเราเกี่ยวกับความสามารถของโมเดลในการแยกแยะคลาส AUC ที่สูงขึ้นโมเดลที่ดีขึ้น

ในทางคณิตศาสตร์สามารถสร้างได้โดยการพล็อต TPR (True Positive Rate) เช่น Sensitivity หรือ Recall vs FPR (False Positive Rate) ได้แก่ 1-Specificity ที่ค่าเกณฑ์ต่างๆ ต่อไปนี้เป็นกราฟที่แสดง ROC, AUC มี TPR ที่แกน y และ FPR ที่แกน x -

เราสามารถใช้ฟังก์ชัน roc_auc_score ของ sklearn.metrics เพื่อคำนวณ AUC-ROC

LOGLOSS (การสูญเสียลอการิทึม)

เรียกอีกอย่างว่า Logistic regression loss หรือ cross-entropy loss โดยพื้นฐานแล้วจะกำหนดโดยการประมาณค่าความน่าจะเป็นและวัดผลการดำเนินงานของแบบจำลองการจำแนกประเภทโดยที่อินพุตเป็นค่าความน่าจะเป็นระหว่าง 0 ถึง 1 สามารถเข้าใจได้ชัดเจนยิ่งขึ้นโดยการแยกแยะความแตกต่างด้วยความแม่นยำ ดังที่เราทราบกันดีว่าความแม่นยำคือจำนวนการคาดการณ์ (ค่าที่คาดการณ์ = มูลค่าจริง) ในแบบจำลองของเราในขณะที่ Log Loss คือจำนวนความไม่แน่นอนของการคาดการณ์ของเราโดยพิจารณาจากความแตกต่างจากฉลากจริง ด้วยความช่วยเหลือของค่า Log Loss เราสามารถมีมุมมองที่แม่นยำยิ่งขึ้นเกี่ยวกับประสิทธิภาพของโมเดลของเรา เราสามารถใช้ฟังก์ชัน log_loss ของ sklearn.metrics เพื่อคำนวณ Log Loss

ตัวอย่าง

ต่อไปนี้เป็นสูตรง่ายๆใน Python ซึ่งจะช่วยให้เราเข้าใจถึงวิธีที่เราสามารถใช้เมตริกประสิทธิภาพที่อธิบายไว้ข้างต้นในรูปแบบการจำแนกไบนารี -

from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import log_loss
X_actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
Y_predic = [1, 0, 1, 1, 1, 0, 1, 1, 0, 0]
results = confusion_matrix(X_actual, Y_predic)
print ('Confusion Matrix :')
print(results)
print ('Accuracy Score is',accuracy_score(X_actual, Y_predic))
print ('Classification Report : ')
print (classification_report(X_actual, Y_predic))
print('AUC-ROC:',roc_auc_score(X_actual, Y_predic))
print('LOGLOSS Value is',log_loss(X_actual, Y_predic))

เอาต์พุต

Confusion Matrix :
[
   [3 3]
   [1 3]
]
Accuracy Score is 0.6
Classification Report :
            precision      recall      f1-score       support
      0       0.75          0.50      0.60           6
      1       0.50          0.75      0.60           4
micro avg     0.60          0.60      0.60           10
macro avg     0.62          0.62      0.60           10
weighted avg  0.65          0.60      0.60           10
AUC-ROC:  0.625
LOGLOSS Value is 13.815750437193334

เมตริกประสิทธิภาพสำหรับปัญหาการถดถอย

เราได้กล่าวถึงการถดถอยและอัลกอริทึมในบทก่อนหน้านี้ ในที่นี้เราจะพูดถึงเมตริกประสิทธิภาพต่างๆที่สามารถใช้ในการประเมินการคาดการณ์สำหรับปัญหาการถดถอย

ค่าเฉลี่ยค่าสัมบูรณ์ผิดพลาด (MAE)

เป็นเมตริกข้อผิดพลาดที่ง่ายที่สุดที่ใช้ในปัญหาการถดถอย โดยพื้นฐานแล้วเป็นผลรวมของค่าเฉลี่ยของผลต่างสัมบูรณ์ระหว่างค่าที่ทำนายและค่าจริง พูดง่ายๆกับ MAE เราสามารถเข้าใจได้ว่าการคาดการณ์ผิดแค่ไหน MAE ไม่ได้ระบุทิศทางของแบบจำลองกล่าวคือไม่มีข้อบ่งชี้เกี่ยวกับประสิทธิภาพที่ต่ำกว่าหรือประสิทธิภาพที่สูงเกินไปของโมเดล ต่อไปนี้เป็นสูตรคำนวณ MAE -

$$ MAE = \ frac {1} {n} \ sum | Y - \ hat {Y} | $$

ที่นี่ = ค่าผลลัพธ์ที่แท้จริง

และ $ \ hat {Y} $ = Predicted Output Values

เราสามารถใช้ฟังก์ชัน mean_absolute_error ของ sklearn.metrics เพื่อคำนวณ MAE

ข้อผิดพลาดกำลังสองค่าเฉลี่ย (MSE)

MSE ก็เหมือนกับ MAE แต่ความแตกต่างเพียงอย่างเดียวคือมันกำลังสองของความแตกต่างของค่าผลลัพธ์ที่แท้จริงและที่คาดการณ์ไว้ก่อนที่จะสรุปทั้งหมดแทนที่จะใช้ค่าสัมบูรณ์ ความแตกต่างสามารถสังเกตเห็นได้ในสมการต่อไปนี้ -

$$ MSE = \ frac {1} {n} \ sum (Y - \ hat {Y}) $$

ที่นี่ = ค่าผลลัพธ์ที่แท้จริง

และ $ \ hat {Y} $ = Predicted Output Values

เราสามารถใช้ฟังก์ชัน mean_squared_error ของ sklearn.metrics เพื่อคำนวณ MSE

R กำลังสอง (R 2 )

โดยทั่วไปแล้วเมตริก R กำลังสองจะใช้เพื่อวัตถุประสงค์ในการอธิบายและแสดงถึงความดีหรือความเหมาะสมของชุดค่าผลลัพธ์ที่คาดการณ์ไว้กับค่าผลลัพธ์จริง สูตรต่อไปนี้จะช่วยให้เราเข้าใจ -

$$ R ^ {2} = 1 - \ frac {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ hat {Y_ {i}}) ^ 2} {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ bar {Y_i) ^ 2}} $$

ในสมการข้างต้นตัวเศษคือ MSE และตัวส่วนคือความแปรปรวนของค่า

เราสามารถใช้ฟังก์ชัน r2_score ของ sklearn.metrics เพื่อคำนวณค่า R กำลังสอง

ตัวอย่าง

ต่อไปนี้เป็นสูตรง่ายๆใน Python ซึ่งจะช่วยให้เราเข้าใจถึงวิธีที่เราสามารถใช้เมตริกประสิทธิภาพที่อธิบายไว้ข้างต้นในแบบจำลองการถดถอย -

from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
X_actual = [5, -1, 2, 10]
Y_predic = [3.5, -0.9, 2, 9.9]
print ('R Squared =',r2_score(X_actual, Y_predic))
print ('MAE =',mean_absolute_error(X_actual, Y_predic))
print ('MSE =',mean_squared_error(X_actual, Y_predic))

เอาต์พุต

R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999