I. MỞ ĐẦU
I.1. Bối cảnh và động lực
Bài toán phân loại (classification) là vai trò cốt lõi trong học máy ứng dụng, xuất hiện trong nhiều lĩnh vực: y tế (chẩn đoán bệnh), an ninh (phát hiện xâm nhập), tài chính (phát hiện gian lận), thị giác máy (phân loại ảnh), xử lý ngôn ngữ tự nhiên (gán nhãn chủ đề, phát hiện cảm xúc), v.v. Về mặt toán học, phân loại là bài toán gán nhãn rời rạc cho các quan sát $x \in \mathcal{X}$ theo một tập lớp $\mathcal{Y}$ (ví dụ $\mathcal{Y}=\{0,1\}$ cho binary, $\mathcal{Y}=\{1,\dots,K\}$ cho multiclass, hoặc $\mathcal{Y}=\{0,1\}^K$ cho multilabel).
Tuy nhiên, bản chất rời rạc của nhãn khiến việc lựa chọn hàm mất mát (loss function) và tiêu chí đánh giá (evaluation metric) trở thành bước quyết định, ảnh hưởng trực tiếp đến:
- Mục tiêu tối ưu hóa lúc huấn luyện (loss), và do đó hành vi mô hình học (ví dụ ưu tiên giảm FN hay FP).
- Cách thức đánh giá (metric) để so sánh mô hình, chọn tham số, và báo cáo hiệu năng thực tế.
Nội dung báo cáo này nhắm tới việc trình bày hệ thống hoá các loss và metric phổ biến, giải thích trực giác toán học đằng sau chúng, và gợi luận cách chọn phù hợp theo từng dạng bài toán: binary, multiclass, multilabel.
I.2. Khác biệt cốt lõi giữa hồi quy và phân loại
Để hiểu vì sao phân loại cần hệ loss/metric khác với hồi quy, cần nhắc lại hai điểm then chốt:
I.2.1. Bản chất của biến mục tiêu
- Hồi quy: mục tiêu $y$ là biến liên tục, như một thực số $y\in\mathbb{R}$. Sai số có thể đo bằng khoảng cách Euclid (MSE), L1 (MAE), v.v.
- Phân loại: mục tiêu $y$ là rời rạc (nhãn), thường chỉ quan tâm đến việc đúng/sai hay độ tin cậy trong phân phối xác suất trên các lớp.
I.2.2. Mục tiêu mô hình và không gian dự đoán
- Trong hồi quy, mô hình thường dự đoán một giá trị thực $\hat{y}$ và loss trực tiếp đo sai khác $\hat{y} - y$.
- Trong phân loại, mô hình thường xuất ra scores hoặc xác suất $\mathbf{p} = (p_1,\dots,p_K)$ với $ p_i \ge 0, \sum_i p_i = 1$ (hoặc độc lập cho multilabel). Quyết định cuối cùng $\hat{y}$ thường là hàm rời rạc của các xác suất này (ví dụ argmax), vì vậy loss cần phản ánh khoảng cách giữa phân phối dự đoán và phân phối thực (thực nghiệm).
Kết quả là: nhiều metric tiêu chuẩn trong hồi quy (MSE, MAE) không phản ánh đúng mục tiêu phân loại (ví dụ chúng không xử lý tốt lỗi "tự tin nhưng sai"), do đó phải sử dụng các hàm mất mát và metric chuyên biệt (cross-entropy, hinge loss, precision/recall, F1, v.v.).
I.3. Vai trò của xác suất và phân phối trong phân loại
Một khác biệt quan trọng khác: trong hầu hết các mô hình phân loại hiện đại (logistic regression, neural networks), mô hình học phân phối xác suất điều kiện $P(Y\mid X=x)$ chứ không chỉ là một hàm ánh xạ $x \mapsto \hat{y}$. Việc biểu diễn kết quả dưới dạng xác suất có các hệ quả sau:
- Thông tin bất định (uncertainty): xác suất cho phép mô tả độ tin cậy của dự đoán; các loss dựa trên log-probability (ví dụ cross-entropy) phạt nặng các dự đoán sai với độ tin cậy cao.
- Tối ưu hóa dựa trên maximum likelihood / KL divergence: nhiều loss (như cross-entropy) tương đương với tối thiểu hoá divergence giữa phân phối thật và phân phối dự đoán, cung cấp nền tảng thống kê cho huấn luyện.
- Kỹ thuật hậu xử lý (thresholding, calibration): vì đầu ra là xác suất, người dùng có thể điều chỉnh ngưỡng quyết định (threshold) theo trade-off precision/recall phù hợp ứng dụng.
Do đó, trong phân loại nên phân biệt loss functions (mục tiêu tối ưu hoá xác suất trong quá trình huấn luyện) và metrics (cách đo lường hiệu năng cuối cùng, có thể phụ thuộc threshold).
I.4. Phân loại theo kiểu bài toán: binary, multiclass, multilabel
Mặc dù đều là "phân loại", nhưng ba dạng bài toán có những đặc điểm khác nhau ảnh hưởng tới việc chọn loss/metric:
I.4.1. Binary classification
$Y\in\{0,1\}$ hoặc $\{-1,1\}$
Mỗi mẫu chỉ thuộc 1 trong 2 lớp. Loss/metrics đặc thù (BCE, ROC-AUC, precision/recall) là tiêu chuẩn.
I.4.2. Multiclass classification
$Y\in\{1,\dots,K\}$, một nhãn duy nhất cho mỗi mẫu
Sử dụng softmax + cross-entropy; chiến lược đánh giá cần cân nhắc averaging (macro/micro/weighted) vì imbalance giữa lớp.
I.4.3. Multilabel classification
Một mẫu có thể có nhiều nhãn, $Y\subseteq\{1,\dots,K\}$
Mỗi nhãn có thể được coi là một bài toán nhị phân độc lập (sigmoid + BCE) hoặc dùng ranking loss khi thứ tự nhãn quan trọng; metric cho multilabel rất khác (Hamming loss, exact match, set-based F1).
Tóm lại: một loss/metric không thể "bao phủ" mọi dạng bài toán, và việc hiểu đặc tính bài toán là bước bắt buộc trước khi chọn loss/metric.
I.5. Sự khác biệt về vai trò: Loss vs Metric
Một điểm quan trọng nhưng đôi khi bị bỏ sót:
I.5.1. Loss (training objective)
Hàm mà huấn luyện viên (optimizer) tối thiểu hoá; nó ảnh hưởng trực tiếp đến gradient, và do đó tới cách mô hình thay đổi tham số trong quá trình học. Loss phải:
- Khả vi (differentiable) để dùng gradient-based methods
- Có tính ổn định về gradient (không bùng nổ/triệt tiêu quá mạnh)
Ví dụ: zero-one loss không khả vi → không thể dùng trực tiếp làm loss.
I.5.2. Metric (evaluation objective)
Chỉ số để đánh giá mô hình trên tập validation/test theo yêu cầu ứng dụng (ví dụ F1 cho imbalance, AUC cho robustness threshold-free). Metric:
- Không nhất thiết phải khả vi
- Nhiều metric hữu dụng (zero-one accuracy, F1) không thể dùng trực tiếp cho training do không khả vi
Hệ quả thực tiễn: đôi khi cần tối ưu một surrogate (thay thế) loss khả vi trong quá trình huấn luyện (ví dụ cross-entropy hay hinge) nhưng cuối cùng đánh giá bằng metric không khả vi (F1, exact match).
I.6. Vấn đề thực tiễn
Một số thách thức phổ biến trong ứng dụng:
I.6.1. Class imbalance (mất cân bằng lớp)
Accuracy dễ bị lừa; cần metric tập trung vào lớp thiểu số (recall/F1/balanced accuracy) hoặc weighting trong loss (class weighting, focal loss).
I.6.2. Cost of errors (chi phí lỗi)
Trong nhiều ứng dụng (y tế, tài chính), FP và FN có chi phí khác nhau → metric/hàm mất mát phải phản ánh trọng số chi phí.
I.6.3. Calibration
Xác suất đầu ra có thể không được calibrated (ví dụ overconfident). Kỹ thuật calibration (Platt scaling, isotonic regression) và label smoothing có vai trò ở đây.
I.6.4. Thresholding
Nhiều metric (precision/recall) phụ thuộc ngưỡng quyết định; ROC-AUC cung cấp quan điểm không phụ thuộc threshold.
I.7. Thuật ngữ và ký hiệu chuẩn
Để tránh nhầm lẫn, dưới đây là các ký hiệu chuẩn xuyên suốt báo cáo:
| Ký hiệu | Ý nghĩa |
|---|---|
| $X, x$ | Vector đặc trưng của một mẫu, $x\in\mathcal{X}$ |
| $Y, y$ | Nhãn thật; binary: $y\in\{0,1\}$ hoặc $\{-1,1\}$; multiclass: $y\in\{1,\dots,K\}$; multilabel: $y\in\{0,1\}^K$ |
| $\hat{y}$ | Nhãn dự đoán cuối cùng (rời rạc) |
| $\mathbf{z}$ | Vector logit (scores) đầu ra của mô hình trước softmax/sigmoid, $\mathbf{z} = f_\theta(x)$ |
| $\theta$ | Tham số của mô hình |
| $\mathbf{p}$ | Vector xác suất dự đoán |
| $p_i$ | Xác suất dự đoán cho lớp $i$ |
| $\sigma(\cdot)$ | Hàm sigmoid: $\sigma(z) = \frac{1}{1+e^{-z}}$ |
| $L(\theta)$ | Hàm mất mát tổng trên tập huấn luyện |
| $N$ | Số lượng mẫu trong tập dữ liệu |
| $K$ | Số lượng lớp |
Giả định: Báo cáo giả định sử dụng các phương pháp tối ưu gradient-based (SGD/Adam) để huấn luyện mô hình neural networks.
II. BINARY CLASSIFICATION
II.1. Giới thiệu
Binary classification là dạng bài toán phân loại được sử dụng nhiều nhất trong thực tế, bao gồm các ứng dụng như:
- Phát hiện gian lận (fraud detection)
- Phân loại email spam
- Dự đoán mắc bệnh trong y tế
- Phân loại nhị phân văn bản (positive/negative)
Mặc dù hình thức nhãn chỉ gồm hai lớp, việc lựa chọn đúng loss function và metric có tác động mạnh đến kết quả mô hình, đặc biệt trong bối cảnh dữ liệu mất cân bằng.
II.2. Loss Functions cho Binary Classification
II.2.1. Zero-One Loss
(a) Định nghĩa và công thức
$$ L(y, \hat{y}) = \begin{cases} 0, & \text{nếu } \hat{y} = y \\ 1, & \text{nếu } \hat{y} \neq y \end{cases} $$
Trong đó:
- $y \in \{0,1\}$: nhãn thật
- $\hat{y} \in \{0,1\}$: nhãn dự đoán
Empirical risk trên toàn bộ tập dữ liệu:
$$
\text{Risk} = \frac{1}{N}\sum_{i=1}^{N} \mathbb{I}(\hat{y}_i \neq y_i)
$$
với $\mathbb{I}(\cdot)$ là hàm chỉ thị (indicator function).
(b) Trực giác và ý nghĩa
Zero-one loss đúng hoàn toàn với mục tiêu cuối cùng của phân loại: đếm số mẫu bị phân loại sai. Loss này chỉ quan tâm đến việc dự đoán đúng hay sai, không quan tâm đến mức độ tự tin của mô hình.
(c) Nhược điểm
- Không khả vi: Có bước nhảy tại biên quyết định (decision boundary), gradient không xác định
- Không cung cấp gradient có ý nghĩa: Tất cả điểm nằm đúng một phía đều có loss 0, dù mức độ tự tin khác nhau
- Tối ưu hoá NP-hard: Bài toán tối thiểu hóa zero-one loss đã được chứng minh là NP-hard trong nhiều thiết lập
(d) Khi nào nên sử dụng
Zero-one loss chỉ nên dùng làm metric (accuracy), không dùng để huấn luyện. Cần một phiên bản thay thế (surrogate loss) khả vi hơn như logistic loss, hinge loss.
II.2.2. Exponential Loss
(a) Định nghĩa và công thức
Trong thiết lập boosting, nhãn được biểu diễn $y \in \{-1, +1\}$:
$$ L(y, f(x)) = e^{-yf(x)} $$
Trong đó:
- $y \in \{-1, +1\}$: nhãn thật
- $f(x)$: score dự đoán (không qua sigmoid)
(b) Trực giác và ý nghĩa
- Nếu mô hình dự đoán đúng và tự tin ($yf(x)$ lớn và dương) → loss rất nhỏ (exponential decay)
- Nếu mô hình dự đoán sai ($yf(x) < 0$) → loss nổ mạnh theo hàm mũ
Điều này khiến boosting tập trung mạnh vào các mẫu bị dự đoán sai (hard examples).
(c) Liên hệ đến AdaBoost
AdaBoost cập nhật trọng số cho từng mẫu dựa trên exponential loss:
- Mẫu bị dự đoán sai → trọng số tăng → được chú ý nhiều hơn trong vòng boosting kế tiếp
- Mẫu dự đoán đúng → trọng số giảm
(d) Ưu điểm
- Học nhanh và hiệu quả
- Tự động tập trung xử lý lỗi
- Phù hợp với ensemble methods
(e) Nhược điểm
- Dễ bị ảnh hưởng bởi nhiễu (noisy labels)
- Loss quá nhạy với lỗi tự tin
- Có thể gây overfitting khi dữ liệu nhiễu
(f) Khi nào nên sử dụng
Sử dụng trong các thuật toán boosting (AdaBoost, GBM) khi dữ liệu sạch và muốn tập trung vào các mẫu khó.
II.2.3. Binary Cross-Entropy (BCE)
(a) Định nghĩa và công thức
$$ L(y,p) = -[y\log p + (1-y)\log(1-p)] $$
Trong đó:
- $y \in \{0,1\}$: nhãn thật
- $p = \sigma(z) = \frac{1}{1+e^{-z}}$: xác suất dự đoán cho lớp 1
- $z = f(x)$: logit đầu ra từ mô hình
Trên toàn bộ dataset:
$$
L_{\text{total}} = -\frac{1}{N}\sum_{i=1}^{N}[y_i\log p_i + (1-y_i)\log(1-p_i)]
$$
(b) Trực giác và ý nghĩa
Cách diễn giải thông tin (Information-theoretic):
Cross-entropy giữa phân phối thật $P$ (Bernoulli) và phân phối dự đoán $Q$:
$$
H(P, Q) = H(P) + D_{KL}(P||Q)
$$
Vì $H(P)$ là hằng số không phụ thuộc mô hình → tối thiểu hoá CE ≡ tối thiểu hoá KL divergence.
BCE tương đương tối ưu maximum likelihood cho phân phối Bernoulli.
Hành vi phạt lỗi:
- Mô hình dự đoán đúng nhưng không tự tin ($p=0.55$) → loss nhỏ ($\approx 0.598$)
- Mô hình dự đoán sai mà tự tin cao ($p=0.99$ khi $y=0$) → loss rất lớn ($\approx 4.605$)
(c) Đạo hàm và gradient
Đạo hàm theo logit $z$:
$$
\frac{\partial L}{\partial z} = p - y
$$
Điều này cho thấy:
- Gradient tuyến tính theo sai khác giữa xác suất dự đoán và nhãn thật
- Mô hình dễ tối ưu hơn exponential loss (gradient không bùng nổ)
(d) Ưu điểm
- Khả vi hoàn toàn và ổn định
- Được hỗ trợ tốt trong tất cả framework (PyTorch, TensorFlow, Keras)
- Phù hợp với mô hình logistic regression và neural networks
- Cung cấp xác suất có thể calibrate
(e) Nhược điểm
- Có thể tạo ra mô hình overconfident
- Nhạy cảm với class imbalance (cần weighted BCE hoặc focal loss)
(f) Khi nào nên sử dụng
BCE là loss function chuẩn cho binary classification với neural networks và logistic regression. Sử dụng khi:
- Cần xác suất đầu ra có thể calibrate
- Dữ liệu tương đối cân bằng hoặc có thể áp dụng class weighting
- Muốn training ổn định
II.2.4. Hinge Loss
(a) Định nghĩa và công thức
Với $y\in\{-1,1\}$:
$$
L(y,f(x)) = \max(0, 1 - y f(x))
$$
Trong đó:
- $y \in \{-1,+1\}$: nhãn thật
- $f(x)$: score dự đoán (không qua activation function)
(b) Trực giác và ý nghĩa
Margin optimization:
Hinge loss không chỉ muốn $yf(x) > 0$ (phân loại đúng) mà còn muốn $yf(x) \ge 1$ (phân loại đúng với margin an toàn).
- Nếu điểm nằm bên trong margin ($yf(x) < 1$) → loss tuyến tính tỷ lệ với khoảng cách tới margin
- Nếu điểm nằm ngoài margin ($yf(x) \ge 1$) → loss = 0 (không cần tối ưu thêm)
(c) So sánh với BCE
| Thuộc tính | BCE (Logistic Loss) | Hinge Loss (SVM) |
|---|---|---|
| Tối ưu hóa | Xác suất | Margin |
| Đầu ra | Sigmoid → [0,1] | Linear score |
| Gradient | Mượt mại | Ngắt quãng tại margin |
| Calibration | Tốt | Kém |
| Mục tiêu | Maximize likelihood | Maximize margin |
(d) Ưu điểm
- Tập trung vào biên phân chia (margin)
- Hiệu quả với SVM
- Robust với outliers nằm xa biên quyết định
- Tạo ra sparse solutions (nhiều support vectors = 0)
(e) Nhược điểm
- Không cung cấp xác suất trực tiếp
- Gradient không liên tục tại margin boundary
- Kém hiệu quả khi dữ liệu nhiễu
(f) Khi nào nên sử dụng
Sử dụng khi:
- Muốn mô hình tập trung vào biên phân chia thay vì xác suất
- Làm việc với SVM
- Dữ liệu ít nhiễu và có thể tách tuyến tính
II.3. Metrics cho Binary Classification
II.3.1. Confusion Matrix
Confusion Matrix là nền tảng để tính toán tất cả các metrics trong binary classification:
| Predicted = 1 | Predicted = 0 | |
|---|---|---|
| Actual = 1 | True Positive (TP) | False Negative (FN) |
| Actual = 0 | False Positive (FP) | True Normal (TN) |
Trong đó:
- TP (True Positive): Dự đoán đúng lớp positive
- TN (True Negative): Dự đoán đúng lớp negative
- FP (False Positive): Dự đoán sai (báo động giả - Type I error)
- FN (False Negative): Bỏ sót (miss - Type II error)
II.3.2. Accuracy
(a) Định nghĩa và công thức
$$ \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} = \frac{TP + TN}{N} $$
Trong đó $N$ là tổng số mẫu trong dataset.
(b) Trực giác và ý nghĩa
Accuracy đo tỷ lệ dự đoán đúng trên toàn bộ dataset. Đây là metric trực quan nhất và dễ hiểu nhất.
(c) Ưu điểm
- Dễ hiểu và trực quan
- Phù hợp khi dữ liệu cân bằng
- Metric tiêu chuẩn để so sánh nhanh
(d) Nhược điểm - Vấn đề với dữ liệu mất cân bằng
Ví dụ cực đoan:
- Dataset: 995 negative, 5 positive
- Mô hình dự đoán toàn bộ là negative
- Accuracy = 995/1000 = 99.5%
- Nhưng mô hình hoàn toàn vô dụng (không phát hiện được positive nào)
(e) Khi nào nên sử dụng
Chỉ nên dùng accuracy khi:
- Dữ liệu cân bằng giữa các lớp
- Chi phí của FP và FN tương đương nhau
- Muốn có cái nhìn tổng quan nhanh
Với dữ liệu mất cân bằng, cần sử dụng các metrics khác như Precision, Recall, F1, hoặc Balanced Accuracy.
II.3.3. True Positive Rate (TPR) - Recall - Sensitivity
(a) Định nghĩa và công thức
$$ TPR = \text{Recall} = \text{Sensitivity} = \frac{TP}{TP + FN} $$
Trong đó:
- $TP + FN$: Tổng số mẫu positive thực tế trong dataset
(b) Trực giác và ý nghĩa
TPR đo khả năng phát hiện được các mẫu positive. Câu hỏi: "Trong tất cả các mẫu positive thật, mô hình phát hiện được bao nhiêu?"
- TPR = 100%: Mô hình không bỏ sót positive nào
- TPR thấp: Mô hình bỏ sót nhiều positive (high FN)
(c) Ưu điểm
- Quan trọng trong các bài toán không chấp nhận bỏ sót
- Trực tiếp đánh giá khả năng phát hiện positive
(d) Khi nào nên sử dụng
Ưu tiên TPR cao khi:
- Y tế: Phát hiện bệnh (bỏ sót = nguy hiểm)
- An ninh: Phát hiện xâm nhập (bỏ sót = mất an toàn)
- Fraud detection: Bỏ sót gian lận = mất tiền
II.3.4. True Negative Rate (TNR) - Specificity
(a) Định nghĩa và công thức
$$ TNR = \text{Specificity} = \frac{TN}{TN + FP} $$
Trong đó:
- $TN + FP$: Tổng số mẫu negative thực tế trong dataset
(b) Trực giác và ý nghĩa
TNR đo khả năng nhận diện đúng các mẫu negative. Câu hỏi: "Trong tất cả các mẫu negative thật, mô hình nhận đúng bao nhiêu?"
- TNR = 100%: Mô hình không có false alarm nào
- TNR thấp: Mô hình báo động giả nhiều (high FP)
(c) Khi nào nên sử dụng
Ưu tiên TNR cao khi:
- Chi phí false positive rất cao
- Ví dụ: Nhận diện khuôn mặt (FP = người lạ vào được)
II.3.5. False Positive Rate (FPR)
(a) Định nghĩa và công thức
$$ FPR = \frac{FP}{TN + FP} = 1 - TNR $$
(b) Trực giác và ý nghĩa
FPR đo tỷ lệ báo động giả trong các mẫu negative. Càng thấp càng tốt.
(c) Khi nào quan tâm
FPR quan trọng trong:
- Security systems (false alarm rate)
- Medical screening (gây lo lắng không cần thiết)
II.3.6. False Negative Rate (FNR) - Miss Rate
(a) Định nghĩa và công thức
$$ FNR = \frac{FN}{TP + FN} = 1 - TPR $$
(b) Trực giác và ý nghĩa
FNR đo tỷ lệ bỏ sót trong các mẫu positive. Đặc biệt nguy hiểm trong y tế (bỏ sót bệnh).
(c) Trade-off quan trọng
Không thể đồng thời tối ưu TPR và TNR:
- Tăng TPR (giảm FN) → thường tăng FP (giảm TNR)
- Tăng TNR (giảm FP) → thường tăng FN (giảm TPR)
→ Cần lựa chọn threshold phù hợp với ứng dụng.
II.3.7. Precision (Positive Predictive Value)
(a) Định nghĩa và công thức
$$ \text{Precision} = \frac{TP}{TP + FP} $$
Trong đó:
- $TP + FP$: Tổng số mẫu được dự đoán là positive
(b) Trực giác và ý nghĩa
Precision đo chất lượng của các dự đoán positive. Câu hỏi: "Trong tất cả các mẫu mô hình dự đoán là positive, có bao nhiêu thật sự là positive?"
- Precision cao: Ít false alarm
- Precision thấp: Nhiều báo động giả
(c) Ưu điểm
- Đánh giá độ tin cậy của dự đoán positive
- Quan trọng khi chi phí FP cao
(d) Nhược điểm
- Không xét đến FN (bỏ sót)
- Có thể bị "hack" bằng cách dự đoán rất ít positive
(e) Ví dụ cực đoan
Mô hình chỉ dự đoán 1 mẫu là positive (và đúng):
- Precision = 100%
- Nhưng recall có thể rất thấp (bỏ sót nhiều)
(f) Khi nào nên sử dụng
Ưu tiên Precision cao khi:
- Email spam: FP = email quan trọng vào spam
- Recommendation: FP = gợi ý tồi làm mất trải nghiệm
- Chi phí xác minh FP cao
II.3.8. Recall (đã trình bày ở TPR)
Recall và TPR là cùng một khái niệm, nhưng thường được gọi là:
- Recall trong context của Precision-Recall
- TPR/Sensitivity trong context của medical/diagnostic testing
II.3.9. F1-Score
(a) Định nghĩa và công thức
F1 là trung bình điều hòa (harmonic mean) của Precision và Recall:
$$ F1 = \frac{2 \cdot \text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} = \frac{2TP}{2TP + FP + FN} $$
(b) Trực giác và ý nghĩa
Tại sao dùng trung bình điều hòa?
Trung bình số học (arithmetic mean) cho phép một metric thấp bù trừ bằng metric kia cao:
- Precision = 100%, Recall = 10% → Arithmetic mean = 55%
Trung bình điều hòa phạt nặng sự mất cân bằng:
- Precision = 100%, Recall = 10% → F1 ≈ 18%
→ F1 chỉ cao khi cả Precision và Recall đều cao.
(c) Ưu điểm
- Cân bằng giữa Precision và Recall
- Metric duy nhất để so sánh khi cần trade-off
- Phù hợp với dữ liệu mất cân bằng
(d) Nhược điểm
- Không phân biệt tầm quan trọng của FP vs FN
- Không xét đến True Negatives (TN)
- Phụ thuộc threshold (không như AUC)
- Có thể che giấu vấn đề khi một trong hai metric quá thấp
(e) Khi nào nên sử dụng
F1 phù hợp khi:
- Dữ liệu mất cân bằng
- Cần cân bằng giữa FP và FN
- Không có lý do ưu tiên Precision hay Recall
(f) Ví dụ minh họa
Trường hợp 1:
- Precision = 0.8, Recall = 0.6
- F1 = 2×(0.8×0.6)/(0.8+0.6) = 0.686
Trường hợp 2:
- Precision = 1.0, Recall = 0.1
- F1 = 2×(1.0×0.1)/(1.0+0.1) ≈ 0.182
→ F1 phạt nặng sự mất cân bằng.
II.3.10. F-beta Score
(a) Định nghĩa và công thức
$$ F_\beta = (1+\beta^2) \frac{\text{Precision} \cdot \text{Recall}}{\beta^2 \cdot \text{Precision} + \text{Recall}} $$
Trong đó:
- $\beta > 1$: Ưu tiên Recall (giảm bỏ sót)
- $\beta < 1$: Ưu tiên Precision (giảm false alarm)
- $\beta = 1$: F1-Score (cân bằng)
(b) Trực giác và ý nghĩa
$\beta$ điều chỉnh trọng số tương đối giữa Precision và Recall:
- F2 Score ($\beta=2$): Recall quan trọng gấp 2 lần Precision
- F0.5 Score ($\beta=0.5$): Precision quan trọng gấp 2 lần Recall
(c) Khi nào nên sử dụng
| Ứng dụng | $\beta$ | Lý do |
|---|---|---|
| Medical diagnosis | 2-3 | Bỏ sót bệnh = nguy hiểm → ưu tiên Recall |
| Spam filtering | 0.5 | Email quan trọng vào spam = tồi → ưu tiên Precision |
| Fraud detection | 2 | Bỏ sót gian lận = mất tiền → ưu tiên Recall |
| Information retrieval | 1-2 | Cân bằng hoặc hơi thiên Recall |
II.3.11. ROC Curve và AUC
(a) Định nghĩa
ROC (Receiver Operating Characteristic) Curve biểu diễn:
- Trục X: False Positive Rate (FPR)
- Trục Y: True Positive Rate (TPR)
Khi threshold thay đổi từ 0 → 1.
AUC (Area Under the ROC Curve) đo diện tích dưới đường cong ROC.
(b) Ý nghĩa của AUC
$$ AUC = P(\text{score}(\text{positive sample}) > \text{score}(\text{negative sample})) $$
AUC là xác suất một mẫu positive ngẫu nhiên được xếp hạng cao hơn một mẫu negative ngẫu nhiên.
| AUC | Ý nghĩa |
|---|---|
| 0.5 | Random classifier (đường chéo) |
| 0.7-0.8 | Acceptable |
| 0.8-0.9 | Excellent |
| 0.9-1.0 | Outstanding |
| 1.0 | Perfect classifier |
(c) Trực giác và ý nghĩa
ROC Curve cho phép:
1. So sánh mô hình không phụ thuộc threshold
2. Visualize trade-off giữa TPR và FPR
3. Chọn threshold tối ưu dựa trên yêu cầu
Điểm quan trọng trên ROC:
- (0,0): Dự đoán tất cả là negative
- (1,1): Dự đoán tất cả là positive
- (0,1): Perfect classifier
- Đường chéo: Random guessing
(d) Ưu điểm
- Threshold-independent: Đánh giá tổng quan khả năng phân biệt của mô hình
- Robust với class imbalance (so với accuracy)
- Phù hợp cho bài toán ranking (credit scoring, recommendation)
- Cho phép chọn threshold sau khi train
(e) Nhược điểm
- Có thể gây hiểu lầm trong dữ liệu cực kỳ mất cân bằng (ví dụ 1:1000)
- Khi đó, FPR nhỏ nhưng số FP thực tế có thể rất lớn
- Không thể hiện được Precision trực tiếp
(f) Khi nào nên sử dụng
ROC-AUC phù hợp khi:
- Muốn đánh giá khả năng phân biệt tổng quan
- Cần ranking thay vì hard classification
- Dữ liệu không quá mất cân bằng
- Ví dụ: Credit scoring, ranking systems
Với dữ liệu cực kỳ mất cân bằng → dùng Precision-Recall AUC thay thế.
II.3.12. Precision-Recall Curve và PR-AUC
(a) Định nghĩa
Precision-Recall Curve biểu diễn:
- Trục X: Recall
- Trục Y: Precision
Khi threshold thay đổi từ 0 → 1.
PR-AUC là diện tích dưới đường cong Precision-Recall.
(b) Trực giác và ý nghĩa
PR Curve tập trung vào performance trên lớp positive, đặc biệt hữu ích khi:
- Lớp positive là minority và quan trọng
- Không quan tâm nhiều đến TN (true negatives)
(c) So sánh ROC vs PR
| Khía cạnh | ROC-AUC | PR-AUC |
|---|---|---|
| Tập trung | TPR vs FPR | Precision vs Recall |
| Class imbalance | Có thể misleading | Rất informative |
| Xét TN | Có (qua FPR) | Không |
| Baseline | 0.5 (random) | Tỷ lệ positive |
Ví dụ: Dataset 1% positive, 99% negative
- Mô hình dự đoán tất cả là positive:
- ROC-AUC: Vẫn có thể cao (FPR = 1, TPR = 1)
- Precision = 0.01 (rất thấp) → PR-AUC thấp
→ PR-AUC phản ánh chính xác hơn với imbalanced data.
(d) Khi nào nên sử dụng
PR-AUC phù hợp khi:
- Dữ liệu cực kỳ mất cân bằng
- Lớp positive là focus chính
- Ví dụ: Fraud detection, rare disease detection, anomaly detection
II.3.13. Balanced Accuracy
(a) Định nghĩa và công thức
$$ \text{Balanced Accuracy} = \frac{TPR + TNR}{2} = \frac{1}{2}\left(\frac{TP}{TP+FN} + \frac{TN}{TN+FP}\right) $$
(b) Trực giác và ý nghĩa
Balanced Accuracy là trung bình của accuracy trên mỗi lớp, cho cả hai lớp trọng số bằng nhau bất kể phân bố.
So với Accuracy thông thường:
- Accuracy = $\frac{TP+TN}{N}$ bị ảnh hưởng bởi lớp đa số
- Balanced Accuracy = trung bình TPR và TNR → công bằng cho cả hai lớp
(c) Ưu điểm
- Không bị ảnh hưởng bởi class imbalance
- Đơn giản và dễ hiểu
- Phù hợp khi cả hai lớp đều quan trọng
(d) Khi nào nên sử dụng
Sử dụng Balanced Accuracy khi:
- Dữ liệu mất cân bằng
- Muốn đánh giá công bằng trên cả hai lớp
- Không có lý do ưu tiên một lớp cụ thể
II.3.14. Matthews Correlation Coefficient (MCC)
(a) Định nghĩa và công thức
$$ MCC = \frac{TP \times TN - FP \times FN}{\sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}} $$
Giá trị: $MCC \in [-1, 1]$
Trong đó:
- $MCC = 1$: Perfect prediction
- $MCC = 0$: Random prediction
- $MCC = -1$: Complete disagreement
(b) Trực giác và ý nghĩa
MCC là correlation coefficient giữa dự đoán và ground truth:
- Xét đến cả bốn giá trị: TP, TN, FP, FN
- Cân bằng tốt ngay cả với dữ liệu cực kỳ mất cân bằng
- Metric duy nhất symmetric với positive/negative
(c) Ưu điểm
- Rất robust với class imbalance
- Xét đến tất cả các khía cạnh của confusion matrix
- Không bị "hack" dễ dàng
- Được nhiều paper khuyên dùng cho imbalanced data
(d) Nhược điểm
- Khó diễn giải hơn Precision/Recall/F1
- Ít phổ biến trong industry
- Cần phải normalize confusion matrix trước khi tính
(e) Khi nào nên sử dụng
MCC phù hợp khi:
- Dữ liệu cực kỳ mất cân bằng
- Cần metric robust và không bị manipulate
- Trong research và benchmark
II.4. Tổng kết: Lựa chọn Loss và Metric cho Binary Classification
II.4.1. Bảng tóm tắt Loss Functions
| Loss Function | Công thức | Khi nào dùng | Framework |
|---|---|---|---|
| Binary Cross-Entropy | $-[y\log p + (1-y)\log(1-p)]$ | Standard choice, neural nets | PyTorch: BCELoss, TF: BinaryCrossentropy |
| Hinge Loss | $\max(0, 1-yf(x))$ | SVM, margin-based | Scikit-learn: hinge |
| Exponential Loss | $e^{-yf(x)}$ | Boosting (AdaBoost) | Built-in AdaBoost |
II.4.2. Bảng tóm tắt Metrics
| Metric | Công thức | Khi nào ưu tiên | Hạn chế |
|---|---|---|---|
| Accuracy | $\frac{TP+TN}{N}$ | Dữ liệu cân bằng | Misleading với imbalance |
| Precision | $\frac{TP}{TP+FP}$ | Chi phí FP cao | Không xét FN |
| Recall | $\frac{TP}{TP+FN}$ | Chi phí FN cao | Không xét FP |
| F1-Score | $\frac{2PR}{P+R}$ | Cân bằng P và R, imbalanced data | Threshold-dependent |
| ROC-AUC | Area under ROC | Ranking, threshold-free | Misleading với extreme imbalance |
| PR-AUC | Area under PR | Extreme imbalance | Baseline khác nhau |
| Balanced Accuracy | $\frac{TPR+TNR}{2}$ | Imbalance, equal class importance | Không xét trade-off P/R |
| MCC | $\frac{TP \cdot TN - FP \cdot FN}{\sqrt{...}}$ | Research, extreme imbalance | Khó diễn giải |
II.4.3. Decision Tree: Chọn Loss và Metric
Bạn đang làm gì?
│
├─ Training mô hình?
│ │
│ ├─ Neural Network → BCE Loss
│ ├─ SVM → Hinge Loss
│ └─ Boosting → Exponential Loss (AdaBoost)
│
└─ Đánh giá mô hình?
│
├─ Dữ liệu cân bằng? → Accuracy, F1
│
├─ Dữ liệu mất cân bằng?
│ ├─ Nhẹ (1:10) → F1, Balanced Accuracy
│ ├─ Vừa (1:100) → PR-AUC, F1
│ └─ Nặng (1:1000) → PR-AUC, MCC
│
├─ Chi phí FN > FP? → Recall, F2
├─ Chi phí FP > FN? → Precision, F0.5
├─ Cần ranking? → ROC-AUC (hoặc PR-AUC nếu imbalanced)
└─ Research/Benchmark? → MCC, ROC-AUC, PR-AUC
III. MULTICLASS CLASSIFICATION
III.1. Giới thiệu
Trong multiclass classification, nhãn đầu ra thuộc tập:
$$
y \in \{1, 2, \dots, K\}, \quad K \ge 3
$$
Đây là dạng bài toán xuất hiện rộng rãi trong:
- Thị giác máy: Phân loại 1000 lớp trong ImageNet
- NLP: Gán nhãn chủ đề, intent classification
- Y sinh: Phân loại loại tế bào, protein folding
- Computer vision: Object classification, scene recognition
III.1.1. Thách thức cốt lõi
Khác với binary classification, multiclass có hai thách thức:
- Mô hình phải tạo ra phân phối xác suất trên nhiều lớp
- Các lớp có thể chênh lệch phân bố rất mạnh → đánh giá không thể chỉ dựa vào accuracy
III.1.2. Kiến trúc đầu ra chuẩn
Các mô hình multiclass thường xuất ra logits $\mathbf{z} = (z_1,\dots, z_K)$, và sử dụng softmax để chuyển đổi thành phân phối xác suất:
$$ p_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}, \quad \sum_{i=1}^K p_i = 1 $$
Dự đoán nhãn cuối cùng:
$$
\hat{y} = \arg\max_i p_i
$$
III.2. Loss Functions cho Multiclass Classification
III.2.1. Categorical Cross-Entropy (CCE)
(a) Định nghĩa và công thức
Nhãn đúng $y$ được chuyển thành vector one-hot $\mathbf{y} = [y_1, y_2, \dots, y_K]$:
$$
y_i = \begin{cases}
1, & \text{nếu } i = y \\
0, & \text{ngược lại}
\end{cases}
$$
Cross-entropy loss:
$$
L = -\sum_{i=1}^{K} y_i \log p_i = -\log p_y
$$
Trong đó:
- $\mathbf{y}$: one-hot encoded label
- $\mathbf{p} = [p_1, \dots, p_K]$: predicted probability distribution
- $p_y$: xác suất dự đoán cho lớp đúng
Trên toàn bộ dataset:
$$
L_{\text{total}} = -\frac{1}{N}\sum_{n=1}^{N}\log p_{y_n}
$$
(b) Trực giác và ý nghĩa
Giải thích likelihood:
CCE tương đương với negative log-likelihood của phân phối categorical:
$$
P(Y=y|X=x) = p_y
$$
Tối đa hóa likelihood ≡ tối thiểu hóa $-\log p_y$.
Hành vi phạt lỗi:
- Dự đoán đúng với confidence cao ($p_y = 0.99$) → $L \approx 0.01$
- Dự đoán đúng nhưng không confident ($p_y = 0.4$) → $L \approx 0.92$
- Dự đoán sai với confidence cao ($p_y = 0.01$) → $L \approx 4.61$
→ CCE phạt rất nặng dự đoán sai với confidence cao.
(c) Gradient
Gradient theo logit $z_k$:
$$
\frac{\partial L}{\partial z_k} = p_k - y_k
$$
Ý nghĩa:
- Gradient đơn giản và ổn định
- "Đẩy" xác suất về hướng ground truth
- Không có vanishing/exploding gradient issues
(d) Ưu điểm
- Khả vi hoàn toàn và gradient ổn định
- Nền tảng thống kê vững chắc (maximum likelihood)
- Standard choice cho neural networks
- Được optimize tốt trong tất cả frameworks
(e) Nhược điểm
- Có thể tạo overconfident predictions
- Nhạy cảm với class imbalance
- Có thể overfit với noisy labels
(f) Khi nào nên sử dụng
CCE là default choice cho multiclass classification với:
- Neural networks (CNNs, Transformers, etc.)
- Logistic regression (multinomial)
- Khi cần calibrated probabilities
III.2.2. Sparse Categorical Cross-Entropy (SCCE)
(a) Định nghĩa và công thức
Thay vì dùng one-hot vector, truyền trực tiếp integer label:
$$
L = -\log p_y
$$
Trong đó $y \in \{0, 1, \dots, K-1\}$ là chỉ số lớp.
(b) Trực giác và ý nghĩa
Tại sao cần SCCE?
Khi số lớp rất lớn (ví dụ NLP với 50,000 từ vựng):
- One-hot vector: $[0, 0, \dots, 1, \dots, 0]$ chiếm $(50000 \times 4)$ bytes ≈ 200KB/sample
- Sparse representation: $y = 1234$ chỉ chiếm 4 bytes
Memory savings:
- Batch size 32, vocab 50K:
- One-hot: 32 × 50000 × 4 bytes = 6.4 MB
- Sparse: 32 × 4 bytes = 128 bytes
(c) Equivalence với CCE
Về mặt toán học, SCCE ≡ CCE:
$$
-\log p_y = -\sum_{i=1}^K y_i \log p_i \quad \text{(với $y_i$ là one-hot)}
$$
Chỉ khác nhau về input format.
(d) Ưu điểm
- Tiết kiệm memory đáng kể
- Faster computation (không cần one-hot encoding)
- Numerically more stable
(e) Implementation trong Frameworks
| Framework | Function |
|---|---|
| PyTorch | nn.CrossEntropyLoss() (tự động sparse) |
| TensorFlow/Keras | SparseCategoricalCrossentropy() |
| Scikit-learn | log_loss() với integer labels |
(f) Khi nào nên sử dụng
SCCE phù hợp khi:
- Số lớp rất lớn ($K > 1000$)
- NLP tasks (language modeling, machine translation)
- Memory-constrained environments
- Standard choice cho modern deep learning
III.2.3. Label Smoothing
(a) Định nghĩa và công thức
Thay vì one-hot encoding:
$$
y_i = \begin{cases}
1, & i = y \\
0, & i \neq y
\end{cases}
$$
Label smoothing điều chỉnh thành:
$$
y'_i = \begin{cases}
1-\varepsilon, & i = y \\
\frac{\varepsilon}{K-1}, & i \neq y
\end{cases}
$$
Trong đó:
- $\varepsilon \in [0, 1]$: smoothing parameter (thường $\varepsilon = 0.1$)
- $K$: số lượng lớp
Loss function:
$$
L = -\sum_{i=1}^K y'_i \log p_i
$$
(b) Trực giác và ý nghĩa
Vấn đề của hard labels:
One-hot encoding khiến mô hình:
- Luôn cố gắng làm $p_y \rightarrow 1$
- Tạo ra overconfident predictions
- Dễ overfit
- Calibration kém
Label smoothing như "soft targets":
Ví dụ với $K=4$, $\varepsilon=0.1$, lớp đúng là 1:
- Hard label: $[1, 0, 0, 0]$
- Soft label: $[0.9, 0.033, 0.033, 0.033]$
Trực giác "quả chuối":
- Quả chuối có xác suất cao nhất là vàng
- Nhưng vẫn có xác suất hợp lý cho xanh nhạt, vàng chanh
- Không thể 100% chắc chắn → model học conservative hơn
(c) Tác động lên model
Label smoothing giúp:
1. Giảm overconfidence: Model không push probability → 1
2. Better generalization: Giảm overfitting
3. Improved calibration: Probability estimates tin cậy hơn
4. Regularization effect: Tương tự L2 regularization trên logits
(d) Ưu điểm
- Tăng khả năng tổng quát hóa
- Improve calibration đáng kể
- Simple và easy to implement
- Không tăng computational cost
(e) Nhược điểm
- Có thể làm giảm nhẹ accuracy trên training set
- Cần tune $\varepsilon$ (thường 0.1 là tốt)
- Không phù hợp khi labels có thể sai
(f) Applications trong Research
Label smoothing được sử dụng rộng rãi trong:
- Vision Transformers (ViT paper sử dụng $\varepsilon=0.1$)
- Transformer ("Attention Is All You Need")
- BERT, GPT và các LLMs
- EfficientNet, ResNet modern variants
(g) Ví dụ số
Dataset: 4 classes, true label = class 1
| Method | Class 0 | Class 1 | Class 2 | Class 3 |
|---|---|---|---|---|
| Hard label | 0 | 1 | 0 | 0 |
| Label smoothing (ε=0.1) | 0.033 | 0.9 | 0.033 | 0.033 |
Model predictions example:
- Without smoothing: $[0.001, 0.998, 0.0005, 0.0005]$ (overconfident)
- With smoothing: $[0.05, 0.85, 0.05, 0.05]$ (more calibrated)
(h) Khi nào nên sử dụng
Sử dụng label smoothing khi:
- Training large models (ResNet, Transformers)
- Muốn improve calibration
- Dataset có potential label noise
- Không quan trọng train accuracy tối đa
- Standard practice trong modern deep learning
Typical values: $\varepsilon \in [0.05, 0.2]$, most common là $0.1$
III.3. Metrics cho Multiclass Classification
III.3.1. Accuracy
(a) Định nghĩa và công thức
$$ \text{Accuracy} = \frac{1}{N}\sum_{i=1}^N \mathbb{I}(\hat{y}_i = y_i) $$
Trong đó:
- $N$: tổng số mẫu
- $\mathbb{I}(\cdot)$: indicator function
- $\hat{y}_i, y_i$: nhãn dự đoán và nhãn thật của mẫu thứ $i$
(b) Trực giác và ý nghĩa
Accuracy đo tỷ lệ dự đoán đúng trên toàn bộ dataset, rất dễ hiểu và trực quan.
(c) Ưu điểm
- Dễ hiểu nhất trong tất cả metrics
- Phù hợp khi classes balanced
- Standard metric để report
(d) Nhược điểm - Vấn đề với Class Imbalance
Ví dụ minh họa:
Dataset có 3 classes:
- Class 1: 80% samples
- Class 2: 15% samples
- Class 3: 5% samples
Model A: Dự đoán tốt class 1,2 nhưng kém class 3
- Accuracy = 85%
Model B: Cân bằng giữa tất cả classes
- Accuracy = 75%
→ Model A có accuracy cao hơn nhưng fail ở class quan trọng (class 3).
(e) Khi nào nên sử dụng
Chỉ dùng accuracy khi:
- Classes tương đối balanced
- Không có class nào quan trọng hơn
- Muốn metric overview nhanh
Với imbalanced data → dùng các metrics khác.
III.3.2. Confusion Matrix cho Multiclass
Confusion Matrix $C$ kích thước $K \times K$:
$$ C_{ij} = \text{số mẫu có true label } i \text{ được dự đoán là } j $$
| Pred 0 | Pred 1 | Pred 2 | ... | Pred K | |
|---|---|---|---|---|---|
| True 0 | $C_{00}$ | $C_{01}$ | $C_{02}$ | ... | $C_{0K}$ |
| True 1 | $C_{10}$ | $C_{11}$ | $C_{12}$ | ... | $C_{1K}$ |
| True 2 | $C_{20}$ | $C_{21}$ | $C_{22}$ | ... | $C_{2K}$ |
| ... | ... | ... | ... | ... | ... |
| True K | $C_{K0}$ | $C_{K1}$ | $C_{K2}$ | ... | $C_{KK}$ |
Diagonal elements $C_{ii}$: correct predictions
Off-diagonal elements $C_{ij}$ (i≠j): confusions
Confusion matrix cho phép:
1. Nhìn thấy patterns của lỗi
2. Phát hiện classes bị nhầm lẫn nhiều
3. Tính toán các metrics per-class
III.3.3. Per-Class Metrics
Đối với mỗi class $i$, tính như binary classification:
(a) Precision cho class $i$
$$ \text{Precision}_i = \frac{C_{ii}}{\sum_{j=1}^K C_{ji}} $$
Trong đó:
- $C_{ii}$: True Positives cho class $i$
- $\sum_{j} C_{ji}$: Tổng số predictions cho class $i$
(b) Recall cho class $i$
$$ \text{Recall}_i = \frac{C_{ii}}{\sum_{j=1}^K C_{ij}} $$
Trong đó:
- $C_{ii}$: True Positives cho class $i$
- $\sum_{j} C_{ij}$: Tổng số true samples của class $i$
(c) F1-Score cho class $i$
$$ F1_i = \frac{2 \cdot \text{Precision}_i \cdot \text{Recall}_i}{\text{Precision}_i + \text{Recall}_i} $$
III.3.4. Macro-Averaging
(a) Định nghĩa và công thức
Tính metric cho từng class rồi lấy trung bình số học:
$$ \text{Macro-Precision} = \frac{1}{K}\sum_{i=1}^{K} \text{Precision}_i $$
$$ \text{Macro-Recall} = \frac{1}{K}\sum_{i=1}^{K} \text{Recall}_i $$
$$ \text{Macro-F1} = \frac{1}{K}\sum_{i=1}^{K} F1_i $$
hoặc có thể tính:
$$
\text{Macro-F1} = \frac{2 \cdot \text{Macro-Precision} \cdot \text{Macro-Recall}}{\text{Macro-Precision} + \text{Macro-Recall}}
$$
(b) Trực giác và ý nghĩa
Macro-averaging coi mỗi class như nhau, không quan tâm số lượng samples.
Ví dụ:
- Class 1: 1000 samples, F1 = 0.9
- Class 2: 100 samples, F1 = 0.5
- Class 3: 10 samples, F1 = 0.3
→ Macro-F1 = (0.9 + 0.5 + 0.3) / 3 = 0.567
(c) Ưu điểm
- Mỗi class có trọng số bằng nhau
- Phù hợp khi rare classes quan trọng
- Không bị dominated bởi majority class
- Phát hiện performance issues ở minority classes
(d) Nhược điểm
- Nếu có class quá ít samples → metric không stable
- Có thể không phản ánh overall performance
- Sensitive to noise trong small classes
(e) Khi nào nên sử dụng
Macro-averaging phù hợp khi:
- Tất cả classes đều quan trọng như nhau
- Minority classes có giá trị cao
- Muốn detect issues ở rare classes
- Ví dụ: Medical diagnosis (rare diseases), species classification
III.3.5. Weighted-Averaging
(a) Định nghĩa và công thức
Lấy trung bình theo trọng số là số lượng samples của mỗi class:
$$ \text{Weighted-Precision} = \sum_{i=1}^{K} w_i \cdot \text{Precision}_i $$
$$ \text{Weighted-Recall} = \sum_{i=1}^{K} w_i \cdot \text{Recall}_i $$
$$ \text{Weighted-F1} = \sum_{i=1}^{K} w_i \cdot F1_i $$
Trong đó:
$$
w_i = \frac{n_i}{N}
$$
- $n_i$: số samples của class $i$
- $N = \sum_{i=1}^K n_i$: tổng số samples
(b) Trực giác và ý nghĩa
Weighted-averaging phản ánh phân bố thực tế của data.
Sử dụng ví dụ trên:
- Class 1: 1000 samples, F1 = 0.9, weight = 1000/1110
- Class 2: 100 samples, F1 = 0.5, weight = 100/1110
- Class 3: 10 samples, F1 = 0.3, weight = 10/1110
→ Weighted-F1 = (0.9×1000 + 0.5×100 + 0.3×10) / 1110 ≈ 0.86
(c) Ưu điểm
- Phản ánh đúng distribution
- Giảm variance từ rare classes
- Gần với overall accuracy hơn
(d) Nhược điểm
- Rare classes có impact nhỏ
- Có thể che giấu performance issues ở minority
- Bị dominated bởi majority classes
(e) Khi nào nên sử dụng
Weighted-averaging phù hợp khi:
- Muốn metric phản ánh real-world distribution
- Majority classes quan trọng hơn
- Rare classes có sample size quá nhỏ (unstable metrics)
III.3.6. Micro-Averaging
(a) Định nghĩa và công thức
Tính tổng TP, FP, FN trên tất cả classes, rồi tính metric:
$$ \text{Micro-Precision} = \frac{\sum_{i=1}^K TP_i}{\sum_{i=1}^K (TP_i + FP_i)} $$
$$ \text{Micro-Recall} = \frac{\sum_{i=1}^K TP_i}{\sum_{i=1}^K (TP_i + FN_i)} $$
$$ \text{Micro-F1} = \frac{2 \cdot \text{Micro-Precision} \cdot \text{Micro-Recall}}{\text{Micro-Precision} + \text{Micro-Recall}} $$
(b) Trực giác và ý nghĩa
Micro-averaging tập hợp tất cả predictions lại như một bài toán binary lớn.
Tính chất đặc biệt:
$$
\text{Micro-Precision} = \text{Micro-Recall} = \text{Micro-F1} = \text{Accuracy}
$$
(trong multiclass single-label classification)
(c) Ưu điểm
- Đơn giản nhất
- Equivalent với accuracy
- Mỗi sample có trọng số bằng nhau
(d) Nhược điểm
- Không phân biệt performance giữa classes
- Dominated bởi majority classes
- Ít informative trong imbalanced settings
(e) Khi nào nên sử dụng
Micro-averaging phù hợp khi:
- Muốn đánh giá tổng quan
- Mỗi sample quan trọng như nhau (không phải mỗi class)
- Equivalent với accuracy nên ít dùng trong practice
III.3.7. So sánh Macro vs Weighted vs Micro
Ví dụ minh họa
Dataset 3 classes:
| Class | Samples | Precision | Recall | F1 |
|---|---|---|---|---|
| A | 900 | 0.95 | 0.95 | 0.95 |
| B | 80 | 0.70 | 0.70 | 0.70 |
| C | 20 | 0.40 | 0.40 | 0.40 |
Macro-F1:
$$
\frac{0.95 + 0.70 + 0.40}{3} = 0.683
$$
Weighted-F1:
$$
\frac{0.95 \times 900 + 0.70 \times 80 + 0.40 \times 20}{1000} = 0.919
$$
Micro-F1 = Accuracy:
$$
\frac{900 \times 0.95 + 80 \times 0.70 + 20 \times 0.40}{1000} = 0.919
$$
Bảng so sánh
| Averaging | Trọng số | Phù hợp khi | Nhược điểm |
|---|---|---|---|
| Macro | Equal per class | All classes equally important | Unstable với rare classes |
| Weighted | By sample count | Reflect real distribution | Hides minority issues |
| Micro | Equal per sample | Overall performance | Equivalent to accuracy |
III.3.8. Balanced Accuracy
(a) Định nghĩa và công thức
$$ \text{Balanced Accuracy} = \frac{1}{K} \sum_{i=1}^{K} \text{Recall}_i $$
Trong đó:
- $\text{Recall}_i = \frac{TP_i}{TP_i + FN_i}$: True Positive Rate của class $i$
(b) Trực giác và ý nghĩa
Balanced Accuracy là trung bình của recall trên mỗi class, cho tất cả classes trọng số bằng nhau.
Tương đương Macro-Recall, nhưng tên gọi "Balanced Accuracy" phổ biến hơn trong sklearn.
(c) Ưu điểm
- Không bị ảnh hưởng bởi class imbalance
- Đơn giản và dễ hiểu
- Phù hợp khi tất cả classes đều quan trọng
(d) Khi nào nên sử dụng
Sử dụng khi:
- Imbalanced multiclass data
- Muốn equal treatment cho tất cả classes
- Standard metric trong sklearn cho imbalanced problems
III.3.9. Cohen's Kappa
(a) Định nghĩa và công thức
$$ \kappa = \frac{p_o - p_e}{1 - p_e} $$
Trong đó:
- $p_o$: observed agreement (accuracy)
- $p_e$: expected agreement by chance
$$ p_o = \frac{\sum_{i=1}^K C_{ii}}{N} $$
$$ p_e = \frac{1}{N^2}\sum_{i=1}^K \left(\sum_{j=1}^K C_{ij}\right) \left(\sum_{j=1}^K C_{ji}\right) $$
Giá trị: $\kappa \in [-1, 1]$
- $\kappa = 1$: Perfect agreement
- $\kappa = 0$: No agreement beyond chance
- $\kappa < 0$: Worse than random
(b) Trực giác và ý nghĩa
Cohen's Kappa đo agreement corrected for chance.
Ví dụ:
- Accuracy = 90%
- Nhưng nếu random guessing cũng cho 85% accuracy (do imbalance)
- → Kappa sẽ rất thấp
(c) Interpretation
| Kappa | Interpretation |
|---|---|
| < 0 | No agreement |
| 0.0 - 0.20 | Slight |
| 0.21 - 0.40 | Fair |
| 0.41 - 0.60 | Moderate |
| 0.61 - 0.80 | Substantial |
| 0.81 - 1.00 | Almost perfect |
(d) Ưu điểm
- Accounts for chance agreement
- Robust với imbalanced data
- Widely used trong medical research
(e) Nhược điểm
- Phức tạp hơn accuracy
- Interpretation không trực quan
- Phụ thuộc vào prevalence
(f) Khi nào nên sử dụng
Cohen's Kappa phù hợp khi:
- Inter-rater reliability assessment
- Highly imbalanced data
- Medical/clinical applications
- Research papers
III.4. Tổng kết: Lựa chọn Loss và Metric cho Multiclass
III.4.1. Bảng tóm tắt Loss Functions
| Loss | Công thức | Input Format | Khi nào dùng |
|---|---|---|---|
| Cross-Entropy | $-\sum y_i \log p_i$ | One-hot | Standard, small K |
| Sparse CCE | $-\log p_y$ | Integer label | Large K (NLP) |
| CCE + Label Smoothing | $-\sum y'_i \log p_i$ | Soft labels | Modern deep learning |
III.4.2. Bảng tóm tắt Metrics
| Metric | Công thức | Khi nào ưu tiên | Imbalance Handling |
|---|---|---|---|
| Accuracy | $\frac{\sum_{i} C_{ii}}{N}$ | Balanced data | Poor |
| Macro-F1 | $\frac{1}{K}\sum F1_i$ | Equal class importance | Excellent |
| Weighted-F1 | $\sum w_i F1_i$ | Reflect distribution | Good |
| Micro-F1 | $\frac{2TP}{2TP+FP+FN}$ | Overall performance | Poor (= Accuracy) |
| Balanced Accuracy | $\frac{1}{K}\sum Recall_i$ | Imbalanced, equal classes | Excellent |
| Cohen's Kappa | $\frac{p_o - p_e}{1-p_e}$ | Correct for chance | Very good |
III.4.3. Decision Guide
Training Phase:
├─ Small number of classes (K < 1000) → Categorical Cross-Entropy
├─ Large number of classes (K > 1000) → Sparse CCE
└─ Modern deep models → CCE + Label Smoothing (ε=0.1)
Evaluation Phase:
├─ Balanced data?
│ └─ Yes → Accuracy, Standard F1
│
├─ Imbalanced data?
│ ├─ All classes equally important → Macro-F1, Balanced Accuracy
│ ├─ Reflect real distribution → Weighted-F1
│ └─ Need statistical rigor → Cohen's Kappa
│
└─ Research/Medical?
└─ Cohen's Kappa, Balanced Accuracy, Macro-F1
IV. MULTILABEL CLASSIFICATION
IV.1. Giới thiệu
Trong bài toán multilabel classification, mỗi mẫu dữ liệu có thể gán đồng thời nhiều nhãn hợp lệ, thay vì chỉ một nhãn duy nhất.
IV.1.1. Đặc điểm
Đầu ra là một vector nhị phân kích thước $K$:
$$
\mathbf{y} = [y_1, y_2, \dots, y_K], \quad y_i \in \{0, 1\}
$$
Trong đó:
- $y_i = 1$: label $i$ hiện diện
- $y_i = 0$: label $i$ không hiện diện
- Có thể có nhiều $y_i = 1$ đồng thời
IV.1.2. Ví dụ ứng dụng
| Domain | Ví dụ |
|---|---|
| Computer Vision | Ảnh chứa: [dog, grass, outdoor, sky] |
| Text Classification | Bài viết: [Politics, Economy, International] |
| Music Tagging | Bài hát: [Pop, Dance, Electronic, Upbeat] |
| Emotion Detection | Text: [joy, surprise, love] |
| E-commerce | Sản phẩm: [shirt, cotton, men, casual] |
IV.1.3. Khác biệt cốt lõi với Multiclass
| Aspect | Multiclass | Multilabel |
|---|---|---|
| Số nhãn/sample | Đúng 1 | 0 đến K |
| Labels | Mutually exclusive | Non-exclusive |
| Output activation | Softmax (sum=1) | Sigmoid (independent) |
| Loss | Cross-entropy | BCE per-label |
| Complexity | Moderate | High |
IV.2. Loss Functions cho Multilabel
IV.2.1. Tại sao không thể dùng Softmax?
(a) Vấn đề của Softmax
Softmax ép constraint:
$$
\sum_{i=1}^K p_i = 1
$$
Điều này ngầm định chỉ có một nhãn đúng (mutually exclusive).
Trong multilabel:
- Có thể có nhiều nhãn đúng → $\sum y_i$ có thể > 1
- Các nhãn độc lập → không nên cạnh tranh xác suất
(b) Hậu quả khi dùng Softmax sai
Nếu dataset có:
- True labels: [1, 1, 0, 0] (2 nhãn đúng)
Softmax sẽ:
- Force $p_1 + p_2 + p_3 + p_4 = 1$
- Tăng $p_1$ → giảm $p_2$ (cạnh tranh)
- Model không thể learn được đồng thời nhiều nhãn
→ Softmax tuyệt đối không phù hợp cho multilabel.
IV.2.2. Binary Cross-Entropy per-label (BCE)
(a) Định nghĩa và công thức
Mỗi label được coi như một binary classification độc lập:
$$ p_i = \sigma(z_i) = \frac{1}{1 + e^{-z_i}} $$
Loss:
$$
L = -\sum_{i=1}^{K} \left[ y_i \log p_i + (1-y_i)\log(1-p_i) \right]
$$
Trong đó:
- $\mathbf{z} = [z_1, \dots, z_K]$: logits
- $\mathbf{p} = [p_1, \dots, p_K]$: independent probabilities
- $\mathbf{y} = [y_1, \dots, y_K]$: ground truth labels
Trên toàn dataset:
$$
L_{\text{total}} = -\frac{1}{N}\sum_{n=1}^N \sum_{i=1}^K \left[ y_{ni} \log p_{ni} + (1-y_{ni})\log(1-p_{ni}) \right]
$$
(b) Trực giác và ý nghĩa
Tại sao BCE + Sigmoid phù hợp?
- No sum constraint: $\sum p_i$ không bị ép = 1
- Independent modeling: Mỗi label có xác suất riêng
- Can activate multiple: Nhiều $p_i$ có thể > 0.5 đồng thời
- Differentiable: Gradient tốt cho training
Ví dụ predictions:
- Image tagging: $\mathbf{p} = [0.9, 0.85, 0.1, 0.05]$ (dog, outdoor)
- $\sum p_i = 1.9$ (không vi phạm gì cả)
(c) Gradient
Gradient theo logit $z_i$:
$$
\frac{\partial L}{\partial z_i} = p_i - y_i
$$
Tương tự binary BCE, gradient rất clean và stable.
(d) Ưu điểm
- Đơn giản và hiệu quả
- Ổn định trong training
- Được support tốt trong tất cả frameworks
- Phù hợp với CNN, Transformers, BERT
(e) Nhược điểm
- Không model dependency giữa labels
- Assume labels độc lập (thực tế có thể không đúng)
- Không tận dụng co-occurrence patterns
(f) Implementation
| Framework | Function |
|---|---|
| PyTorch | nn.BCEWithLogitsLoss() |
| TensorFlow/Keras | BinaryCrossentropy() |
| Scikit-learn | Manual implementation |
(g) Khi nào nên sử dụng
BCE per-label là standard choice cho multilabel classification. Sử dụng khi:
- Standard multilabel problems
- Labels tương đối independent
- Muốn training đơn giản và stable
- Đa số applications thực tế
IV.2.3. Ranking Loss (Pairwise)
(a) Định nghĩa và công thức
Mục tiêu: Score của label đúng phải cao hơn score của label sai.
$$ L = \sum_{\substack{i,j \\ y_i=1, y_j=0}} \max(0, \text{margin} - (s_i - s_j)) $$
Trong đó:
- $s_i$: score của label $i$ (logit, không qua sigmoid)
- margin: thường = 1
- Sum over all positive-negative pairs
(b) Trực giác và ý nghĩa
Ý tưởng:
- Mỗi label đúng nên được rank cao hơn mỗi label sai
- Penalize khi $s_{\text{positive}} < s_{\text{negative}} + \text{margin}$
Ví dụ:
- True labels: [1, 0, 1, 0]
- Scores: [2.5, 1.0, 3.0, 0.5]
- Pairs to check:
- $(s_1, s_2)$: $2.5 > 1.0$ ✓
- $(s_1, s_4)$: $2.5 > 0.5$ ✓
- $(s_3, s_2)$: $3.0 > 1.0$ ✓
- $(s_3, s_4)$: $3.0 > 0.5$ ✓
- All satisfied → Loss = 0
(c) Complexity
Số pairs: $|P| \times |N|$ trong đó:
- $|P|$: số positive labels
- $|N|$: số negative labels
→ Computational cost $O(K^2)$ per sample
(d) Ưu điểm
- Tập trung vào relative ordering
- Phù hợp cho recommendation-style problems
- Có thể learn label dependencies gián tiếp
(e) Nhược điểm
- Tốn chi phí tính toán $O(K^2)$
- Không scale khi $K$ lớn
- Training phức tạp hơn BCE
- Gradient có thể unstable
(f) Khi nào nên sử dụng
Ranking loss phù hợp khi:
- Ranking quan trọng hơn absolute scores
- Recommendation systems
- Information retrieval embedded in classification
- Label dependencies quan trọng
- $K$ không quá lớn (<100)
IV.2.4. Focal Loss for Multilabel
(a) Định nghĩa và công thức
Mở rộng focal loss cho multilabel:
$$ L = -\sum_{i=1}^K \left[ \alpha_i y_i (1-p_i)^\gamma \log p_i + (1-\alpha_i)(1-y_i) p_i^\gamma \log(1-p_i) \right] $$
Trong đó:
- $\gamma \ge 0$: focusing parameter (thường $\gamma=2$)
- $\alpha_i$: class weight cho label $i$
- $(1-p_i)^\gamma$: modulating factor
(b) Trực giác và ý nghĩa
Focal loss giảm loss weight cho:
- Easy examples (high confidence, correct)
Tăng loss weight cho:
- Hard examples (low confidence hoặc misclassified)
So với BCE:
- BCE treats all examples equally
- Focal loss focuses on hard negatives/positives
(c) Khi nào nên sử dụng
Focal loss phù hợp khi:
- Extreme class imbalance per label
- Many easy negatives
- Object detection style problems
- Muốn focus vào hard examples
IV.3. Metrics cho Multilabel Classification
Multilabel metrics phức tạp vì phải xem xét độ trùng khớp giữa hai tập nhãn.
IV.3.1. Exact Match Ratio (EMR) - Subset Accuracy
(a) Định nghĩa và công thức
$$ \text{EMR} = \frac{1}{N} \sum_{n=1}^{N} \mathbb{I}\left( \mathbf{Y}_n = \hat{\mathbf{Y}}_n \right) $$
Trong đó:
- $\mathbf{Y}_n$: true label set của sample $n$
- $\hat{\mathbf{Y}}_n$: predicted label set của sample $n$
- $\mathbb{I}(\cdot)$: indicator function
Sample được tính đúng chỉ khi tất cả labels match hoàn toàn.
(b) Trực giác và ý nghĩa
EMR là metric cực kỳ khắt khe:
- Một label sai → toàn bộ sample bị tính sai
- Rất khó đạt điểm cao khi $K$ lớn
Ví dụ:
- True: [1, 1, 0, 0, 0]
- Pred: [1, 1, 1, 0, 0] (chỉ sai 1 label)
- EMR contribution: 0 (fail hoàn toàn)
(c) Ưu điểm
- Đơn giản và rõ ràng
- Phù hợp khi cần perfect match
- Easy to interpret
(d) Nhược điểm
- Quá khắt khe
- Không credit cho partial correctness
- Điểm số thường rất thấp (< 0.5)
- Sensitive to number of labels
(e) Khi nào nên sử dụng
EMR phù hợp khi:
- Perfect match là requirement
- Legal/medical applications
- Số labels nhỏ (K < 5)
- High-stakes decisions
IV.3.2. Hamming Loss
(a) Định nghĩa và công thức
$$ \text{Hamming Loss} = \frac{1}{NK} \sum_{n=1}^{N} \sum_{i=1}^{K} \mathbb{I}(y_{ni} \neq \hat{y}_{ni}) $$
Trong đó:
- $N$: số samples
- $K$: số labels
- $y_{ni}$: true value của label $i$ cho sample $n$
- $\hat{y}_{ni}$: predicted value
(b) Trực giác và ý nghĩa
Hamming loss đo tỷ lệ labels bị dự đoán sai ở mức individual label, không phải mức sample.
Hamming Accuracy:
$$
\text{Hamming Accuracy} = 1 - \text{Hamming Loss}
$$
Ví dụ:
- Sample 1: True [1,0,1], Pred [1,1,1] → 1/3 errors
- Sample 2: True [0,0,1], Pred [0,0,0] → 1/3 errors
- Hamming Loss = (1 + 1) / (2 × 3) = 0.333
- Hamming Accuracy = 0.667
(c) Ưu điểm
- Lenient: Credits partial correctness
- Phù hợp với imbalanced labels
- Dễ hiểu và tính toán
- Stable metric
(d) Nhược điểm
- Không xét relationship giữa labels
- Treats all labels equally
- Không phân biệt sample sai 1 label vs 10 labels
(e) Khi nào nên sử dụng
Hamming Loss phù hợp khi:
- Partial credit acceptable
- Label imbalance
- Large number of labels
- Standard baseline metric
IV.3.3. Jaccard Index (Multilabel Accuracy)
(a) Định nghĩa và công thức
Cho mỗi sample, Jaccard index là:
$$
J_n = \frac{|\mathbf{Y}_n \cap \hat{\mathbf{Y}}_n|}{|\mathbf{Y}_n \cup \hat{\mathbf{Y}}_n|}
$$
Average over dataset:
$$
\text{Jaccard Score} = \frac{1}{N} \sum_{n=1}^N J_n
$$
Trong đó:
- $\mathbf{Y}_n$: set of true labels
- $\hat{\mathbf{Y}}_n$: set of predicted labels
- $|\cdot|$: cardinality (số phần tử)
(b) Trực giác và ý nghĩa
Jaccard index (còn gọi IoU - Intersection over Union) đo độ tương đồng giữa hai tập.
Ví dụ:
- True: {A, B, C}
- Pred: {B, C, D}
- Intersection: {B, C} → size = 2
- Union: {A, B, C, D} → size = 4
- Jaccard = 2/4 = 0.5
(c) Properties
- Jaccard ∈ [0, 1]
- Jaccard = 1: Perfect match
- Jaccard = 0: No overlap
- Symmetric: treats FP and FN equally
(d) Ưu điểm
- Intuitive measure of overlap
- Cân bằng giữa precision và recall
- tWidely used trong computer vision
- Scale-invariant
(e) Nhược điểm
- Không có separate precision/recall info
- Sensitive to small label sets
- Division by zero khi cả Y và Ŷ đều empty
(f) Khi nào nên sử dụng
Jaccard phù hợp khi:
- Image/video tagging
- Object detection (IoU)
- General multilabel problems
- Want balanced metric
IV.3.4. Multilabel Precision, Recall, F1
Có hai cách tính chính: sample-based và label-based.
(a) Sample-based (Preferred)
Cho mỗi sample $n$:
$$
\text{Precision}_n = \frac{|\mathbf{Y}_n \cap \hat{\mathbf{Y}}_n|}{|\hat{\mathbf{Y}}_n|}
$$
$$ \text{Recall}_n = \frac{|\mathbf{Y}_n \cap \hat{\mathbf{Y}}_n|}{|\mathbf{Y}_n|} $$
$$ F1_n = \frac{2 |\mathbf{Y}_n \cap \hat{\mathbf{Y}}_n|}{|\mathbf{Y}_n| + |\hat{\mathbf{Y}}_n|} $$
Average over dataset:
$$
\text{Precision}_{\text{avg}} = \frac{1}{N}\sum_{n=1}^N \text{Precision}_n
$$
$$ \text{Recall}_{\text{avg}} = \frac{1}{N}\sum_{n=1}^N \text{Recall}_n $$
$$ F1_{\text{avg}} = \frac{1}{N}\sum_{n=1}^N F1_n $$
hoặc:
$$
F1_{\text{avg}} = \frac{2 \cdot \text{Precision}_{\text{avg}} \cdot \text{Recall}_{\text{avg}}}{\text{Precision}_{\text{avg}} + \text{Recall}_{\text{avg}}}
$$
(b) Label-based
Tính precision/recall cho mỗi label như binary classification, sau đó average (macro/micro/weighted).
(c) Ví dụ minh họa Sample-based
Sample 1:
- True: {A, C, D}
- Pred: {A, B}
- Intersection: {A} → size = 1
- Precision₁ = 1/2 = 0.5
- Recall₁ = 1/3 ≈ 0.333
- F1₁ = 2×(0.5×0.333)/(0.5+0.333) ≈ 0.4
Sample 2:
- True: {B, C}
- Pred: {B, C, D}
- Intersection: {B, C} → size = 2
- Precision₂ = 2/3 ≈ 0.667
- Recall₂ = 2/2 = 1.0
- F1₂ = 2×(0.667×1.0)/(0.667+1.0) ≈ 0.8
Average:
- Precision_avg = (0.5 + 0.667)/2 ≈ 0.584
- Recall_avg = (0.333 + 1.0)/2 ≈ 0.667
- F1_avg = (0.4 + 0.8)/2 = 0.6
(d) Ưu điểm
- Ổn định hơn EMR
- Credits partial correctness
- Separates precision và recall concerns
- Standard metric cho multilabel
(e) Nhược điểm
- Undefined khi |\hat{Y}| = 0 (no predictions)
- Undefined khi |Y| = 0 (no true labels)
- Có thể cần special handling cho edge cases
(f) Khi nào nên sử dụng
Multilabel F1 phù hợp cho:
- Image tagging (COCO, VOC datasets)
- Text classification (Reuters, arXiv)
- Product tagging (e-commerce)
- Multi-topic classification
- Most common metric trong multilabel
IV.3.5. Ranking-based Metrics
Khi predictions là continuous scores thay vì binary decisions.
(a) Coverage Error
$$ \text{Coverage} = \frac{1}{N}\sum_{n=1}^N \max_{i: y_{ni}=1} \text{rank}(s_{ni}) - 1 $$
Ý nghĩa: Average của "how far we need to go down the ranked list to cover all true labels".
Lower is better (ideally = 0).
(b) Label Ranking Average Precision (LRAP)
$$ LRAP = \frac{1}{N}\sum_{n=1}^N \frac{1}{|\mathbf{Y}_n|} \sum_{i: y_{ni}=1} \frac{|\{j: s_{nj} \ge s_{ni}, y_{nj}=1\}|}{\text{rank}(s_{ni})} $$
Ý nghĩa: Average precision over all relevant labels.
Higher is better (range [0,1]).
(c) Khi nào sử dụng Ranking Metrics
Phù hợp khi:
- Predictions are continuous scores
- Top-k recommendation
- Information retrieval style
- Ranking quality matters
IV.3.6. So sánh các Metrics
| Metric | Range | Lenient? | Set-based? | Use Case |
|---|---|---|---|---|
| Exact Match | [0,1] | Không | Có | Perfect match needed |
| Hamming Loss | [0,1] | Rất lenient | Không | Baseline, label-level |
| Jaccard | [0,1] | Moderate | Có | Balanced overlap |
| F1 | [0,1] | Moderate | Có | Standard choice |
| Coverage | [0,∞) | - | Không | Ranking quality |
| LRAP | [0,1] | - | Không | Top-k relevance |
IV.4. Xử lý Threshold trong Multilabel
IV.4.1. Vấn đề Threshold
Sigmoid outputs continuous probabilities $p_i \in [0,1]$. Cần convert sang binary decisions:
$$
\hat{y}_i = \begin{cases}
1, & \text{if } p_i \ge \tau \\
0, & \text{otherwise}
\end{cases}
$$
Default: $\tau = 0.5$
IV.4.2. Strategies
(a) Fixed Global Threshold
- Đơn giản nhất: $\tau = 0.5$ cho tất cả labels
- Vấn đề: không phù hợp khi labels có frequency khác nhau
(b) Per-Label Threshold
- Mỗi label có threshold riêng $\tau_i$
- Optimize trên validation set để maximize F1
- Tốt hơn nhưng phức tạp hơn
(c) Top-K Selection
- Chọn K labels có score cao nhất
- K có thể fixed hoặc adaptive
- Phù hợp cho recommendation
(d) Adaptive Threshold
- Threshold phụ thuộc vào distribution của scores
- Ví dụ: chọn labels có $p_i > \mu + \sigma$
- $\mu$: mean, $\sigma$: std của scores
IV.4.3. Optimization
Sử dụng validation set để tìm threshold tối ưu:
best_threshold = None
best_f1 = 0
for threshold in np.linspace(0.1, 0.9, 9):
predictions = (probabilities >= threshold).astype(int)
f1 = multilabel_f1(y_true, predictions)
if f1 > best_f1:
best_f1 = f1
best_threshold = threshold
IV.5. Tổng kết: Lựa chọn Loss và Metric cho Multilabel
IV.5.1. Bảng tóm tắt Loss Functions
| Loss | Complexity | Label Dependencies | Khi nào dùng |
|---|---|---|---|
| BCE per-label | O(K) | Không | Standard choice, most cases |
| Ranking Loss | O(K²) | Gián tiếp | Ranking important, small K |
| Focal Loss | O(K) | Không | Extreme imbalance |
IV.5.2. Bảng tóm tắt Metrics
| Metric | Strictness | Computation | Best For |
|---|---|---|---|
| Exact Match | Rất khắt khe | Fast | Perfect match required |
| Hamming Loss | Rất lenient | Fast | Baseline, label-level |
| Jaccard | Moderate | Fast | Balanced evaluation |
| F1 (sample) | Moderate | Fast | Standard choice |
| F1 (label-macro) | Moderate | Fast | Per-label analysis |
| Coverage/LRAP | - | Moderate | Ranking/Top-k |
IV.5.3. Decision Tree
Training:
├─ Standard case → BCE per-label (sigmoid)
├─ Ranking matters → Ranking Loss
└─ Extreme imbalance → Focal Loss
Evaluation:
├─ Perfect match needed? → Exact Match Ratio
├─ Want lenient baseline? → Hamming Accuracy
├─ Standard evaluation?
│ ├─ Sample-based → Multilabel F1 (sample-averaged)
│ └─ Per-label analysis → Macro-F1 over labels
├─ Ranking/Top-k? → Coverage, LRAP
└─ Computer vision? → Jaccard (IoU)
Threshold Selection:
├─ Simple baseline → 0.5
├─ Optimize F1 → Per-label thresholds on validation
└─ Recommendation → Top-K adaptive
IV.5.4. Practical Recommendations
Training:
1. Start with BCE per-label (sigmoid activation)
2. Use class weights if severe imbalance
3. Consider focal loss for extreme cases
Evaluation:
1. Always report multiple metrics
2. Primary: Multilabel F1 (sample-averaged)
3. Secondary: Hamming Accuracy, Jaccard
4. Strict: Exact Match (if applicable)
Thresholding:
1. Start with 0.5
2. Optimize on validation set per F1
3. Report results with optimized thresholds
V. KẾT LUẬN VÀ KHUYẾN NGHỊ
V.1. Tổng kết chung
Báo cáo đã trình bày một cách hệ thống các loss functions và evaluation metrics cho ba dạng bài toán classification phổ biến:
V.1.1. Binary Classification
- Loss: BCE là standard, Hinge cho SVM, Exponential cho boosting
- Metrics: Cần đa dạng metrics phụ thuộc vào imbalance và cost của errors
- Key insight: Accuracy không đủ với imbalanced data
V.1.2. Multiclass Classification
- Loss: Cross-Entropy (sparse variant cho large K), Label Smoothing cho modern deep learning
- Metrics: Macro/Weighted/Micro averaging, phụ thuộc vào distribution và importance của classes
- Key insight: Phải chọn averaging strategy phù hợp với data distribution
V.1.3. Multilabel Classification
- Loss: BCE per-label là standard, Ranking loss khi cần ordering
- Metrics: F1 sample-averaged, Jaccard, Hamming
- Key insight: Không dùng Softmax, phải handle threshold selection
V.2. Nguyên tắc chọn Loss và Metric
V.2.1. Nguyên tắc chọn Loss
- Loss phải khả vi cho gradient-based optimization
- Phù hợp với output distribution:
- Binary: Sigmoid + BCE
- Multiclass: Softmax + CCE
- Multilabel: Sigmoid + BCE per-label - Xem xét class imbalance: weighted loss, focal loss
- Label smoothing cho large models để tránh overconfidence
V.2.2. Nguyên tắc chọn Metric
- Phụ thuộc vào cost của errors:
- FN > FP → Recall, F2
- FP > FN → Precision, F0.5
- Balanced → F1 - Phụ thuộc vào data distribution:
- Balanced → Accuracy, F1
- Imbalanced → Macro-F1, Balanced Accuracy, PR-AUC - Threshold dependency:
- Need threshold-free → ROC-AUC (binary), Coverage (multilabel)
- Can tune threshold → F1, Precision@K - Always report multiple metrics để có cái nhìn toàn diện
V.3. Best Practices
V.3.1. Training Phase
# Binary/Multiclass
loss = CrossEntropyLoss(weight=class_weights) # Handle imbalance
# Multilabel
loss = BCEWithLogitsLoss(pos_weight=pos_weights)
# Modern deep learning
loss = CrossEntropyLoss(label_smoothing=0.1)
V.3.2. Evaluation Phase
# Always report comprehensive metrics
metrics = {
'accuracy': accuracy_score(y_true, y_pred),
'f1_macro': f1_score(y_true, y_pred, average='macro'),
'f1_weighted': f1_score(y_true, y_pred, average='weighted'),
'balanced_acc': balanced_accuracy_score(y_true, y_pred),
}
# For imbalanced: add ROC-AUC or PR-AUC
if is_imbalanced:
metrics['roc_auc'] = roc_auc_score(y_true, y_prob)
metrics['pr_auc'] = average_precision_score(y_true, y_prob)
V.3.3. Reporting Standards
Khi báo cáo kết quả, nên bao gồm:
- Primary metric: F1 (macro hoặc weighted tùy context)
- Baseline comparison: So với random/majority baseline
- Per-class breakdown: Đặc biệt với imbalanced data
- Confusion matrix: Visualization để hiểu patterns
- Confidence intervals: Khi có thể (bootstrap, cross-validation)
V.4. Common Pitfalls và Cách Tránh
V.4.1. Pitfall 1: Chỉ dùng Accuracy
Vấn đề: Misleading với imbalanced data
Giải pháp:
- Always check class distribution
- Report F1, Balanced Accuracy
- Use weighted metrics
V.4.2. Pitfall 2: Dùng Softmax cho Multilabel
Vấn đề: Fundamentally wrong - forces mutually exclusive
Giải pháp:
- Use Sigmoid activation
- BCE per-label loss
V.4.3. Pitfall 3: Optimize sai Metric
Vấn đề: Train with one metric, evaluate with another incompatible metric
Giải pháp:
- Understand loss vs metric difference
- Use appropriate surrogate loss
- Validate on target metric
V.4.4. Pitfall 4: Forget Threshold Tuning
Vấn đề: Default 0.5 không optimal cho imbalanced data
Giải pháp:
- Tune threshold on validation set
- Use ROC/PR curves
- Report metrics với optimized threshold
V.5. Future Directions
V.5.1. Emerging Topics
- Calibration: Confidence calibration ngày càng quan trọng
- Label noise: Robust losses cho noisy labels
- Few-shot learning: Metrics cho low-data regimes
- Fairness metrics: Đánh giá bias và fairness
- Uncertainty quantification: Beyond point predictions
V.5.2. Advanced Techniques
- Contrastive learning: New loss paradigms
- Self-supervised pretraining: Transfer learning metrics
- Neural architecture search: AutoML for loss/metric
- Multi-task learning: Joint optimization
V.6. Tài liệu tham khảo
V.6.1. Frameworks Documentation
- PyTorch:
torch.nnloss functions - TensorFlow/Keras:
tf.keras.losses - Scikit-learn:
sklearn.metrics
V.6.2. Key Papers
- Focal Loss: Lin et al. "Focal Loss for Dense Object Detection" (2017)
- Label Smoothing: Szegedy et al. "Rethinking the Inception Architecture" (2016)
- Class Imbalance: He & Garcia "Learning from Imbalanced Data" (2009)
PHỤ LỤC
A. Bảng Cheat Sheet Tổng Hợp
A.1. Quick Reference - Loss Functions
| Task | Loss | Formula | Framework |
|---|---|---|---|
| Binary | BCE | $-[y\log p + (1-y)\log(1-p)]$ | BCEWithLogitsLoss() |
| Binary (SVM) | Hinge | $\max(0, 1-yf(x))$ | Custom |
| Multiclass | CCE | $-\log p_y$ | CrossEntropyLoss() |
| Multiclass (large K) | Sparse CCE | $-\log p_y$ | CrossEntropyLoss() |
| Multilabel | BCE per-label | $-\sum[y_i\log p_i + ...]$ | BCEWithLogitsLoss() |
A.2. Quick Reference - Metrics
| Context | Primary Metric | Secondary Metrics |
|---|---|---|
| Binary - Balanced | Accuracy, F1 | Precision, Recall |
| Binary - Imbalanced | F1, PR-AUC | Balanced Acc, MCC |
| Binary - Cost-sensitive | F-beta | Precision/Recall |
| Multiclass - Balanced | Accuracy | Macro-F1 |
| Multiclass - Imbalanced | Macro-F1 | Balanced Acc, Weighted-F1 |
| Multilabel | F1 (sample) | Jaccard, Hamming |
B. Code Examples
B.1. PyTorch Loss Examples
import torch.nn as nn
# Binary
bce_loss = nn.BCEWithLogitsLoss()
# Binary with class weights
pos_weight = torch.tensor([2.0]) # Positive class weight
bce_weighted = nn.BCEWithLogitsLoss(pos_weight=pos_weight)
# Multiclass
ce_loss = nn.CrossEntropyLoss()
# Multiclass with label smoothing
ce_smooth = nn.CrossEntropyLoss(label_smoothing=0.1)
# Multiclass with class weights
weights = torch.tensor([1.0, 2.0, 3.0])
ce_weighted = nn.CrossEntropyLoss(weight=weights)
# Multilabel
bce_multilabel = nn.BCEWithLogitsLoss()
B.2. Sklearn Metrics Examples
from sklearn.metrics import *
# Binary classification
accuracy = accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
roc_auc = roc_auc_score(y_true, y_prob)
# Multiclass
f1_macro = f1_score(y_true, y_pred, average='macro')
f1_weighted = f1_score(y_true, y_pred, average='weighted')
balanced_acc = balanced_accuracy_score(y_true, y_pred)
# Multilabel
hamming = hamming_loss(y_true, y_pred)
jaccard = jaccard_score(y_true, y_pred, average='samples')
f1_samples = f1_score(y_true, y_pred, average='samples')
Chưa có bình luận nào. Hãy là người đầu tiên!