Session 04🔀

Hồi Quy Logistic

Phân loại nhị phân & đa lớp: sigmoid, ngưỡng quyết định, cross-entropy, Softmax, và đầy đủ độ đo đánh giá phân loại.


Learning Objectives

  • Hiểu vì sao cần Logistic thay vì Linear cho phân loại
  • Nắm hàm sigmoid, ngưỡng quyết định và cross-entropy
  • Phân loại đa lớp với Softmax và One-vs-Rest
  • Đánh giá bằng confusion matrix, ROC-AUC và PR curve
  • Xử lý mất cân bằng lớp (class imbalance)

Từ Hồi Quy Tuyến Tính Đến Logistic

Hồi quy tuyến tính dùng trực tiếp cho phân loại thất bại: đầu ra ŷ có thể vượt ra ngoài [0,1] và không có ý nghĩa xác suất, đồng thời rất nhạy với outlier. Hồi quy Logistic giải quyết bằng cách đưa đầu ra tuyến tính z = wᵀx + b qua hàm sigmoid, nén về khoảng (0,1) để diễn giải thành xác suất P(y=1|x).

Hàm Sigmoid & Ngưỡng Quyết Định

σ(z) = 1/(1 + e⁻ᶻ) có dạng chữ S: khi z → +∞, σ → 1; khi z → −∞, σ → 0; tại z = 0, σ = 0.5. Ngưỡng quyết định (decision threshold) mặc định là 0.5: nếu σ(z) ≥ 0.5 → dự đoán lớp 1, ngược lại lớp 0. Có thể điều chỉnh ngưỡng để đánh đổi giữa precision và recall tùy bài toán (ví dụ hạ ngưỡng để bắt được nhiều ca dương hơn).

Hàm Mất Mát — Binary Cross-Entropy

MSE không phù hợp cho Logistic vì kết hợp với sigmoid tạo bề mặt tối ưu không lồi (nhiều cực tiểu cục bộ). Thay vào đó dùng Binary Cross-Entropy (Log Loss): J = −(1/m)·Σ[yᵢ·log(ŷᵢ) + (1−yᵢ)·log(1−ŷᵢ)]. Hàm này lồi, có nguồn gốc từ Maximum Likelihood Estimation, và phạt cực nặng khi mô hình dự đoán tự tin nhưng sai (ví dụ dự đoán 0.01 khi nhãn thật là 1). Trọng số vẫn được cập nhật bằng Gradient Descent.

Phân Loại Đa Lớp: Softmax & One-vs-Rest

Với K lớp, Softmax (Hồi quy Logistic đa thức) thay sigmoid: σ(zᵢ) = eᶻⁱ/Σeᶻʲ — biến đầu ra thành phân phối xác suất trên tất cả lớp, tổng = 1, và chọn lớp có xác suất cao nhất. Cách khác là One-vs-Rest (OvR): huấn luyện K bộ phân loại nhị phân, mỗi bộ tách một lớp khỏi phần còn lại. Softmax thường tốt hơn khi các lớp loại trừ lẫn nhau; OvR linh hoạt và đơn giản để mở rộng từ bộ phân loại nhị phân có sẵn.

Đánh Giá Mô Hình Phân Loại

Ngoài Confusion Matrix, Accuracy, Precision, Recall và F1 (đã học ở bài 2), cần thêm: đường cong ROC vẽ TPR theo FPR ở mọi ngưỡng, với AUC đo khả năng phân biệt lớp; đường cong Precision-Recall (PR) hữu ích hơn ROC khi dữ liệu mất cân bằng nặng. Class Imbalance (mất cân bằng lớp) làm accuracy đánh lừa — xử lý bằng: điều chỉnh ngưỡng, resampling (oversampling/undersampling, SMOTE), hoặc dùng class_weight để phạt nặng lỗi trên lớp thiểu số.

Logistic Regression & báo cáo phân loạiPython
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, roc_auc_score

# class_weight='balanced' để xử lý mất cân bằng lớp
model = LogisticRegression(class_weight='balanced').fit(X_train, y_train)
y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)[:, 1]

print(classification_report(y_test, y_pred))
print("AUC:", roc_auc_score(y_test, y_proba))