Hồi quy tuyến tính, ma trận thiết kế và OLS: từ dữ liệu đến bài toán bình phương tối thiểu
Khi mới gặp hồi quy tuyến tính, nhiều người có cảm giác bài toán này nhảy bước rất mạnh.
$$ (x^1,y^1),\ (x^2,y^2),\ \dots,\ (x^N,y^N), $$$$ x^k\in\mathbb{R}^n $$là một vector đặc trưng, còn $y^k$ là giá trị cần dự đoán.
$$ \hat y = \beta^T \tilde x, \qquad \sum_{k=1}^N(\hat y^k-y^k)^2, \qquad \|X\beta-\mathbf y\|_2^2. $$Nếu nhìn lần đầu, rất dễ tưởng đây là một đống ký hiệu được nhét vào cho gọn.
Thật ra không phải vậy. Mỗi bước đều rất tự nhiên:
- từ một mẫu dữ liệu đi đến một công thức dự đoán;
- từ N mẫu dữ liệu đi đến ma trận thiết kế;
- từ lỗi trên từng mẫu đi đến bài toán bình phương tối thiểu.
Bài này chỉ làm đúng một việc: đi lại thật chậm con đường đó.
1. Bài toán thật sự là gì?
$$ \mathcal D=\{(x^1,y^1),(x^2,y^2),\dots,(x^N,y^N)\}, $$$$ x^k= \begin{bmatrix} x_1^k\\ x_2^k\\ \vdots\\ x_n^k \end{bmatrix} \in\mathbb{R}^n. $$Bạn có thể hình dung mỗi $x^k$ là một mẫu quan sát:
- nếu đang dự đoán giá nhà, thì các thành phần của $x^k$ có thể là diện tích, số phòng, vị trí, tuổi nhà;
- nếu đang dự đoán điểm thi, thì các thành phần có thể là giờ học, điểm chuyên cần, số bài tập đã làm.
Nói ngắn gọn: $x^k$ là đầu vào, còn $y^k$ là đầu ra ta muốn mô hình hoá.
Trong hồi quy tuyến tính, ta giả sử đầu ra có thể được xấp xỉ bằng một hàm tuyến tính theo các đặc trưng ấy.
2. Từ một mẫu dữ liệu đến công thức dự đoán
$$ \hat y^k=\beta_0+\beta_1x_1^k+\beta_2x_2^k+\cdots+\beta_nx_n^k. $$Ở đây:
- $\beta_0$ là hệ số chặn;
- $\beta_1,\dots,\beta_n$ là các hệ số mà ta cần học từ dữ liệu.
Đây là bước đầu tiên cần hiểu rõ:
viết $\hat y^k=\beta^T\tilde x^k$ không làm bài toán đổi khác đi. Nó chỉ là cách gom hệ số chặn và các đặc trưng vào một biểu thức vector gọn hơn.
3. Từ một mẫu đến toàn bộ tập dữ liệu
Đến đây, nếu chỉ có một mẫu thì công thức trên đã đủ.
Nhưng ta có đến $N$ mẫu. Vì thế ta muốn viết toàn bộ dự đoán cho cả tập dữ liệu trong một dòng duy nhất.
$$ X= \begin{bmatrix} 1 & x_1^1 & x_2^1 & \cdots & x_n^1\\ 1 & x_1^2 & x_2^2 & \cdots & x_n^2\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & x_1^N & x_2^N & \cdots & x_n^N \end{bmatrix} \in\mathbb{R}^{N\times(n+1)}. $$Đây chính là ma trận thiết kế.
Cách đọc ma trận này rất quan trọng:
- mỗi hàng là một mẫu dữ liệu;
- mỗi cột là một đặc trưng của mô hình;
- cột đầu tiên toàn số $1$ để gánh phần hệ số chặn $\beta_0$.
Khi nhân $X$ với $\beta$, ta được $$ X\beta= \begin{bmatrix} \beta^T\tilde x^1\ \beta^T\tilde x^2\ \vdots\ \beta^T\tilde x^N \end{bmatrix}
\begin{bmatrix} \hat y^1\ \hat y^2\ \vdots\ \hat y^N \end{bmatrix}. $$
Và đây là lý do thật sự khiến ký hiệu ma trận xuất hiện:
$X\beta$ chính là vector chứa toàn bộ dự đoán của mô hình trên cả tập dữ liệu.
Phép viết ma trận ở đây chỉ xếp chồng các công thức dự đoán riêng lẻ thành một biểu thức chung.
4. OLS đo độ sai như thế nào?
$$ r^k=\hat y^k-y^k. $$$$ \mathbf r= \begin{bmatrix} r^1\\ r^2\\ \vdots\\ r^N \end{bmatrix} =X\beta-\mathbf y. $$$$ \sum_{k=1}^N(\hat y^k-y^k)^2. $$Đây là lõi của bình phương tối thiểu thông thường (ordinary least squares, thường viết tắt là OLS):
$$ \frac{1}{N}\sum_{k=1}^N(\hat y^k-y^k)^2. $$chọn $\beta$ sao cho tổng bình phương sai số là nhỏ nhất.
Hai cách viết này chỉ khác nhau bởi một hằng số. Vì hằng số đó không làm thay đổi điểm cực tiểu, nên khi tối ưu hoá theo $\beta$, người ta thường bỏ qua nó để công thức gọn hơn.
$$ \sum_{k=1}^N(\hat y^k-y^k)^2. $$5. Vì sao bài toán co lại thành $|X\beta-\mathbf y|_2^2$?
Đây là bước làm nhiều người thấy “ma trận hoá” quá nhanh. Nhưng nếu nhìn từ vector phần dư thì nó rất tự nhiên.
$$ \mathbf r=X\beta-\mathbf y. $$Mà bình phương chuẩn Euclid của $\mathbf r$ là $$ |\mathbf r|_2^2
\sum_{k=1}^N(r^k)^2. $$
Thay $r^k=\hat y^k-y^k$ vào, ta được $$ |X\beta-\mathbf y|_2^2
\sum_{k=1}^N(\hat y^k-y^k)^2. $$
$$ \hat\beta=\arg\min_{\beta}\|X\beta-\mathbf y\|_2^2. $$Đây là một dòng rất đáng nhớ, vì nó gom toàn bộ câu chuyện lại:
- $X\beta$ là dự đoán của mô hình;
- $\mathbf y$ là dữ liệu thật;
- hiệu $X\beta-\mathbf y$ là vector sai số;
- chuẩn bình phương của nó là tổng bình phương sai số cần cực tiểu hoá.
6. Nghiệm OLS đến từ đâu?
Nếu muốn đi tiếp đến công thức nghiệm, ta chỉ cần lấy đạo hàm theo $\beta$ và cho bằng $0$.
$$ f(\beta)=\|X\beta-\mathbf y\|_2^2 =(X\beta-\mathbf y)^T(X\beta-\mathbf y), $$$$ X^T X\beta=X^T\mathbf y. $$Đây là hệ phương trình chuẩn.
$$ \hat\beta=(X^TX)^{-1}X^T\mathbf y. $$Điểm cần nhớ ở đây không phải chỉ là công thức, mà là:
- bài toán hồi quy tuyến tính đã trở thành một bài toán tối ưu bậc hai;
- rồi từ đó trở thành một bài toán đại số tuyến tính;
- nghiệm của nó đi qua ma trận thiết kế $X$ và hình học của không gian cột của $X$.
7. Ý nghĩa hình học: vì sao OLS là phép chiếu?
Đây là chỗ mà hồi quy tuyến tính nối rất đẹp với đại số tuyến tính.
Vector $\mathbf y$ sống trong $\mathbb{R}^N$. Nhưng không phải vector nào trong $\mathbb{R}^N$ cũng có thể viết dưới dạng $X\beta$.
Tập tất cả các vector dạng $X\beta$ chính là không gian cột của $X$.
Vì vậy, khi giải OLS, ta thật ra đang làm việc sau:
$$ X\hat\beta. $$$$ \mathbf y-X\hat\beta $$$$ X^T(X\hat\beta-\mathbf y)=0. $$tìm điểm trong không gian cột của $X$ gần $\mathbf y$ nhất.
Nếu hiểu được đoạn này, bạn sẽ thấy OLS không còn là một mẹo tính đạo hàm nữa. Nó là một bài toán chiếu trực giao lên một không gian con.
8. Vì sao QR lại liên quan đến OLS?
Nếu $$ X=QR $$ là phân tích QR của ma trận thiết kế, thì $$ |X\beta-\mathbf y|_2^2
|QR\beta-\mathbf y|_2^2. $$
Vì $Q$ có các cột trực chuẩn, bài toán này trở nên sạch hơn nhiều về mặt tính toán. Đó là lý do QR luôn xuất hiện trong các cách giải OLS ổn định hơn so với việc nhân thẳng $(X^TX)^{-1}$.
Nói cách khác:
- dạng $X\beta\approx \mathbf y$ là ngôn ngữ của hồi quy tuyến tính;
- còn QR là một trong những công cụ đại số tuyến tính giúp giải bài toán ấy tốt hơn.
9. Kết luận
Toàn bộ con đường từ dữ liệu đến OLS có thể tóm lại như sau:
- với mỗi mẫu $x^k$, mô hình dự đoán $$ \hat y^k=\beta^T\tilde x^k; $$
- xếp chồng các mẫu lại, ta thu được ma trận thiết kế $X$ và vector đầu ra $\mathbf y$;
- toàn bộ dự đoán của mô hình là $X\beta$;
- toàn bộ sai số là $X\beta-\mathbf y$;
- OLS chọn $\beta$ để cực tiểu hoá $$ \|X\beta-\mathbf y\|_2^2. $$
Nếu chỉ nhớ một câu, hãy nhớ câu này:
OLS không phải là một công thức xuất hiện từ hư không. Nó chỉ là cách viết rất gọn của việc cộng bình phương sai số dự đoán trên toàn bộ tập dữ liệu.
Đọc tiếp
- Nghiệm bình phương tối thiểu (Least Square Solution): nếu bạn muốn xem lại bản suy ra hệ phương trình chuẩn theo hướng đạo hàm ma trận trực tiếp hơn.
- Định lí cơ bản của đại số tuyến tính: để thấy vì sao least squares thực chất là phép chiếu trực giao lên không gian cột.
- Phân tích QR: tách ma trận thành hướng vuông góc và hệ số pha trộn: để thấy vì sao QR là công cụ tự nhiên khi giải OLS theo hướng số học ổn định hơn.