Series: Machine Learning Fundamentals – Bài 25
Ở các bài trước, chúng ta đã tìm hiểu qua hàng loạt thuật toán Gradient Boosting mạnh mẽ từ XGBoost, LightGBM đến CatBoost. Các thuật toán này đều dựa trên cấu trúc Decision Tree để giải quyết cả bài toán Regression và Classification.
Tuy nhiên, trước khi tiến đến các mô hình cây phức tạp hay Neural Network, mọi Data Scientist đều bắt đầu bài toán phân loại (Classification) với một nền tảng kinh điển: Logistic Regression.
Mặc dù có từ “Regression” trong tên gọi, đây lại là một thuật toán dùng để giải quyết các bài toán Phân loại (Classification).
Logistic Regression là gì?
Logistic Regression (Hồi quy Logistic) là một thuật toán học có giám sát (Supervised Learning) dùng để dự đoán xác suất một quan sát thuộc về một lớp (Class) nhất định.
Input Features (X)
↓
Tuyển tuyến (Linear Equation): z = w*X + b
↓
Hàm Sigmoid: P = σ(z)
↓
Xác suất đầu ra: P ∈ [0, 1]
↓
Threshold (0.5) → Class 0 hoặc Class 1
Nếu như Linear Regression dự đoán một giá trị liên tục (như giá nhà, nhiệt độ) trong khoảng $(-\infty, +\infty)$, thì Logistic Regression sẽ giới hạn đầu ra trong khoảng $[0, 1]$ để đại diện cho Xác suất.
Ví dụ thực tế:
-
Email: Spam (1) hay Không Spam (0)?
-
Y tế: Bệnh nhân mắc bệnh (1) hay Khỏe mạnh (0)?
-
Tài chính: Giao dịch gian lận (1) hay Hợp lệ (0)?
Vì sao không dùng Linear Regression cho bài toán Phân loại?
Giả sử bạn dùng Linear Regression để phân loại Email Spam (1) và Không Spam (0):
-
Đầu ra không bị giới hạn: Giá trị dự đoán có thể là $-2.5$ hoặc $1.8$. Điều này không thể biểu diễn dưới dạng xác suất.
-
Nhạy cảm với Outlier: Chỉ cần xuất hiện một vài dữ liệu ngoại lệ, đường hồi quy tuyến tính sẽ bị lệch hoàn toàn, làm thay đổi vị trí ranh giới phân loại.
Hàm Sigmoid trong Logistic Regression
Để biến mọi giá trị $z$ từ $(-\infty, +\infty)$ thành một xác suất nằm trong $[0, 1]$, Logistic Regression sử dụng Hàm Sigmoid (hay hàm Logistic):
Trong đó:
-
$z = w_1 x_1 + w_2 x_2 + … + w_n x_n + b$ (phương trình tuyến tính chuẩn).
-
$e$ là cơ số Euler ($\approx 2.718$).
σ(z)
1 ──────┬───────
│ *
│ *
0.5 * (z = 0)
│ *
* │
──────────────┴───────0──────── z
-
Khi $z \to +\infty \implies \sigma(z) \to 1$
-
Khi $z \to -\infty \implies \sigma(z) \to 0$
-
Khi $z = 0 \implies \sigma(z) = 0.5$
Quyết định phân loại (Decision Boundary)
Sau khi tính được xác suất $P = \sigma(z)$, mô hình sẽ áp dụng một ngưỡng (Threshold), thông thường là 0.5:
-
Nếu $P \ge 0.5 \implies \text{Dự đoán Class 1}$
-
Nếu $P < 0.5 \implies \text{Dự đoán Class 0}$
Ranh giới phân chia giữa hai Class được gọi là Decision Boundary (Ranh giới quyết định). Trong trường hợp cơ bản, ranh giới này là một đường thẳng hoặc một siêu phẳng tuyến tính.
Hàm mất mát Binary Cross-Entropy (Log Loss)
Trong Linear Regression, chúng ta dùng Mean Squared Error (MSE). Nhưng nếu áp dụng MSE vào Logistic Regression, hàm Loss sẽ có nhiều cực trị địa phương (Non-convex), khiến thuật toán Gradient Descent không thể tìm được điểm tối ưu toàn cục.
Thay vào đó, Logistic Regression sử dụng hàm Binary Cross-Entropy (Log Loss):
Trong đó:
-
$y^{(i)}$ là nhãn thực tế ($0$ hoặc $1$).
-
$\hat{y}^{(i)}$ là xác suất dự đoán từ hàm Sigmoid.
Ý tưởng chính: Nếu dự đoán sai với độ tin cậy cao (ví dụ: $y=1$ nhưng dự đoán $\hat{y}=0.01$), hàm Loss sẽ phạt cực kỳ nặng.
Ưu điểm và Nhược điểm của Logistic Regression
Ưu điểm
-
Dễ giải thích (Interpretable): Các hệ số $w$ phản ánh trực tiếp mức độ ảnh hưởng của từng Feature lên kết quả dự đoán (thông qua Odds Ratio).
-
Tốc độ cực nhanh: Chi phí tính toán thấp, huấn luyện và dự đoán rất nhanh.
-
Cho đầu ra dạng xác suất: Giúp dễ dàng điều chỉnh Decision Threshold tùy theo bài toán kinh doanh.
-
Ít bị Overfitting: Đặc biệt khi kích thước dữ liệu nhỏ và kết hợp với Regularization ($L_1$ hoặc $L_2$).
Nhược điểm
-
Chỉ học được quan hệ tuyến tính: Không thể phân loại dữ liệu có Ranh giới phân chia phức tạp (Phi tuyến tính) nếu không biến đổi Feature.
-
Nhạy cảm với Multicollinearity: Đa cộng tuyến giữa các Feature có thể làm sai lệch hệ số của mô hình.
-
Cần tiền xử lý dữ liệu: Nhạy cảm với Outliers và các Feature có vạch quy mô (Scale) quá chênh lệch.
Dữ liệu có cần Feature Scaling không?
Có. Khác với các thuật toán dựa trên cây (Decision Tree, XGBoost), Logistic Regression tối ưu hóa bằng Gradient Descent.
Nếu các Feature có tỉ lệ quá chênh lệch (ví dụ: Tuổi từ 18–60, Thu nhập từ 5,000,000–100,000,000), Gradient Descent sẽ hội tụ rất chậm hoặc không ổn định. Việc áp dụng StandardScaler hoặc MinMaxScaler là bước tiền xử lý bắt buộc.
Khi nào nên dùng Logistic Regression?
Logistic Regression là lựa chọn tuyệt vời khi:
-
Cần một mô hình Baseline đơn giản trước khi thử các mô hình phức tạp.
-
Bài toán yêu cầu tính giải thích cao (ví dụ: Ngành Y tế, Tín dụng Ngân hàng).
-
Dữ liệu có mối quan hệ dạng tuyến tính rõ ràng.
-
Cần triển khai mô hình lên các thiết bị phần cứng hạn chế tài nguyên.
Tóm tắt
-
Logistic Regression là thuật toán phân loại tuyến tính dựa trên xác suất.
-
Hàm Sigmoid nén mọi giá trị đầu ra về khoảng $[0, 1]$.
-
Log Loss được sử dụng làm hàm mất mát để tối ưu hóa bằng Gradient Descent.
-
Đây là mô hình Baseline không thể thiếu trong bất kỳ Pipeline Machine Learning nào.
Tài liệu tham khảo
-
Scikit-Learn Documentation: Logistic Regression in Scikit-Learn
-
Andrew Ng – Machine Learning Course: Lecture notes on Logistic Regression and Log Loss.
Khóa học tại MCNA Technology School
Nếu bạn muốn thực hành Machine Learning, Python và xây dựng các mô hình trên dữ liệu thực tế, có thể tham khảo:
-
🤖 Combo 5 khóa AI & Power BI: Xem khóa học AI & Power BI
-
🐍 Combo Python: Xem Combo Python
Tác giả: Bùi Đình Tuyển – Data Analyst tại MCNA Technology School
📞 Hotline: 0939.866.825 (Mr. Minh Khang)
🌐 Website: MCNA Technology School
📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông
📍 TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

