Hồi quy logistic (logistic regression) là một thuật toán cơ bản trong Machine Learning và thống kê, dùng để dự đoán xác suất xảy ra một trong hai kết quả như “đúng/sai”, “có disease/không disease”, “pass/fail”… nếu bạn đã học phân tích dữ liệu y tế hoặc xử lý biến số nhị phân, chắc chắn sẽ thấy mô hình này rất hữu ích. Khác với hồi quy tuyến tính (linear regression) được dùng để dự đoán giá trị liên tục, hồi quy logistic giúp ta phân lớp nhị phân và hiểu được “mức độ tin cậy” của phần dự đoán thông qua xác suất.
Bài viết này sẽ đưa bạn từ con số 0 về kiến thức toán học, giải thích trực quan về các khái niệm như hàm sigmoid, log-odds, xác suất, cách training bằng phương pháp Maximum Likelihood Estimation (MLE), đến cách cài đặt một mô hình logistic regression bằng Python với các ví dụ cụ thể, phần code, biểu đồ và phân tích lỗi để bạn dễ nắm bắt.
Hồi quy logistic là gì?
Hồi quy logistic là mô hình dùng để dự đoán xác suất của một biến mục tiêu nhị phân (binary), chuyển từ công thức tuyến tính thành xác suất nằm trong [0,1] nhờ hàm logistic (sigmoid):
![]()
Trong đó:
![]()
Hàm sigmoid giúp chúng ta có thể chuyển kết quả tuyến tính thành xác suất hợp lệ, phù hợp cho bài toán phân lớp như “mắc bệnh hay không”, “có mua hàng hay không”.
Ví dụ trong y tế: biến mục tiêu là “có bệnh (1) / không bệnh (0)”. Các biến đầu vào có thể là tuổi, huyết áp, chỉ số cholesterol… Mô hình logistic sẽ ước lượng xác suất một người mắc bệnh dựa trên các chỉ số này.
Tại sao không dùng linear regression?
Nếu dùng hồi quy tuyến tính để dự đoán xác suất, mô hình có thể cho ra kết quả <0 hoặc >1, là điều vô nghĩa vì xác suất phải nằm trong khoảng [0,1]. Do vậy, chỉ cần dùng hàm sigmoid để biến đầu ra thành xác suất, ta đã có một giải pháp phù hợp.
Ngoài ra, hồi quy logistic áp dụng phương pháp tối ưu Maximum Likelihood Estimation (MLE), cho phép tìm tập tham số β sao cho xác suất dự đoán đúng dữ liệu thật là lớn nhất thay vì phân tích sai số như hồi quy tuyến tính.
Cách thức hoạt động
- Tính z: tổng có trọng số của các biến đầu vào.
- Đưa qua hàm sigmoid để ra xác suất.
- Quy ngưỡng (ví dụ 0.5) để phân lớp: nếu >0.5 → dự đoán 1, ngược lại là 0.
- Tối ưu tham số bằng MLE — tìm bộ β tối đa hóa xác suất dự đoán đúng nhãn.
Một ví dụ cụ thể
Giả sử bạn muốn dự đoán khả năng 1 bệnh nhân bị bệnh tim (1) dựa trên tuổi và huyết áp. Mô hình xác suất:
![]()
Sau khi huấn luyện, bạn sẽ được giá trị β0,β1,β2 sao cho tổng likelihood là tối đa. Khi muốn dự đoán, chỉ cần thay số liệu mới vào công thức và dùng sigmoid để cho kết quả.
Cài đặt logistic regression bằng Python
Chuẩn bị
Trước khi bắt đầu xây dựng mô hình hồi quy logistic, chúng ta cần chuẩn bị môi trường lập trình và các thư viện cần thiết. Vì Logistic Regression là một trong những thuật toán cơ bản nhất, bạn có thể chạy trên bất kỳ máy tính nào mà không cần GPU. Python là lựa chọn lý tưởng nhờ sự hỗ trợ mạnh mẽ từ các thư viện như scikit-learn, numpy và matplotlib.
Trong bài này, chúng ta sẽ sử dụng scikit-learn để xây dựng mô hình, numpy để xử lý dữ liệu số, và matplotlib để trực quan hóa dữ liệu. Ngoài ra, seaborn sẽ giúp tạo ra các biểu đồ đẹp và dễ hiểu hơn. Hãy đảm bảo rằng các thư viện này đã được cài đặt trong môi trường Python của bạn.
import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LogisticRegression from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
Tạo bộ dữ liệu mẫu
Để minh họa hồi quy logistic, chúng ta sẽ tạo một bộ dữ liệu giả lập. Bộ dữ liệu này sẽ bao gồm hai đặc trưng (features) và một nhãn nhị phân (target) có giá trị 0 hoặc 1. Điều này giúp mô hình học cách phân biệt giữa hai nhóm điểm dựa trên các đặc trưng đầu vào.
make_classification từ scikit-learn là một hàm tiện lợi để tạo các bộ dữ liệu phân loại nhân tạo. Với hai đặc trưng, chúng ta có thể trực quan hóa dữ liệu trên một mặt phẳng 2D để dễ hình dung cách hồi quy logistic phân lớp. Các tham số như flip_y được dùng để tạo một chút nhiễu trong dữ liệu, phản ánh sự không hoàn hảo của dữ liệu thực tế.

