เจาะลึกเมตริกการจำแนกประเภท
เมทริกซ์ความสับสน ความแม่นยำ ความครอบคลุม F1 เส้นโค้ง ROC-AUC และ PR — เลือกเมตริกที่เหมาะสม
เจาะลึกเมตริกการจำแนกประเภท เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
ความถูกต้องเพียงอย่างเดียวไม่เพียงพอ
ความถูกต้องคือสัดส่วนของการพยากรณ์ที่ถูกต้อง แต่ทำให้เข้าใจผิดได้เมื่อใช้กับข้อมูลที่ไม่สมดุล แบบจำลองที่พยากรณ์เฉพาะกลุ่มส่วนใหญ่อาจได้คะแนน 99% ทั้งที่ไม่มีประโยชน์ต่อกลุ่มที่พบได้น้อย
เมทริกซ์ความสับสน
เมทริกซ์ความสับสนแบ่งการพยากรณ์ออกเป็นผลบวกจริง ผลบวกลวง ผลลบจริง และผลลบลวง เมทริกซ์นี้เป็นพื้นฐานของตัวชี้วัดอื่นทั้งหมด
from sklearn.metrics import confusion_matrix
y_true = [0, 1, 1, 0, 1, 0]
y_pred = [0, 1, 0, 0, 1, 1]
print(confusion_matrix(y_true, y_pred))
# rows = actual, columns = predictedความแม่นยำ
ความแม่นยำ = TP / (TP + FP) จากรายการทั้งหมดที่พยากรณ์ว่าเป็นบวก มีกี่รายการที่เป็นบวกจริง ความแม่นยำสูงหมายถึงการแจ้งเตือนผิดมีน้อย สำคัญเมื่อผลบวกลวงมีต้นทุนสูง (เช่น ตัวกรองจดหมายขยะ)
from sklearn.metrics import precision_score
print(precision_score(y_true, y_pred))อัตราการค้นคืน
อัตราการค้นคืน = TP / (TP + FN) จากรายการที่เป็นบวกจริงทั้งหมด เราตรวจพบได้กี่รายการ อัตราการค้นคืนสูงหมายถึงพลาดน้อย สำคัญเมื่อผลลบลวงมีต้นทุนสูง (เช่น การคัดกรองโรค)
from sklearn.metrics import recall_score
print(recall_score(y_true, y_pred))คะแนน F1
คะแนน F1 คือค่าเฉลี่ยฮาร์มอนิกของความแม่นยำและอัตราการค้นคืน: 2 * P * R / (P + R) ตัวชี้วัดนี้สร้างสมดุลระหว่างทั้งสองค่า และมีประโยชน์เมื่อต้องการตัวเลขเดียวสำหรับข้อมูลที่ไม่สมดุล
from sklearn.metrics import f1_score, classification_report
print(f1_score(y_true, y_pred))
print(classification_report(y_true, y_pred))เส้นโค้ง ROC และ AUC
เส้นโค้ง ROC แสดงอัตราผลบวกจริงเทียบกับอัตราผลบวกลวงที่ค่าเกณฑ์ตัดสินต่าง ๆ roc_auc_score สรุปเส้นโค้งนี้เป็นค่าเดียว โดย 1.0 หมายถึงสมบูรณ์แบบ และ 0.5 หมายถึงการเดาสุ่ม
from sklearn.metrics import roc_auc_score
# needs probability scores, not hard labels
proba = model.predict_proba(Xte)[:, 1]
print(roc_auc_score(yte, proba))เส้นโค้ง Precision-Recall
เส้นโค้ง PR แสดงความแม่นยำเทียบกับอัตราการค้นคืนที่ค่าเกณฑ์ตัดสินต่าง ๆ มีข้อมูลมากกว่า ROC เมื่อกลุ่มไม่สมดุลอย่างมาก เพราะมุ่งเน้นที่กลุ่มบวก
from sklearn.metrics import precision_recall_curve
prec, rec, thresh = precision_recall_curve(yte, proba)
# plot rec (x) vs prec (y) to see the tradeoffค่าเฉลี่ยความแม่นยำ
average_precision_score สรุปเส้นโค้ง PR เป็นตัวเลขเดียว (พื้นที่ใต้เส้นโค้ง PR) นี่คือตัวชี้วัดสรุปที่แนะนำสำหรับการจำแนกประเภทแบบสองกลุ่มที่ไม่สมดุล
from sklearn.metrics import average_precision_score
print(average_precision_score(yte, proba))ROC AUC เทียบกับค่าเฉลี่ยความแม่นยำ
ROC AUC อาจดูดีเกินจริงเมื่อใช้กับข้อมูลที่ไม่สมดุล เพราะผลลบจริงมีจำนวนมาก ค่าเฉลี่ยความแม่นยำไม่สนใจผลลบจริง และสะท้อนประสิทธิภาพของกลุ่มบวกที่พบได้น้อยได้ตรงไปตรงมามากกว่า
การเลือกตัวชี้วัดที่เหมาะสม
ใช้ F1 หรือค่าเฉลี่ยความแม่นยำสำหรับปัญหาที่ข้อมูลไม่สมดุล ใช้ ROC AUC เพื่อวัดคุณภาพการจัดอันดับเมื่อข้อมูลสมดุล เลือกความแม่นยำเมื่อการแจ้งเตือนผิดสร้างความเสียหาย และเลือกอัตราการค้นคืนเมื่อการพลาดสร้างความเสียหาย ควรระบุลำดับความสำคัญของคุณก่อนเลือกตัวชี้วัดเสมอ
การปรับค่าเกณฑ์ตัดสิน
ตัวชี้วัดส่วนใหญ่ขึ้นอยู่กับค่าเกณฑ์ตัดสิน (ค่าเริ่มต้นคือ 0.5) การเลื่อนค่าเกณฑ์จะเป็นการแลกเปลี่ยนระหว่างความแม่นยำกับอัตราการค้นคืน ใช้เส้นโค้ง PR เพื่อเลือกค่าเกณฑ์ที่ตรงตามข้อกำหนดทางธุรกิจ
import numpy as np
# pick threshold for at least 0.9 precision
idx = np.argmax(prec >= 0.9)
chosen = thresh[idx]
preds = (proba >= chosen).astype(int)ตรวจสอบความรู้อย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับตัวชี้วัดของคุณ
สรุปบทเรียน
สรุปบทเรียน: เริ่มจาก confusion_matrix ความแม่นยำลงโทษการแจ้งเตือนผิด ส่วนอัตราการค้นคืนลงโทษการพลาด และF1สร้างสมดุลระหว่างทั้งสองค่า roc_auc_score วัดคุณภาพการจัดอันดับ ส่วน average_precision_score และเส้นโค้ง PR เหมาะกับข้อมูลที่ไม่สมดุลมากกว่า ปรับค่าเกณฑ์ให้สอดคล้องกับลำดับความสำคัญของคุณ
คำถามที่พบบ่อย
บทเรียน “เจาะลึกเมตริกการจำแนกประเภท” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เจาะลึกเมตริกการจำแนกประเภท” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เจาะลึกเมตริกการจำแนกประเภท”
เมทริกซ์ความสับสน ความแม่นยำ ความครอบคลุม F1 เส้นโค้ง ROC-AUC และ PR — เลือกเมตริกที่เหมาะสม คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “เจาะลึกเมตริกการจำแนกประเภท” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- กลยุทธ์การตรวจสอบไขว้
- เจาะลึกเมตริกการจำแนกประเภท
- การค้นหาแบบกริดและการค้นหาแบบสุ่ม
- การหาค่าเหมาะที่สุดแบบเบย์ด้วย Optuna