29 Aug 2017Math
Hồi quy tuyến tính là một phương pháp tìm quan hệ tuyến tính giữa những biến số độc lập (independent variables) với một biến số phụ thuộc (dependent variable).
Chẳng hạn, một cái máy theo dõi quãng đường của một chiếc xe chuyển động thẳng đều. Tại một thời điểm , nó ghi lại xem xe đã đi được bao nhiêu mét (ký hiệu là ). Nhưng bạn biết thì thế giới thực chẳng bao giờ hoàn hảo được cả, máy đo có thể bị sai số do nguồn điện, đường xóc, vật cản, ... Và kết quả khi biểu diễn lần đo đó lên đồ thị, ta có hình sau (quan sát các điểm biểu diễn màu cam):

Minh họa hồi quy tuyến tính. Trục tung là đại lượng độ dài đi được, trục hoành là đại lượng thời gian.

Công việc của bạn là "chuẩn hóa" lại dữ liệu bị nhiễu này. Công việc chuẩn hóa có thể có nhiều mục đích, ví dụ như để tính vận tốc của xe, hoặc để dự đoán trong tương lai ở thời điểm thì xe đã di chuyển được bao xa.
Bạn biết rằng đồ thị - của vật chuyển động thẳng đều thì có đường thẳng (tuyến tính). Một trong những phương pháp phổ biến để phân tích quan hệ tuyến tính giữa hai đại lượng như quãng đường và thời gian trong bài toán này là hồi quy tuyến tính bằng phương pháp bình phương tối thiểu.
Ý tưởng chính của phương pháp hồi quy tuyến tính là tìm ra đường thẳng như trong hình (gọi là best fit line), sao cho tổng bình phương của độ dài các đoạn màu xanh dương là nhỏ nhất.
Để cho tổng quát, mình sẽ ký hiệu là quãng đường đo được (thay cho ), còn là thời điểm đo (thay cho ).
Từ tọa độ các điểm cho trước trên mặt phẳng, hãy lập bảng sau:
63369.18.
0.980.630.96040.39690.6174
1.840.673.18560.44891.2328
2.131.274.53691.61292.7051
2.61.526.762.31043.952
3.51.5412.252.37165.39
3.762.0414.13764.16167.6704
4.142.2717.13965.15299.3978
4.612.1421.25214.57969.8654
1.510.92.28010.811.359
1.30.541.690.29160.702
4.912.5924.10816.708112.7169
5.21327.14419.15.63
5.693.1532.37619.922517.9235
6.482.8441.99048.065618.4032
0.790.220.62410.04840.1738
0.510.420.26010.17640.2142
Avg3.2921.69114.52323.82697.49029
Sau đó bạn vẽ một đường thẳng đi qua điểm và điểm sẽ ra được best fit line. Với bảng kết quả trên, mình có được , , và .
Kết quả:

Kết quả best fit line từ cách giải nhanh

Để hiểu được các phân tích sau, các bạn cần phải có kiến thức cơ bản về các chủ đề sau:
  • Đạo hàm hàm một biến (derivative);
  • Đạo hàm hàm nhiều biến (multi-variable derivative), tích phân ma trận (matrix calculus), nhân ma trận.
Không cần học ngay bây giờ đâu! Các bạn cứ đọc đến đâu tìm hiểu đến đó là được.
Nếu giả sử best fit line có phương trình là:
thì tại mỗi thời điểm đo , độ dài đoạn màu xanh là . Tổng bình phương độ dài các đoạn màu xanh là:
Nhắc lại rằng các số đã được biết trước qua hàng loạt kết quả đo (tọa độ của các điểm màu cam). Mục tiêu của chúng ta là tìm các giá trị sao cho đạt giá trị nhỏ nhất.
Tiếp tục biến đổi hàm :

Đồ thị a-b-g

Trong hình 2, điểm màu đỏ là "đáy" của mặt phẳng biểu diễn hàm . Tức là tại điểm đó, có giá trị cực tiểu và nhỏ nhất, nghĩa là đạo hàm tại điểm đó bằng 0:
Như vậy,
Giải hệ phương trình cuối cùng để tìm hai số , lúc này đường là best fit line cho tập điểm của chúng ta.
Có thể thấy rằng, trong các bước biến đổi cuối cùng, ta chia mỗi vế của hai phương trình cho . Chính vì thế, nhiều tài liệu thường đặt hàm mục tiêu cần tối thiểu không phải là hàm , mà là hàm để đơn giản hóa các bước tính toán.
Bài toán chiếc xe chuyển động thẳng đều ở trên chỉ có một biến độc lập đó là . Trong trường hợp biến phụ thuộc vào biến () .
Thay vì ghi mình có thể ghi dạng nhân ma trận (đây là trường hợp ):
Với cách viết này, mình có thể dễ dàng chuyển sang trường hợp tổng quát có biến .
Sở dĩ mình thêm một hằng số vào vector biến để khi nhân với vector hàng hệ số , thì phương trình tạo ra có hệ số tự do.
Giả sử bạn thực hiện lần đo, lần thứ thu được điểm , thì hàm cần tối thiểu là:
Viết gọn,
Lưu ý, đừng nhầm lẫn giữa (số phần tử của vector biến ) và (số điểm trong bảng thống kê).
Bây giờ, chúng ta đạo hàm hàm , có được:
Nếu đặt đạo hàm bằng 0, có phương trình sau:
Xét riêng, ta thấy:
(kí hiệu là "đặt bằng, gán bằng")
và:
Quay lại phương trình vừa nãy, ta có:
Nếu tồn tại ma trận nghịch đảo (inverse matrix) thì:
nếu không thì lấy ma trận giả nghịch đảo (pseudo inverse matrix):
Như vậy chúng ta đã tìm ra được nghiệm bài toán.
Special thanks to my friends, Can Tran Thanh Trung, Vu Le The Anh, for their precious advice.