Existe algum pacote de software para resolver a regressão linear com o objetivo de minimizar a norma L-infinito.
regression
Fan Zhang
fonte
fonte
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 pory=(yi)∈Rn X∈Rn×p i xi β∈Rp f(β)=∥y−Xβ∥∞ β
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.f
Relação com a (variação total) da regressão linearℓ1
É 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ℓ1 g(β)=∥y−Xβ∥1
Observe aqui que agora é um vetor de comprimento vez de um escalar, como no caso .t n ℓ∞
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.
fonte
O Malab pode fazer isso usando o cvx. para obter o cvx (gratuito):
http://cvxr.com/cvx/download/
No cvx, você escreveria desta maneira:
(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 ...
fonte
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, .Lp p>=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.
fonte