Hồi quy tuyến tính, bội và logistic
Nhánh hồi quy: thử thách regressors, hồi quy đơn và bội, đánh giá regressors, cây hồi quy, boosting hồi quy và dự báo thời tiết.
Trung bìnhThuật toán ~60 phút
Ôn lại trước khi học
Giới thiệu
Bài này học hồi quy đoán số liên tục như giá nhà. Nhánh này giúp dự báo thời tiết từ dữ liệu cũ.
Kiến thức cần nhớ
Hồi quy đơn
- Vẽ đường thẳng sao cho tổng bình phương lỗi nhỏ nhất.
- Hệ số góc là mỗi đơn vị đặc trưng đổi bao nhiêu mục tiêu.
- Có công thức đóng nên tính ngay không cần lặp.
- Ví dụ đời thường: càng học thêm 1 giờ thì điểm tăng 0.5.
Đánh giá và hồi quy bội
- MSE phạt nặng lỗi lớn, MAE lì hơn với ngoại lệ.
- R2 cho biết giải thích được bao nhiêu phần trăm biến thiên.
- Hồi quy bội là siêu phẳng nhiều đặc trưng cùng lúc.
- Ví dụ đời thường: giá nhà theo cả diện tích và quận.
Cây và boosting hồi quy
- Cây hồi quy: lá là trung bình vùng, bắt quan hệ cong.
- Boosting: nhiều cây nông sửa lỗi cho nhau, điểm cao nhất.
- Tuyến tính thắng giải thích, boosting thắng điểm số.
- Ví dụ đời thường: đường thẳng kể chuyện, rừng cây vắt kiệt điểm.
| Thước đo | Ý nghĩa | Nhạy ngoại lệ |
|---|---|---|
| MSE | Trung bình bình phương lỗi | Rất nhạy |
| MAE | Trung bình trị tuyệt đối | Lì hơn |
| R2 | % biến thiên giải thích | 1 là hoàn hảo |
Ví dụ
- Input: điểm nằm đúng trên đường thẳng -> Output: sai số quanh 0.
- Câu này cho thấy đường thẳng khôi phục hoàn hảo.
- Input: mô hình chỉ đoán trung bình -> Output: R2 bằng 0.
- Câu này kiểm tra biên dở nhất của R2.
💻 Bài tập
Ngôn ngữ: Python 3 với NumPy. Không dùng sklearn.linear_model trừ khi đối chiếu. Nộp vào day-055/.
Bài 1: Hồi quy tuyến tính công thức đóng
class LinearRegression:
def fit(self, X, y): ... # thêm cột 1 cho hệ số chặn, giải bằng np.linalg.lstsq
def predict(self, X): ...
coef_: np.ndarray; intercept_: float
def mse(y, yhat); def mae(y, yhat); def r2(y, yhat)
X = [[1],[2],[3]], y = [2,4,6] -> coef 2, intercept 0, r2 = 1
Mô hình luôn đoán mean(y) -> r2 = 0
Thêm 1 ngoại lệ lớn -> MSE tăng mạnh hơn MAE (in số)
Bài 2: Hồi quy bội và diễn giải
Dùng bộ California Housing.
- Chuẩn hóa đặc trưng (scaler ngày 52, fit trên train).
- In hệ số từng đặc trưng, sắp theo trị tuyệt đối. Viết 3 câu diễn giải 3 hệ số lớn nhất.
- Thêm
Ridge(alpha): , không phạt hệ số chặn. Vẽ hệ số theoalphatừ1e-3tới1e3. - In R2 test của Linear và Ridge tốt nhất.
Bài 3: Logistic regression (nâng cao)
class LogisticRegression:
def __init__(self, lr=0.1, epochs=1000, l2=0.0): ...
def fit(self, X, y): ... # gradient descent trên log-loss, vector hóa
def predict_proba(self, X): ...
def predict(self, X, threshold=0.5): ...
Dùng sigmoid ổn định số: tách trường hợp z >= 0 và z < 0.
- Chạy trên bộ Breast Cancer (sklearn datasets). In accuracy, log-loss train/test.
- Vẽ log-loss theo epoch: phải giảm dần.
- So hệ số với
sklearn.linear_model.LogisticRegression(penalty=None)sau đủ epoch.
✅ Tiêu chí hoàn thành
- Test mẫu pass.
- Hệ số Linear khớp
sklearnvới sai số1e-6. - Có hình đường đi hệ số Ridge và hình log-loss theo epoch.
- Giải thích được R2 âm nghĩa là gì.
❓ Câu hỏi ôn tập
- Hồi quy đơn vẽ đường theo tiêu chí nào?
- MSE khác MAE ở điểm nào?
- R2 bằng 0 và bằng 1 nghĩa là gì?
- Khi nào dùng cây thay vì đường thẳng?
🌕 Bạn đã hoàn thành ngày 55. Làm hết bài tập phía trên rồi sang ngày tiếp theo.