Skip to article frontmatterSkip to article content

Resolução de sistemas lineares por Quadrados Mínimos (e Pseudoinversa)

O Problema de Quadrados Mínimos

Suponha que na modelagem de um determinado problema chegue-se ao seguinte sistema linear, o qual deseja-se determinar as incógnitas xx e yy:

{x+2y=13x+4y=05x+6y=0\begin{cases} x+2y=1 \\ 3x+4y=0 \\ 5x+6y=0 \end{cases}

Esse sistema pode ser reescrito na forma matricial como

[123456][xy]=[100]\begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix}=\begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}

Claramente, o sistema não possui solução exata única (a matriz não é sequer quadrada, menos ainda invertível). Analisando do ponto de vista de transformações lineares, sabemos que o sistema será possível e indeterminado se (1,0,0)[(1,3,5),(2,4,6)](1,0,0)\in [(1,3,5),(2,4,6)]. No entanto,

121340560=20\begin{vmatrix} 1 & 2 & 1 \\ 3 & 4 & 0 \\ 5 & 6 & 0 \end{vmatrix}=-2\neq 0

Logo, os 3 vetores são linearmente independentes e o sistema é impossível, pois não existem vetores vv em R2\mathbb{R}^{2} tais que Av=(1,0,0)Av=(1,0,0), onde AA é a matriz associada ao sistema.

Supondo que a modelagem foi feita corretamente (sistemas como esses são perfeitamente possíveis e comuns em problemas reais, principalmente quando se tem mais dados observados que incógnitas a serem determinadas), uma solução aproximada seria determinar o vetor pertencente ao espaço gerado pelas colunas de AA (nesse caso, uma combinação linear entre os vetores (1,3,5)(1,3,5) e (2,4,6)(2,4,6)) que está “mais próximo” do vetor (1,0,0)(1,0,0). Isto é, utilizando a norma vetorial, queremos determinar xˉR2\bar{x}\in \mathbb{R}^{2} que minimize bAxˉ\lVert b - A\bar{x} \rVert (b=(1,0,0)b=(1,0,0)).

Considere, então, o caso geral Ax=bAx=b (com ARm×nA\in \mathbb{R}^{m\times n}). O que procuramos é:

xˉRn, onde bAxˉ=minxRnbAx\bar{x}\in \mathbb{R}^{n},\text{ onde }\lVert b - A\bar{x} \rVert =\min_{x \in \mathbb{R}^{n}}\lVert b - Ax \rVert

Pensando geometricamente, bAx{} \lVert b-Ax \rVert {} corresponde à distância do ponto bRmb\in \mathbb{R}^{m} até o subespaço de Rm\mathbb{R}^{m} gerado pelas colunas de AA, logo, a menor distância será aquela ortogonal ao subespaço. Isso significa que o vetor xˉRn\bar{x}\in \mathbb{R}^{n} procurado é tal que o vetor (bAxˉ)Rm(b-A\bar{x})\in \mathbb{R}^{m} é ortogonal ao espaço coluna de AA e, em particular, é ortogonal a cada vetor coluna de AA.

Portanto, sejam a1,,ana_{1},\dots,a_{n} as respectivas colunas de AA, temos:

a1,(bAxˉ)=a1T(bAxˉ)=0a2T(bAxˉ)=0anT(bAxˉ)=0\begin{align} \langle a_{1} , (b-A\bar{x}) \rangle =a_{1}^T(b-A\bar{x}) & =0 \\ a_{2}^T(b-A\bar{x}) & =0 \\ \vdots \\ a_{n}^T(b-A\bar{x}) & =0 \end{align}

Utilizando a notação matricial, isso é equivalente a:

[a1TanT][bAxˉ  ]=0\begin{bmatrix} a_{1}^T \\ \vdots \\ a_{n}^T \end{bmatrix}\begin{bmatrix} \\ b-A\bar{x} \\ \; \end{bmatrix}=0

O que por sua vez nos dá AT(bAxˉ)=0A^{T}(b-A\bar{x})=0. Essa equação, comumente escrita como ATAxˉ=ATb\boxed{A^{T}A\bar{x}=A^{T}b}, é chamada de equação normal e é a base para a solução do problema Ax=bAx=b através da abordagem desenvolvida até aqui, denominada de Método dos Quadrados Mínimos (o nome vem da análise do problema do ponto de vista do Cálculo, que procura minimizar o erro quadrático bAxˉ2\lVert b-A\bar{x} \rVert^{2}, resultando na mesma equação normal).

