Precision
Precision là tỷ lệ dự đoán dương tính chính xác: TP / (TP + FP). Tìm hiểu cách tỷ lệ hiện diện ảnh hưởng đến chỉ số này, cách detector tính toán và cách cải thiện.
Precision là tỷ lệ dự đoán dương tính của model đúng. Chỉ số này trả lời câu hỏi "khi model nói có, mức độ thường xuyên model nói đúng là bao nhiêu?" và được tính bằng số dương tính thật chia cho tổng số dự đoán dương tính: precision = TP / (TP + FP), trong đó dương tính giả (FP) là trường hợp âm tính bị model gắn cờ nhầm. Precision nằm trong khoảng 0 đến 1; precision 0.95 nghĩa là cứ 20 cảnh báo thì có 1 cảnh báo giả. Giá trị dự đoán dương (PPV) là thuật ngữ đồng nghĩa dùng trong y học, còn tỷ lệ phát hiện sai bằng 1 trừ precision. Precision đặc biệt quan trọng khi cảnh báo giả gây tốn kém, chẳng hạn bộ lọc spam ẩn email thật, hệ thống kiểm tra loại bỏ linh kiện đạt chuẩn hoặc camera an ninh gọi bảo vệ vì bóng đổ.
Cách tính precision#
Precision sử dụng hai ô trong ma trận nhầm lẫn: dương tính thật và dương tính giả, hai thành phần tạo nên mọi dự đoán dương tính. Các trường hợp dương tính bị bỏ sót không nằm trong công thức, vì vậy một model chỉ gắn cờ trường hợp có độ chắc chắn cao nhất vẫn có thể đạt precision 1.0 dù gần như không phát hiện được gì. Do đó, precision được báo cáo cùng với recall, TP / (TP + FN), chỉ số phạt chính những trường hợp bỏ sót đó; điểm F1 kết hợp cả hai thành một giá trị. Khi model không đưa ra dự đoán dương tính nào, precision bằng 0 / 0 và không xác định; các thư viện như scikit-learn báo cáo giá trị này là 0 kèm cảnh báo.
Với hơn hai lớp, precision được tính riêng cho từng lớp bằng cách xem lớp đó là dương tính và mọi lớp khác là âm tính, sau đó lấy trung bình. Macro precision cho trọng số ngang nhau đối với mọi lớp; trong tác vụ đa lớp đơn nhãn, precision lấy trung bình micro bằng accuracy.
Precision phụ thuộc vào tỷ lệ hiện diện#
Recall và specificity mô tả riêng cách model xử lý trường hợp dương tính và âm tính, nên các chỉ số này không thay đổi khi trường hợp dương tính trở nên hiếm hơn. Precision kết hợp cả hai nhóm và giảm khi tỷ lệ hiện diện giảm, vì cùng một tỷ lệ dương tính giả áp dụng cho số trường hợp âm tính nhiều hơn sẽ tạo ra nhiều cảnh báo giả hơn trên mỗi phát hiện đúng. Đoạn script scikit-learn dưới đây chấm điểm một model sàng lọc ở hai tỷ lệ hiện diện:
import numpy as np
from sklearn.metrics import accuracy_score, precision_score, recall_score
# One screening model at two prevalences: it finds 90% of positives and flags 1% of negatives
for positives in (1000, 100):
negatives = 10_000 - positives
tp, fp = int(0.9 * positives), int(0.01 * negatives)
counts = [tp, positives - tp, fp, negatives - fp] # TP, FN, FP, TN
# Rebuild labels and predictions for 10,000 cases from the confusion-matrix counts
y_true = np.repeat([1, 1, 0, 0], counts)
y_pred = np.repeat([1, 0, 1, 0], counts)
accuracy = accuracy_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
print(f"{positives} positives: accuracy {accuracy:.3f}, recall {recall:.2f}, precision {precision:.2f}")Với 1.000 trường hợp dương tính trong 10.000 ca, model đạt precision 0.91. Với 100 trường hợp dương tính, recall vẫn là 0.90 và accuracy thậm chí tăng lên 0.989, nhưng bên cạnh 90 phát hiện đúng có 99 cảnh báo giả, khiến precision giảm còn 0.48. Vì vậy, precision đo trên tập test cân bằng sẽ đánh giá quá cao precision mà model thể hiện khi triển khai ở những nơi có trường hợp dương tính hiếm hơn, chẳng hạn sàng lọc bệnh hiếm.
Precision trong object detection#
Trong object detection, mỗi bounding box dự đoán có độ tin cậy vượt quá ngưỡng confidence đều là một dự đoán dương tính. Các dự đoán được ghép theo thứ tự confidence giảm dần; bounding box chỉ là dương tính thật nếu nó chồng lấn với một vật thể được gán nhãn cùng lớp theo Intersection over Union (IoU) bằng hoặc lớn hơn ngưỡng, và vật thể đó chưa được bounding box có điểm cao hơn nhận ghép. Bounding box trên hậu cảnh, sai lớp, đặt không chính xác và trùng lặp trên vật thể đã được ghép đều được tính là dương tính giả.
Tăng ngưỡng confidence sẽ loại bỏ các bounding box có điểm thấp—những bounding box thường sai hơn—nên precision thường tăng khi recall giảm. Vẽ precision theo recall ở mọi ngưỡng sẽ tạo thành đường cong precision-recall; diện tích bên dưới là average precision (AP), được độ chính xác trung bình (mAP) lấy trung bình theo lớp và, với mAP50-95, theo 10 ngưỡng IoU. Validation của YOLO26 lưu precision của từng lớp tại mọi ngưỡng confidence dưới dạng BoxP_curve.png và báo cáo precision (P) tại ngưỡng confidence mà F1 trung bình đạt đỉnh, cùng với recall và mAP.
Cải thiện precision#
- Tăng ngưỡng confidence: Cách khắc phục nhanh nhất, nhưng phải đánh đổi bằng recall thấp hơn.
- Bổ sung hard negative: Thêm vào dữ liệu huấn luyện những vật thể trông giống mục tiêu và cảnh trống gây cảnh báo giả để model học những gì không nên gắn cờ. Cách chọn các trường hợp âm tính khó gây nhầm lẫn nhất này được gọi là khai thác hard negative.
- Sửa nhãn bị thiếu: Một đối tượng được phát hiện chính xác nhưng bị người gán nhãn bỏ sót sẽ được tính là dương tính giả, vì vậy nhãn ground truth không đầy đủ khiến precision trông thấp hơn thực tế.
- Tách các lớp dễ nhầm lẫn: Ma trận nhầm lẫn cho biết model nhầm lẫn giữa những lớp nào; bổ sung ví dụ hoặc định nghĩa lớp rõ ràng hơn cho các cặp đó sẽ loại bỏ các trường hợp dương tính giả do nhầm lớp.
Precision và các thuật ngữ liên quan#
- Recall: Tỷ lệ các trường hợp dương tính thực tế mà model tìm được, TP / (TP + FN). Recall tính các trường hợp bỏ sót, còn precision tính các cảnh báo giả.
- Specificity: Tỷ lệ các trường hợp âm tính thực tế được từ chối chính xác, TN / (TN + FP). Specificity 0.99 vẫn có thể cho precision dưới 0.5 khi trường hợp dương tính hiếm gặp, như minh họa trong script sàng lọc.
- Accuracy: Tỷ lệ tổng số dự đoán chính xác, chịu ảnh hưởng chi phối của lớp chiếm đa số trong dữ liệu mất cân bằng.
- Độ chính xác số học: Số bit dùng để lưu trữ mỗi giá trị, chẳng hạn 32 bit hoặc số thực dấu phẩy động 16 bit; đây là một nghĩa khác, không liên quan của cùng một từ.
- Độ chính xác trong đo lường: Mức độ nhất quán giữa các phép đo lặp lại, trong khi accuracy mô tả mức độ gần với giá trị thực. Một chiếc cân luôn hiển thị nặng hơn 2 kg thì có precision cao nhưng không chính xác.










