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ánphâ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 functionmetric 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

  1. Không khả vi: Có bước nhảy tại biên quyết định (decision boundary), gradient không xác định
  2. 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
  3. 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:

  1. Mô hình phải tạo ra phân phối xác suất trên nhiều lớp
  2. 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?

  1. No sum constraint: $\sum p_i$ không bị ép = 1
  2. Independent modeling: Mỗi label có xác suất riêng
  3. Can activate multiple: Nhiều $p_i$ có thể > 0.5 đồng thời
  4. 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-basedlabel-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 Perfect match needed
Hamming Loss [0,1] Rất lenient Không Baseline, label-level
Jaccard [0,1] Moderate Balanced overlap
F1 [0,1] Moderate 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 functionsevaluation 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

  1. Loss phải khả vi cho gradient-based optimization
  2. Phù hợp với output distribution:
    - Binary: Sigmoid + BCE
    - Multiclass: Softmax + CCE
    - Multilabel: Sigmoid + BCE per-label
  3. Xem xét class imbalance: weighted loss, focal loss
  4. Label smoothing cho large models để tránh overconfidence

V.2.2. Nguyên tắc chọn Metric

  1. Phụ thuộc vào cost của errors:
    - FN > FP → Recall, F2
    - FP > FN → Precision, F0.5
    - Balanced → F1
  2. Phụ thuộc vào data distribution:
    - Balanced → Accuracy, F1
    - Imbalanced → Macro-F1, Balanced Accuracy, PR-AUC
  3. Threshold dependency:
    - Need threshold-free → ROC-AUC (binary), Coverage (multilabel)
    - Can tune threshold → F1, Precision@K
  4. 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:

  1. Primary metric: F1 (macro hoặc weighted tùy context)
  2. Baseline comparison: So với random/majority baseline
  3. Per-class breakdown: Đặc biệt với imbalanced data
  4. Confusion matrix: Visualization để hiểu patterns
  5. 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

  1. Calibration: Confidence calibration ngày càng quan trọng
  2. Label noise: Robust losses cho noisy labels
  3. Few-shot learning: Metrics cho low-data regimes
  4. Fairness metrics: Đánh giá bias và fairness
  5. 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.nn loss functions
  • TensorFlow/Keras: tf.keras.losses
  • Scikit-learn: sklearn.metrics

V.6.2. Key Papers

  1. Focal Loss: Lin et al. "Focal Loss for Dense Object Detection" (2017)
  2. Label Smoothing: Szegedy et al. "Rethinking the Inception Architecture" (2016)
  3. 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')