Bình phương tối thiểu tuyến tính

**Bình phương tối thiểu tuyến tính** là một kỹ thuật trong ngành tối ưu toán học để tìm một nghiệm gần đúng cho một hệ phương trình tuyến tính không có nghiệm chính xác. Điều này thường xảy ra khi số phương trình là (*m*) lớn hơn số biến (*n*). (Xem thêm linear regression.)

## Định nghĩa

Theo từ ngữ toán học, chúng ta muốn tìm nghiệm của "phương trình" 
:A\mathbf{x} \approx \mathbf{b},
với *A* là một ma trận cỡ *m*-nhân-*n* (với *m* > *n*) và **x** và **b** theo thứ tự đó là vectơ cột với *n*- và *m*-hàng. Một cách chính xác hơn, ta muốn làm tối thiểu chuẩn Euclidean bình phương của phần dư *A***x** &minus; **b**, nghĩa là, đại lượng

:\|A\mathbf{x}-\mathbf{b}\|^2 = \left([A\mathbf{x}]_1-\mathbf{b}_1\right)^2
+\left([A\mathbf{x}]_2-\mathbf{b}_2\right)^2
+\dots+
\left([A\mathbf{x}]_m-\mathbf{b}_m\right)^2,


với [*A***x**]*i* ký hiệu phần tử thứ *i* của vectơ *A***x**. Do đó mà có cái tên "bình phương tối thiểu".

Sử dụng sự kiện bình phương chuẩn của **v** là **v**T**v**, với **v**T ký hiệu cho ma trận chuyển của **v**, ta viết lại biểu thức trên như là

:(A \mathbf{x}- \mathbf{b})^T(A \mathbf{x}- \mathbf{b}) = (A \mathbf{x})^T (A \mathbf{x}) - \mathbf{b}^T A \mathbf{x} - (A \mathbf{x})^T \mathbf{b} + \mathbf{b}^T \mathbf{b}.

Hai hạng tử ở giữa là như nhau, do đó giá trị tối thiểu có thể được tìm tại zero của đạo hàm theo biến **x**,

:2 A^T A \mathbf{x} - 2 A^T \mathbf{b} = \mathbf{0}.

Do vậy là tối thiểu **x** là nghiệm của **phương trình normal** sau đây 
: A^T \! A \mathbf{x} = A^T \mathbf{b}. 

Để ý rằng điều này tương đương với một hệ phương trình tuyến tính. Ma trận *A*T*A* ở phía bên trái là một ma trận vuông, và khả nghịch nếu như *A* có đầy rank theo cột (nghĩa là, nếu như rank của *A* là *n*). Trong trường hợp đó, nghiệm của hệ phương trình tuyến tính là duy nhất và được cho bởi
: \mathbf{x} = (A^T\!A)^{-1} A^T \mathbf{b}.  
Ma trận (A^TA)^{-1}A^T gọi là ma trận giả nghịch đảo của *A*. Chúng ta không thể sử dụng ma trận nghịch đảo thật sự của *A* (nghĩa là, A^{-1}), vì nó không tồn tại do *A* không phải là một ma trận vuông (*m* &ne; *n*).

## Tính toán

Nếu ma trận *A<sup>T</sup>A* đầy rank và ổn định (well-conditioned), phương trình normal có thể được giải trực tiếp bằng phân tích Cholesky *A<sup>T</sup>A* = *R<sup>T</sup>R*, cho ta:
:  R^T R \mathbf{x} = A^T \mathbf{b}. 
với *R* là một ma trận tam giác trên (ma trận mà các số phía dưới đường chéo đều bằng 0,*upper triangular matrix*).

Một phương pháp chậm hơn nhưng ổn định hơn, vẫn làm việc nếu *A* không đầy rank, có thể đạt được bằng cách tính phân tích QR *A = Q R*. Sau đó ta có thể giải
:  R \mathbf{x} = Q^T \mathbf{b}. 
với *Q* là một ma trận trực giao và *R* là một ma trận tam giác trên.

