Nhóm 1

Hồi quy — Regression

Hồi quy là nhóm thuật toán học có giám sát dùng để dự đoán một giá trị liên tục (số thực) — ví dụ giá nhà, doanh thu, nhiệt độ. Mô hình học mối quan hệ giữa các đặc trưng đầu vào và biến mục tiêu, rồi suy ra giá trị cho dữ liệu mới. Trang này đi qua ba thuật toán nền tảng: Linear Regression, Logistic Regression (thực chất là phân loại) và Stepwise Regression.

1. Linear Regression
Hồi quy tuyến tính — dự đoán giá trị liên tục

Mô hình giả định biến mục tiêu là tổ hợp tuyến tính của các đặc trưng. Với một mẫu có các đặc trưng \(x_1, x_2, \dots, x_n\):

$$\hat y=\theta_0+\theta_1 x_1+\theta_2 x_2+\dots+\theta_n x_n = X\theta$$

Trong đó \(\theta_0\) là hệ số chặn (bias), \(\theta_1\dots\theta_n\) là các trọng số, và \(X\) là ma trận đặc trưng đã thêm cột \(1\) để gộp \(\theta_0\) vào vector tham số \(\theta\). Mục tiêu là tìm \(\theta\) sao cho dự đoán \(\hat y\) sát với giá trị thực \(y\) nhất.

Hàm mất mát — MSE

Sai số được đo bằng trung bình bình phương sai số (Mean Squared Error). Với \(m\) mẫu:

\[J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}\left(\hat y_i-y_i\right)^2\]

Hệ số \(\tfrac{1}{2}\) chỉ để đạo hàm gọn hơn (triệt tiêu số 2 khi lấy gradient), không ảnh hưởng vị trí cực tiểu. Vì \(J(\theta)\) là hàm lồi theo \(\theta\) nên có duy nhất một cực tiểu toàn cục.

Cách giải (i): Normal Equation (nghiệm đóng)

Cho đạo hàm của \(J(\theta)\) bằng \(0\) và giải trực tiếp, ta được công thức nghiệm chính xác:

$$\theta=(X^\top X)^{-1}X^\top y$$

Ưu điểm: không cần chọn learning rate, không lặp, ra nghiệm chính xác trong một bước. Tuy nhiên không phải lúc nào cũng dùng được:

Cách giải (ii): Gradient Descent

Thay vì giải trực tiếp, ta cập nhật \(\theta\) từng bước theo hướng giảm dần của hàm mất mát. Phù hợp khi dữ liệu lớn hoặc khi \(X^\top X\) khó nghịch đảo. Chi tiết cơ chế xem trang Gradient Descent.

Giả định của mô hình

Đánh giá mô hình

2. Logistic Regression
Tên là "hồi quy" nhưng thực chất là PHÂN LOẠI nhị phân
Lưu ý quan trọng: dù mang chữ "regression", Logistic Regression dùng để phân loại (output là xác suất / nhãn lớp), không dự đoán giá trị liên tục. Nó được xếp ở đây vì cùng họ mô hình tuyến tính và có nhiều điểm chung với Linear Regression.

Ý tưởng: lấy tổ hợp tuyến tính \(z=X\theta\) rồi ép về khoảng \((0,1)\) bằng hàm sigmoid để diễn giải thành xác suất:

\[\sigma(z)=\frac{1}{1+e^{-z}},\qquad z=X\theta\]

Xác suất mẫu thuộc lớp dương:

\[P(y=1\mid x)=\sigma(X\theta)=\frac{1}{1+e^{-X\theta}}\]

Hàm mất mát — Cross-Entropy (Log Loss)

Không dùng MSE (sẽ thành hàm không lồi với sigmoid), thay vào đó dùng cross-entropy. Ký hiệu \(\hat p_i=\sigma(X_i\theta)\):

$$J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}\Big[y_i\log\hat p_i+(1-y_i)\log(1-\hat p_i)\Big]$$