Soluções da Equação Normal

Consideremos primeiramente o caso mais simples, quando ARm×nA\in \mathbb{R}^{m\times n}, com mnm\geq n, possui posto completo (ou seja, nn). Pelo Theorem 2 e a equivalência entre transformações lineares e matrizes, sabemos que o posto de ATAA^{T}A, que é n×nn \times n, também será nn. Logo, ATAA^{T}A é invertível e podemos resolver ATAxˉ=ATbA^{T}A\bar{x}=A^{T}b por:

xˉ=(ATA)1ATb\bar{x}=(A^{T}A)^{-1}A^{T}b

Apesar de podermos determinar xˉ\bar{x} exatamente nesse caso, é importante destacar que ele corresponde à solução da equação normal ATAxˉ=ATbA^{T}A\bar{x}=A^{T}b, e não ao problema original Ax=bAx=b que, como vimos, pode nem mesmo possuir soluções. Esse é o caso do sistema linear (2), uma vez que tal AA possui 3 linhas e 2 colunas (m>nm > n) e posto completo (min{3,2}=2\min\{ 3,2 \}=2), mas o sistema é impossível.

Quando, no entanto, AA é quadrada e invertível, a solução da equação normal coincide exatamente com a solução do sistema original, pois:

xˉ=(ATA)1ATb=A1(AT)1ATb=A1b=x\bar{x}=(A^{T}A)^{-1}A^{T}b=A^{-1}(A^{T})^{-1}A^{T}b=A^{-1}b=x

O mesmo acontece quando Ax=bAx=b é possível e indeterminado. Nesse caso, ATAA^{T}A não será invertível e as infinitas soluções de ATAxˉ=ATbA^{T}A\bar{x}=A^{T}b irão coincidir com as de Ax=bAx=b.

Uma vez que Ax=bAx=b é um sistema impossível, as soluções (ou a solução única, no caso mnm \geq n e posto completo) de ATAxˉ=ATbA^{T}A\bar{x}=A^{T}b são soluções aproximadas de Ax=bAx=b, com base no critério de minimizar bAxˉ\lVert b - A\bar{x} \rVert.

Caso geral e pseudoinversa

A decomposição SVD de AA nos permite construir uma ferramenta para resolver ATAx=ATbA^{T}Ax=A^{T}b no caso geral, que independe da quantidade de linhas e colunas, assim como do posto de AA.

Começamos definindo a pseudoinversa de uma matriz e constatando algumas de suas propriedades.

Para ilustrar melhor como obter Σ+{} \Sigma^{+} {}, se posto de AA é igual a rr e seja:

Σ=[σ10σ20σr0000000]\Sigma = \begin{bmatrix} \sigma_1 & & & & \cdots & & 0 \\ & \sigma_2 & & & \cdots & & 0 \\ & & \ddots & & & & \vdots \\ & & & \sigma_r & & & 0 \\ & & & & 0 & & 0 \\ \vdots & \vdots & & & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & & 0 & \cdots & 0 \end{bmatrix}

A matriz resultante da inversão dos σi\sigma_{i} (i=1,,ri=1,\dots,r) é:

Σ=[1σ101σ201σr0000000]\Sigma' = \begin{bmatrix} \frac{1}{\sigma_{1}} & & & & \cdots & & 0 \\ & \frac{1}{\sigma_{2}} & & & \cdots & & 0 \\ & & \ddots & & & & \vdots \\ & & & \frac{1}{\sigma_{r}} & & & 0 \\ & & & & 0 & & 0 \\ \vdots & \vdots & & & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & & 0 & \cdots & 0 \end{bmatrix}

