Otimização/O problema de mínimos quadrados

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa


Este tipo de problema é muito frequente em ciências experimentais. Para ter um exemplo em mente durante a discussão que será feita mais adiante, considere as seguintes informações:

Segundo dados disponibilizados pelo IBGE, o Produto Interno Bruto per capita na cidade de São Paulo, no período de 2002 a 2005, foi (em reais): 17734, 19669, 20943 e 24083, respectivamente.

Com base nessas informações, como poderia ser feita uma previsão do valor correspondente ao ano seguinte (2006)?

Uma escolha possível seria supor que a cada ano o PIB aumenta uma aproximadamente constante, ou seja, usar um modelo linear para obter tal estimativa (que possivelmente será bem grosseira). Intuitivamente, bastaria analisar os dados disponíveis e a partir deles deduzir qual é o aumento que ocorre a cada ano. Depois, a previsão para 2006 seria aproximadamente igual à de 2005 somada com aquele aumento anual.

Esta idéia poderia até funcionar para o caso deste exemplo, mas o que fazer se a quantidade de dados disponíveis sobre algum fenômeno (ou alguma situação) for significativamente maior?

A melhor escolha, sem dúvida, é fazer uso de um computador para obter o modelo que melhor descreve o "comportamento" dos dados experimentais.

Em geral, os problemas de mínimos quadrados consistem em identificar os valores de determinados parâmetros, de modo que se satisfaçam certas equações hi(x)=0,i=1,,p. No contexto do exemplo anterior, se procura um modelo linear para os dados, ou seja, uma função y=mx+n que os descreva da melhor forma possível. Assim, os parâmetros a considerar são m e n. Os valores ideais para essas variáveis seriam aqueles que verificassem as seguintes equações:

