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.


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.


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


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.


Infelizmente, o link não funciona mais. Você poderia atualizá-lo?
COOLSerdash
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.