Một cách thứ ba là sử dụng singular value decomposition (SVD). Nếu  A = U\Sigma V^* là singular value decomposition của *A*, thì ma trận giả nghịch đảo của *A* là
*V &Sigma;<sup>+</sup> U<sup>*</sup>*, so
: \mathbf{x} = V \Sigma^+ U^* \mathbf{b} \,
với &Sigma;+ là ma trận chuyển của &Sigma; với mọi phần tử khác 0 được thay bằng phần tử nghịch đảo. Phương pháp này cần dùng nhiều sức máy nhất, nhưng rất hữu ích nếu như ma trận *A* rất không ổn định (i.e. nếu như số điều kiện của nó nhân với sai số của máy khá lớn). Trong trường hợp đó, thêm vào những giá trị nhỏ nhất của các giá trị singular trong ma trận nghịch đảo chỉ cộng thêm nhiễu vào đáp số. Điều này có thể được chữa bằng tiếp cận sử dụng SVD, cho ra một lời giải chính xác hơn và ổn định hơn, bằng cách đặt bằng zero tất cả các giá trị singular dưới một ngưỡng nào đó và mặc kệ chúng, trước khi tính toán ma trận giả nghịch đảo.

## Áp dụng

Phương pháp bình phương tối thiểu tuyến tính có thể được sử dụng để tìm một hàm affine **R**n &rarr; **R** khớp nhất với một tập hợp dữ liệu cho trước (xem phương pháp bình phương tối thiểu).

Ví dụ

: y = \alpha + \beta x + \gamma x^2 + \varepsilon

là một mô hình regression tuyến tính, với phần phải là một tổ hợp tuyến tính của các tham số &alpha;, &beta;, và &gamma;; hơn nữa, các đánh giá bình phương tối thiểu của các tham số này là tuyến tính trong vector của các giá trị quan sát *y*.

Chúng ta viết hàm tuyến tính cần tìm như là một ma trận 1-nhân-*n* **x**T (do đó **x** thật ra là 1 vectơ cột, xem thêm biến đổi tuyến tính).

Tập dữ liệu gồm có *m* (*n*&nbsp;+&nbsp;1)-bộ số (*x*1,..., *x**n*, *y*). Những giá trị này được viết vào một ma trận *m*-nhân-*n* *A* và một vector **b**, với mỗi bộ tương ứng với một hàng của *A*, và *y* trở thành các phần tử tương ứng trong **b**.

Sau đó, 
: *A***x** &asymp; **b**
cho ta hàm số **x** cần tìm.

## Ví dụ
Cho các điểm (0, 3), (2, 3), (4, 4), (&minus;1, 2). Chúng ta tìm một lời giải có dạng &alpha;*x* + &beta; = *y*, nghĩa là,

: \begin{pmatrix}x & 1 \end{pmatrix}\begin{pmatrix} \alpha \\ \beta\end{pmatrix} = y

Chúng ta sau đó có thể lập ma trận *A*:
: A=\begin{pmatrix}
0 & 1 \\
2 & 1 \\
4 & 1 \\
-1 & 1 \\ \end{pmatrix}
: A^T=\begin{pmatrix}
0  & 2 & 4 & -1 \\
1  & 1 & 1 & 1 \end{pmatrix}
: A^TA=\begin{pmatrix}
21 & 5 \\
5 & 4 \end{pmatrix}
và vectơ **b**
: \mathbf{b} = \begin{pmatrix}
3 \\
3 \\
4 \\ 
2 \end{pmatrix}
và sau đó
:A^T\mathbf{b}=\begin{pmatrix}
20 \\
12 \end{pmatrix}
Do đó, phương trình normal là 

:A^TA\begin{pmatrix} \alpha \\ \beta \end{pmatrix} = A^T\mathbf{b}
:\begin{pmatrix}
21 & 5 \\
5 & 4 \end{pmatrix} \begin{pmatrix} \alpha \\ \beta \end{pmatrix}=\begin{pmatrix}
20 \\
12 \end{pmatrix}
Sau đó,
:(A^TA)^{-1}={1\over 59}\begin{pmatrix}
4 & -5 \\
-5 & 21 \end{pmatrix}
and
:\begin{pmatrix} \alpha \\ \beta\end{pmatrix}={1\over 59}\begin{pmatrix}
4 & -5 \\
-5 & 21 \end{pmatrix}\begin{pmatrix}
20 \\
12 \end{pmatrix}=\begin{pmatrix}
20/59 \\
152/59 \end{pmatrix}
và đường thẳng tốt nhất là (20/59)*x* + 152/59 = *y*.

## Xem thêm

* Linear regression
* Least-squares estimation of linear regression coefficients
* Tikhonov regularization

## Tham khảo

## Liên kết ngoài
*Least Squares Fitting &ndash; From MathWorld