Đến nội dung chính
Học máy

Hồi quy tuyến tính: từ đường thẳng đến baseline đáng tin cậy

Xây dựng mô hình dự đoán số, hiểu squared loss và đánh giá sai số trên dữ liệu chưa dùng để fit.

Mức giải thích

Hồi quy tuyến tính là điểm bắt đầu hữu ích khi đầu ra là một đại lượng liên tục. Bài viết xây dựng một baseline dự đoán thời gian xử lý từ số tác vụ bằng dữ liệu tự tạo; ví dụ không đại diện cho một hệ thống vận hành thực tế.

Mục tiêu học tập

  • Phân biệt dự đoán trung bình với quan hệ nhân quả.
  • Tính hệ số và sai số của mô hình một biến.
  • Thiết kế phép so sánh baseline không làm rò rỉ nhãn kiểm tra.

Dự đoán một con số có nghĩa gì?

Với một đặc trưng, mô hình là y^=wx+b\hat y=wx+b. Đầu vào x phải có đơn vị nhất quán; y là giá trị cần dự đoán. Khi có nhiều đặc trưng, thay wx bằng tổng trọng số của các đặc trưng. Tuyến tính ở đây nói về tham số.

Chọn đặc trưng có sẵn tại thời điểm dự đoán. Ví dụ thời gian hoàn thành cuối cùng của một lô không thể làm đầu vào cho việc dự đoán trước khi lô bắt đầu.

Fit bằng bình phương sai số

Mục tiêu là L(w,b)=n−1∑i(wxi+b−yi)2L(w,b)=n^{-1}\sum_i(wx_i+b-y_i)^2. Trong một biến, hệ số dốc bằng tổng tích độ lệch chia tổng bình phương độ lệch của x; sau đó b=yˉ−wxˉb=\bar y-w\bar x. Ví dụ mã tính trực tiếp công thức này.

Nếu mọi x bằng nhau thì mẫu số bằng không. Dữ liệu đó không đủ xác định độ dốc; dự đoán trung bình có thể làm baseline thay vì chia cho không.

Đánh giá ngoài dữ liệu fit

MAE là trung bình trị tuyệt đối của sai số, có cùng đơn vị với y. RMSE phạt sai số lớn mạnh hơn. Tính cả hai trên cùng tập kiểm tra; đừng so các mô hình trên các tập khác nhau.

Nếu dữ liệu được thu theo ngày hoặc nhiều lần trên cùng máy, tách theo thời gian hoặc theo nhóm phù hợp. Random split từng dòng có thể để cùng điều kiện xuất hiện ở cả train và test.

Ngoại suy và bài thực hành có kiểm soát

Mã dùng bốn điểm học và hai điểm kiểm tra tách sẵn, không cần thư viện. Dữ liệu cố ý rất đơn giản để kiểm tra công thức và baseline. Đổi các giá trị y, tính lại MAE, rồi giải thích thay đổi bằng residual thay vì chỉ đọc hệ số.

Với dự án thật, cố định tiêu chí, chia dữ liệu trước preprocessing và lưu phiên bản đặc trưng. Test chỉ mở khi phương pháp đã chốt.

Workflow & kiến trúc

Chỉ fit preprocessing và mô hình trên tập train. Tập test dùng phép biến đổi đã học và mô hình đã cố định để dự đoán, rồi đối chiếu với nhãn test.
01Chọn target và thời điểm dự đoán
02Chia train/validation/test
03Fit preprocessing trên train
04Fit và so baseline
05Kiểm tra residual và phạm vi sử dụng
Workflow minh họa · Các bước cần được điều chỉnh theo bài toán thực tế.

Ứng dụng & giới hạn

  • Ước lượng đại lượng liên tục từ dữ liệu bảng.
  • Tạo baseline có thể kiểm tra trước khi thử mô hình phức tạp.

Điểm mạnh

Ít tham số, tính toán đơn giản và dễ kiểm tra phép tính bằng một ví dụ nhỏ.

Giới hạn cần nhớ

Quan hệ phi tuyến, ngoại lệ và đặc trưng phụ thuộc có thể làm baseline không phù hợp. Hệ số không tự mang ý nghĩa nhân quả.

Thử trong một project nhỏ

LEARN BY DOING

Chạy mã, tự thêm một ngoại lệ vào train, rồi ghi MAE của hai cách dự đoán. Giữ nguyên test. Viết hai tình huống mà dự đoán ngoài khoảng x của train có thể thất bại.

PYTHON · VÍ DỤ MINH HỌA
from statistics import mean

# Synthetic observations; not a real performance benchmark.
train = [(1.0, 3.0), (2.0, 5.0), (3.0, 7.0), (4.0, 9.0)]
test = [(5.0, 11.0), (6.0, 13.0)]
x_bar = mean(x for x, _ in train)
y_bar = mean(y for _, y in train)
denominator = sum((x - x_bar) ** 2 for x, _ in train)
if denominator == 0:
    raise ValueError("Cannot identify a slope with constant input")
w = sum((x - x_bar) * (y - y_bar) for x, y in train) / denominator
b = y_bar - w * x_bar
mae = mean(abs(w * x + b - y) for x, y in test)
baseline_mae = mean(abs(y_bar - y) for _, y in test)
assert abs(w - 2.0) < 1e-12 and abs(b - 1.0) < 1e-12
assert mae < baseline_mae
print({"slope": w, "intercept": b, "mae": mae,
       "constant_baseline_mae": baseline_mae})

Python chuẩn; dữ liệu tuyến tính tự tạo để kiểm tra công thức, không phải kết quả đánh giá trên dữ liệu thật.

Nguồn tham khảo

  1. Google — Linear regression
  2. scikit-learn — Linear models
  3. scikit-learn — Regression metrics
  4. scikit-learn — Common pitfalls

KEEP EXPLORING

Đọc tiếp để nối các ý tưởng.