Hàm này lồi nên gradient descent hội tụ về cực tiểu toàn cục. Trực giác: khi mẫu thuộc lớp \(1\) mà mô hình dự đoán \(\hat p\) thấp thì \(-\log\hat p\) rất lớn — phạt nặng dự đoán tự tin nhưng sai.

Gradient — dạng đẹp giống Linear

Điều thú vị là gradient của cross-entropy có đúng dạng như của Linear Regression:

\[\nabla_\theta J=\frac{1}{m}X^\top(\hat p-y)\]

Khác biệt duy nhất nằm ở chỗ \(\hat p=\sigma(X\theta)\) thay vì \(\hat y=X\theta\). Không có nghiệm đóng (vì sigmoid phi tuyến) nên bắt buộc giải bằng gradient descent hoặc các biến thể (LBFGS, Newton).

Ranh giới quyết định

Dự đoán nhãn bằng ngưỡng: nếu \(\hat p \ge 0.5\) thì gán lớp \(1\), ngược lại lớp \(0\). Vì \(\sigma(z)=0.5\) khi \(z=0\), ranh giới quyết định là \(X\theta=0\) — một siêu phẳng tuyến tính. Có thể chỉnh ngưỡng (khác 0.5) để cân bằng precision/recall tùy bài toán.

3. Stepwise Regression
Chọn biến (feature selection) tự động

Stepwise Regression không phải một mô hình mới mà là quy trình chọn tập đặc trưng cho mô hình hồi quy: thêm/bớt biến từng bước theo một tiêu chí thống kê, nhằm tìm mô hình gọn mà vẫn giải thích tốt.

Ba chiến lược

Tiêu chí thêm / bớt biến

Ưu điểmNhược điểm
Giảm overfitting, mô hình gọn và dễ diễn giải; tự động loại biến thừa. Tham lam (greedy) — chọn tối ưu cục bộ từng bước, không đảm bảo tối ưu toàn cục; kết quả bất ổn (đổi chút dữ liệu là đổi tập biến); việc lặp lại kiểm định làm sai lệch p-value.
So với regularization: ngày nay người ta thường ưu tiên regularization (Lasso/Ridge) thay cho stepwise. Lasso (L1) tự co hệ số các biến yếu về \(0\) một cách mượt và ổn định hơn, đồng thời tránh được vấn đề p-value bị lệch của stepwise.
So sánh ba thuật toán
Loại bài toán · đầu ra · cách huấn luyện
Thuật toánLoại bài toánĐầu raCách huấn luyện
Linear Regression Hồi quy (giá trị liên tục) Số thực \(\hat y\) Normal Equation hoặc Gradient Descent (MSE)
Logistic Regression Phân loại nhị phân Xác suất \(\hat p\in(0,1)\) → nhãn lớp Gradient Descent (Cross-Entropy) — không có nghiệm đóng
Stepwise Regression Chọn biến cho mô hình hồi quy Tập đặc trưng + mô hình tuyến tính Thêm/bớt biến theo p-value, AIC, BIC, adjusted \(R^2\)
Ví dụ với scikit-learn
Vài dòng là chạy
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2)

# --- Hồi quy: dự đoán giá trị liên tục ---
reg = LinearRegression()
reg.fit(X_tr, y_tr)
print("R^2:", reg.score(X_te, y_te))   # R^2 trên tập test

# --- Phân loại: Logistic Regression ---
scaler = StandardScaler().fit(X_tr)        # chuẩn hóa trước
clf = LogisticRegression(max_iter=1000)
clf.fit(scaler.transform(X_tr), y_tr)
proba = clf.predict_proba(scaler.transform(X_te))[:, 1]  # P(y=1)
Luôn chuẩn hóa đặc trưng (StandardScaler / MinMax) trước khi dùng Gradient Descent hay Logistic Regression: khi các đặc trưng khác thang đo, GD hội tụ chậm và lắc lư; chuẩn hóa giúp hội tụ nhanh và ổn định hơn nhiều. (Normal Equation thì không bắt buộc.)
← Quay lại
Gradient Descent