Tới lượt bạn động não

Giả sử chúng ta có một hệ thống phân loại email (hình dưới). Hệ thống của chúng ta sẽ thiết lập một ngưỡng nhất định (classification threshold). Những email nằmg bên phải ngưỡng này sẽ bị đánh dấu là spam, còn những email bằm bên trái thì đánh dấu là “không spam”.
Câu hỏi: Email này có phải là spam không?
Theo bạn, giá trị của precision và recall trong trường hợp này là bao nhiêu? Nếu chúng ta tăng giá trị ngưỡng ban đầu (classification threshold dịch về bên phải) thì giá trị của recall sẽ tăng, giảm hay không thay đổi?
Hãy suy nghĩ thật kỹ và kiểm tra xem câu trả lời của mình có đúng chưa so với các đáp án ở đây. Bạn cũng có thể thử trả lời vài câu hỏi khác cũng khá hay tại đây.

F1-Score

Chúng ta thấy rằng cả precision và recall đều quan trọng. Có lúc thì cái này quan trọng hơn cái kia. Vậy trong thực tế, ta sẽ lấy cái nào làm cái chính? Ta phải điều chỉnh sao cho cả hai cái này thật sự hợp lý? Thật khó trả lời cho các câu hỏi này! Đó là lý do vì sao f1-score ra đời!
Với f1-score, chúng ta chỉ cần quan tâm đến một chỉ số duy nhất (thay vì hai – precision và recall). F1-score được tính thông qua precision và recall bởi công thức sau đây:
Nhắc lại,
Thực tế (có)
Thực tế (không)
Dự đoán (có)
TP
FP
Precision
Dự đoán (không)
FN
TN
Recall
và,
Thêm nữa, khi chúng ta thay đổi định nghĩa của “positive” (hay thay đổi câu hỏi của vấn đề) thì giá trị của f1-score cũng sẽ thay đổi theo. Lý do là bởi TP trong công thức của precision và recall sẽ chuyển thành TN. Điều đó có nghĩa là bạn phải rất thận trọng trong việc chọn định nghĩa cho “positive” (hay chọn câu hỏi đặt vấn đề). Một khi bạn đã định nghĩa “positive”, f1-score sẽ phụ thuộc vào định nghĩa này.

F1-score hữu dụng khi nào?

  • Khi bạn cần một sự cân bằng giữa precision và recall.
  • Khi dữ liệu khảo sát của bạn không đồng đều giữa nhãn “có” và “không” (Chẳng hạn như số người khảo sát có bệnh chiếm tỷ trọng khá lớn so với số người được khảo sát không có bệnh hoặc ngược lại).
  • Nếu một trong hai giá trị recall và precision được cải thiện nhưng ảnh hưởng lớn đến sự thay đổi của cái còn lại thì f1 khi ấy sẽ rất nhỏ.

Chọn giá trị cho f1-score?

Dễ nhận thấy, giá trị của f1-score rơi vào khoảng (0,1]. Thông thường, f1-score nhận giá trị càng cao, độ phân lớp và mô hình của chúng ta càng tốt!
  • Trường hợp tốt nhất: cả precision và recall đều được 100%, . Khi ấy mọi dự đoán “có” và “không” của chúng ta đều chính xác so với thực tế (ta là thần).
  • Trường hợp một trong hai precision và recall nhận giá trị rất bé gần 0, f1 cũng sẽ rất bé gần 0. Khi ấy mô hình của chúng ta chắc chắn có vấn đề!
Ngoài ra còn có một vài ví dụ khác cho f1-score như bảng dưới (trích từ course ML của Andrew NG)
Precision
Recall
F1-score
Mô hình 1
0.5
0.4
0.444
Mô hình 2
0.7
0.1
0.175
Mô hình 3
0.02
1
0.0392
Theo như bảng trên, dù Mô hình 2 có precision khá cao (0.7) nhưng f1-score vẫn khá thấp nếu đem so với Mô hình 1 (với precision và recall chỉ ở mức trung bình là 0.5 và 0.4). Trường hợp Mô hình 3 là chúng ta cho mô hình luôn luôn dự đoán “có bệnh”, khi ấy f1-score cực kỳ thấp!
Vậy khi chúng ta quan tâm một trong hai recall và precision hơn thì sao? Khi ấy ta cần xét đến công thức tổng quát hơn của f1-score như bên dưới (gọi là ) (nguồn):
Dễ nhận thấy, f1-score chỉ là trường hợp đặc biệt khi .
  • Nếu chúng ta coi trọng precision hơn recall, ta chọn  (thường chọn ).
  • Ngược lại, nếu recall được coi trọng hơn precision, ta chọn  (thường chọn ).

Accuracy và Specificity

Thật ra, ngoài f1-score, còn có rất nhiều cách và chỉ số khác bạn có thể dùng để đánh giá xem mô hình của bạn có thật sự tốt chưa. Dưới góc nhìn của các thành phần CM, ta còn có các chỉ số accuracy và specificity.
AccuracyTrong tất cả các dự đoán của chúng ta, tỷ lệ dự đoán đúng là bao nhiêu? Nếu dữ liệu của chúng ta cân đối (lượng người được khảo sát có và không có bệnh gần ngang nhau), ta có thể chỉ cần dùng chỉ số accuracy này thôi là đủ để đánh giá mô hình của chúng ta.
SpecificityCó bao nhiêu “kết quả không” đến từ dự đoán của chúng ta? Chúng ta chọn specificity khi chúng ta quan tâm đến giá trị của TN và không muốn cảnh báo sai về những trường hợp FP. Ví dụ, khi chạy một phần mềm kiểm tra những người bán ma túy (Câu hỏi: Trường hợp này có bán không?) Nếu câu trả lời là “có” thì ta phải bắt giam họ ngay. Khi ấy FP là “Những người tốt bị hiểu lầm là đang bán ma trúy”. Chúng ta muốn specificity cao, hay FP càng thấp càng tốt, vì ta không muốn bắt giam người vô tội!

Tài liệu tham khảo

  1. Classification: Precision and Recall – Google DevelopersMachine Learning Crash Course.
  1. Classification: Check Your Understanding (Accuracy, Precision, Recall) – Google DevelopersMachine Learning Crash Course.
  1. F-measure versus Accuracy – NLP blog.
  1. Accuracy, Precision, Recall or F1? – Koo Ping ShungTowards Data Science.
  1. Dealing with Imbalanced data: undersampling, oversampling and proper cross-validation – Marco Altini.
  1. Accuracy, Recall, Precision, F-Score & Specificity, which to optimize on? – Salma GhoneimTowards Data Science.
  1. Hình đại diện lấy từ trang towardsdatascience.com.