E então, Σ+=(Σ)T\Sigma^{+}=(\Sigma')^{T}.

A+A^{+} é uma generalização da ideia de inversa para uma matriz qualquer, daí o nome de pseudoinversa. Existem outros tipos de pseudoinversas, esta em específico satisfaz as chamadas condições de Penrose:

  1. AA+A=AAA^{+}A=A

  2. A+AA+=A+A^{+}AA^{+}=A^{+}

  3. (AA+)T=AA+(AA^{+})^{T}=AA^{+}

  4. (A+A)T=A+A(A^{+}A)^{T}=A^{+}A

Essas condições são verificadas sem muita dificuldade considerando-se a decomposição SVD de AA e as propriedades das matrizes UU, VV, Σ\Sigma e Σ+\Sigma^{+}.

Concluímos que, quando mnm\geq n e AA tem posto completo, (ATA)1AT=A+(A^{T}A)^{-1}A^{T}=A^{+}. Em geral, calcular a decomposição SVD de AA e determinar sua pseudoinversa tem menor custo computacional que calcular (ATA)1AT(A^{T}A)^{-1}A^{T}, uma vez que inversão de matrizes tem alto custo.

Agora, estendemos esse resultado para o caso geral, onde A+bA^{+}b nos dará uma solução única para a equação normal em função de um critério específico.

Com isso, temos uma solução geral para o problema de Quadrados Mínimos, e ainda, única pelo critério de norma mínima (mesmo que a equação normal possua infinitas soluções).

Exemplos numéricos

Voltando ao sistema inicial (2), encontraremos sua solução aproximada via quadrados mínimos utilizando a inversa da matriz ATAA^{T}A (pois como já vimos, a matriz associada a esse sistema tem posto completo).

A equação normal associada é dada por:

[135246][123456][xy]=[135246][100]\begin{bmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{bmatrix} \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix}=\begin{bmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{bmatrix}\begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}
    [35444456][xy]=[12]\implies \begin{bmatrix} 35 & 44 \\ 44 & 56 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix}=\begin{bmatrix} 1 \\ 2 \end{bmatrix}

Então, calculamos a inversa da matriz ATAA^{T}A:

[35444456]1=124[56444435]\begin{bmatrix} 35 & 44 \\ 44 & 56 \end{bmatrix}^{-1}=\frac{1}{24}\begin{bmatrix} 56 & -44 \\ -44 & 35 \end{bmatrix}

Obtendo a solução de quadrados mínimos:

[xy]=124[56444435][12]=[431312]\begin{bmatrix} x \\ y \end{bmatrix}=\frac{1}{24}\begin{bmatrix} 56 & -44 \\ -44 & 35 \end{bmatrix}\begin{bmatrix} 1 \\ 2 \end{bmatrix}=\begin{bmatrix} -\frac{4}{3} \\ \frac{13}{12} \end{bmatrix}

Como constatado no Theorem 1, essa solução é a mesma fornecida pela pseudoinversa.

Para ilustrar a solução de quadrados mínimos via pseudoinversa, considere o seguinte sistema, que não possui solução exata e nem posto completo:

[122436][xy]=[100]\begin{bmatrix} 1 & 2 \\ 2 & 4 \\ 3 & 6 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix}=\begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}

Calculando a pseudoinversa, obtemos:

[122436]+=170[123246]\begin{bmatrix} 1 & 2 \\ 2 & 4 \\ 3 & 6 \end{bmatrix}^{+}=\frac{1}{70}\begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \end{bmatrix}

Logo, a solução de quadrados mínimos de menor norma é dada por:

xˉ=170[123246][100]=[170135]\bar{x}=\frac{1}{70}\begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \end{bmatrix}\begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}=\begin{bmatrix} \frac{1}{70} \\ \frac{1}{35} \end{bmatrix}

Assim como no tópico de Compressão de Imagens, podemos utilizar a linguagem Python e as funções de Álgebra Linear da biblioteca NumPy, dessa vez para resolver quadrados mínimos via pseudoinversa numericamente. Isso normalmente é feito em problemas reais, cujas matrizes possuem dimensões maiores e o cálculo exato da solução é pouco viável:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np

# Definir as matrizes
A = np.array([[1, 2],
              [2, 4],
              [3, 6]], dtype=float)
              
b = np.array([[1],
              [0],
              [0]], dtype=float)

# Calcular a pseudoinversa 
A_pinv = np.linalg.pinv(A)

# Calcular a solução
x = A_pinv @ b

print("\nPseudoinversa de A:")
print(A_pinv)
print("Solução:")
print(x)

Solução numérica de quadrados mínimos via pseudoinversa

Note que o resultado é determinado numericamente e normalmente não corresponde à solução exata, mas é suficientemente preciso na maioria dos casos práticos.

Obtemos:

xˉ[0.014285710.02857143]\bar{x}\approx \begin{bmatrix} 0.01428571 \\ 0.02857143 \end{bmatrix}

Com uma precisão de sete casas decimais em relação à solução exata encontrada.