{2002m+n=177342003m+n=196692004m+n=209432005m+n=24083

Note que a partir dessas equações poderiam ser definidas as funções hi como:

h1(m,n)=2002m+n17734
h2(m,n)=2003m+n19669
h3(m,n)=2004m+n20943
h4(m,n)=2005m+n24083

É de se esperar que o sistema de equações obtido a pouco não admitirá uma solução exata, pois se tem mais equações do que variáveis.

Isso geralmente acontece, pois é comum haver uma quantidade p de equações bem maior que o número n de parâmetros a identificar. Em particular, quando todas as equações hi são lineares em suas n variáveis, dificilmente existirá uma solução exata para o sistema linear resultante, pois este terá mais equações do que incógnitas (como no exemplo). Em geral, não é possível encontrar parâmetros que satisfaçam exatamente todas as equações. Por isso, costuma-se tentar identificar os parâmetros que "melhor se aproximam" de uma solução exata, em algum sentido.

Uma forma de obter uma solução aproximada (uma "quase-solução") resulta da seguinte observação: o valor de cada função hi em uma solução exata x deveria ser zero. Se tal exigência é restritiva demais, e com ela não é possível encontrar qualquer solução, uma possibilidade seria exigir um pouco menos. Por exemplo, poderia ser exigido apenas que o valor de hi, para i=1,,p seja, em geral, pequeno. Uma das formas de capturar essa idéia em termos mais precisos é dizer que se pretende minimizar a soma dos quadrados dos valores de cada hi. Em símbolos, o problema passaria a ser:

minxni=1p[hi(x)]2

O caso linear

Neste caso, para cada índice i=1,,p, a função hi é afim linear, ou seja:

hi:n
hi(x)=aix+bi

onde ain e bi para cada i=1,,p. Deste modo, pode-se definir uma função H como

H:np de modo que
H(x)=[h1(x)hp(x)]=[a1x+b1apx+bp]=[a1ap]x+[b1bp]

Motivando a introdução da seguinte notação:

A=[a1ap],b=[b1bp]

Assim,

H(x)=Ax+b

Logo, buscar uma solução exata é o mesmo que procurar uma solução para o seguinte sistema linear:

Ax=b

E uma solução aproximada poderia ser buscada a partir do seguinte problema de minimização:

minxn12Ax+b2

Predefinição:Exercício Predefinição:Resolução

Analisando a função objetivo do problema de minimização anterior, tem-se:

f(x)=12Ax+b2=12Ax+b,Ax+b=12xAAx+bAx+12bb

Logo, como B=AA é simétrica e semi-definida positiva, tem-se f convexa. Isso implica que a condição necessária de primeira ordem é também suficiente. Assim, qualquer ponto xn tal que f(x)=0 é solução do problema aproximado.

Calculando o gradiente da função objetivo tem-se:

0=f(x)=AAx+Ab

Deste modo, a solução do problema é obtida resolvendo o sistema

AAx=Ab

Observe também que isso implica A(Ax+b)=0, ou seja, Ax+bker(A).


Exemplo de aplicação

Considere dado um conjunto de pontos do plano 2, por exemplo {(xi,yi)}i=1p, representando dados obtidos experimentalmente.

Perguntas:

1. Qual é a função afim linear que melhor se aproxima dos dados experimentais?

Predefinição:Resolução

2. Qual é a função quadrática que melhor se aproxima dos dados experimentais?

Predefinição:Resolução

Predefinição:Exercício Predefinição:Resolução

Observações

Conforme se aumenta o grau do polinômio que faz a aproximação dos dados, as colunas de A têm elementos elevados a potências cada vez maiores, fazendo com que os autovalores de AA sejam cada vez mais dispersos. Com isso, AA torna-se mal condicionada.

Predefinição:Exercício Predefinição:Resolução

Predefinição:Exercício Predefinição:Resolução

O caso não linear

Para esse tipo de problemas, há dois métodos:

  1. Gauss-Newton
  2. Levemberg-Marquardt

Ambos são métodos do tipo Newton. Então, para entender cada um deles é preciso entender o Método de Newton.

O método de Newton

Para entender a essência do método de Newton, primeiro considere que o problema a ser resolvido é

(P){minf(x)xn

sendo hj:n, e portanto f=12j=1p[hj]2 de classe 𝒞2(n). A idéia de Newton é usar o desenvolvimento até segunda ordem da série de Taylor da função f em cada ponto iterado. Isto é, se o iterado é x¯, então:

Q(x)=f(x¯)+f(x¯)(xx¯)+12(xx¯)2f(x¯)(xx¯)


Então a condição de Newton é que em cada iteração a Hessiana 2f deve ser definida positiva.

Calculando o gradiente da função Q, segue:

Q(x)=f(x¯)+2f(x¯)(xx¯)

Se x* é o (único) minimizador de Q, então

0=Q(x*)=f(x¯)+2f(x¯)(x*x¯)

donde

2f(x¯)(x*x¯)=f(x¯)

Sendo 2f definida positiva, tal matriz é também inversível. Portanto:

x*=x¯[2f(x¯)]1f(x¯)

Assim, pode-se usar a seguinte iteração:

xk+1=xk[2f(xk)]1f(xk)

Algoritmo de Newton (puro)

Início: Tome x0n
  Se f(x0)=0, pare: x0 é ponto crítico.
  Senão, Calcule d0, solução de
    2f(x0)d0=f(x0)
    Faça x1=x0+d0 e k=1
Iteração: Se f(xk)=0, pare: xk é ponto crítico.
  Senão, calcular dk, solução de
    2f(xk)dk=f(xk)
    Faça xk+1=xk+dk e k=k+1

Voltando ao problema original, de mínimos quadrados, se tinha:

f(x)=12i=1p[hi(x)]2

Calculando o gradiente desta função, resulta:

f(x)=i=1phi(x)hi(x)

Considera-se H:np definida por

H(x)=[h1(x)hp(x)]

Deste modo, a Jacobiana de H verifica:

f(x)=[JH(x)]H(x)

pois o produto de uma matriz por um vetor tem como resultado um vetor que é a combinação linear das colunas da matriz, com coeficientes que são as coordenadas do vetor.

Além disso, tem-se

2f(x)=i=1phi(x)2hi(x)+i=1phi(x)hi(x)

Seja

B(x)=i=1phi(x)hi(x)=JH(x)JH(x)

Sabe-se que uma matriz D é definida positiva se xtDx>0 para qualquer x=0. Fazendo D=hi(x)hi(x), tem-se:

xhi(x)hi(x)x=[hi(x)x]20

Para que D seja definida positiva, é necessário que SP(hi(x))=n ( deve gerar todo o espaço), neste caso, se diz que JH(x) é de posto máximo.

Algoritmo de Gauss-Newton

Início: Tome x0n
  Se f(x0)=0, pare: x0 é ponto crítico.
  Senão, Calcule d0, solução de
    B(x0)d0=f(x0), onde B(x)=i=1phi(x)hi(x)
    Faça x1=x0+d0 e k=1
Iteração: Se f(xk)=0, pare: xk é ponto crítico.
  Senão, calcular dk, solução de
    B(xk)dk=f(xk)
    Faça xk+1=xk+dk e k=k+1

Algoritmo de Levemberg-Marquardt

A idéia de Levemberg-Marquardt foi perturbar a matriz B(x), considerando B(x)+ρI, para algum ρ>0 pequeno.

Início: Tome x0n
  Se f(x0)=0, pare: x0 é ponto crítico.
  Senão, Calcule d0, solução de
    (B(x0)+ρI)d0=f(x0), onde B(x)=i=1phi(x)hi(x)
    Faça x1=x0+d0 e k=1
Iteração: Se f(xk)=0, pare: xk é ponto crítico.
  Senão, calcular dk, solução de
    (B(x0)+ρI)dk=f(xk)
    Faça xk+1=xk+dk e k=k+1

Predefinição:Exercício Predefinição:Resolução


Predefinição:AutoCat