Pacote de software para resolver a regressão linear da norma L-infinito

10

Existe algum pacote de software para resolver a regressão linear com o objetivo de minimizar a norma L-infinito.

Fan Zhang
fonte
Bem, qualquer pacote de programação linear funcionaria. Isso deixa você com muitas opções. :)
cardeal
11
@ Cardinal Como você reformularia isso como um programa linear? Não é evidente como fazer isso, mesmo em casos triviais (como dois pontos de dados e um parâmetro): não há restrições e a função objetivo não é linear.
whuber
Frase-chave : aproximação Chebyshev. (Mais a seguir A ideia é. Introduzir uma variável extra, então virar objetivo para as restrições.)
cardeal
@ cardinal Você quer dizer este: mathworld.wolfram.com/ChebyshevApproximationFormula.html Parece bastante complicado.
Fan Zhang
Bem, é um pouco relacionado, mas não relevante para esse problema. Seu problema pode ser resolvido com um simples LP. Assim que puder acessar o computador, postarei uma resposta.
cardeal

Respostas:

17

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 y=(yi)RnXRn×pixiβRpf(β)=yXββ

f=f(β)=inf{f(β):βRp}.

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,

f=inf{t:f(β)t,tR,βRp}.

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.f

f=inf{t:tyixiβt,tR,βRp,1in},
minimizetsubject toyXβt1nyXβt1n,
(β,t)1nn

Relação com a (variação total) da regressão linear1

É 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 1g(β)=yXβ1

g=inf{tT1n:tiyixiβti,t=(ti)Rn,βRp,1in},
minimizetT1nsubject toyXβtyXβt.

Observe aqui que agora é um vetor de comprimento vez de um escalar, como no caso .tn

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.

cardeal
fonte
Como você encontraria alguma medida de precisão para os parâmetros e / ou previsões? Eu pergunto por causa da seguinte pergunta recente: mathematica.stackexchange.com/questions/214226/… .
JimB 6/02
3

O Malab pode fazer isso usando o cvx. para obter o cvx (gratuito):

http://cvxr.com/cvx/download/

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 ...

user603
fonte
1

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, .Lpp>=1

Observe que essas são bibliotecas comerciais, mas as versões do Python são gratuitas (como na cerveja) para uso não comercial.

Josh Hemann
fonte
Infelizmente, o link não funciona mais. Você poderia atualizá-lo?
COOLSerdash