Existe algum pacote de software para resolver a regressão linear com o objetivo de minimizar a norma L-infinito.
Existe algum pacote de software para resolver a regressão linear com o objetivo de minimizar a norma L-infinito.
Respostas:
Resposta curta : Seu problema pode ser formulado como um programa linear (LP), permitindo que você escolha seu solucionador de LP favorito para a tarefa. Para ver como escrever o problema como um LP, continue lendo.
Esse problema de minimização é geralmente chamado de aproximação de Chebyshev .
Vamos , com a linha denotada por e . Então procuramos minimizar a função em relação a . Indique o valor ideal por
A chave para reformular isso como um LP é reescrever o problema na forma de epígrafe . Não é difícil se convencer de que, de fato,
Agora, usando a definição da função , podemos reescrever o lado direito acima como e portanto, vemos que minimizar a norma em uma configuração de regressão é equivalente ao LP onde a otimização é feita over e denota um vetor de comprimento . Deixo como um (fácil) exercício para o leitor reformular o LP acima na forma padrão.
Relação com a (variação total) da regressão linear
É interessante notar que algo muito semelhante pode ser feito com a norma . Seja . Argumentos semelhantes levam a concluir que modo que o LP correspondente seja
Observe aqui que agora é um vetor de comprimento vez de um escalar, como no caso .
A semelhança entre esses dois problemas e o fato de que ambos podem ser escolhidos como LPs não é, obviamente, um acidente. As duas normas estão relacionadas na medida em que são as normas duplas uma da outra.
O Malab pode fazer isso usando o cvx. para obter o cvx (gratuito):
No cvx, você escreveria desta maneira:
cvx_begin
variable x(n);
minimize( norm(A*x-b,Inf) );
cvx_end
(verificação exemplo página 12 do manual de )
Existe uma implementação Python do CVX ( aqui ), mas os comandos são um pouco diferentes ...
A resposta do @ cardinal é bem declarada e foi aceita, mas, para fechar completamente esse segmento, vou oferecer o seguinte: As bibliotecas numéricas do IMSL contêm uma rotina para executar a regressão da norma L-infinito. A rotina está disponível em Fortran, C, Java, C # e Python. Eu usei as versões C e Python para as quais o método é chamado lnorm_regression, que também suporta regressão geral -norm, .
Observe que essas são bibliotecas comerciais, mas as versões do Python são gratuitas (como na cerveja) para uso não comercial.