Pacchetto software per risolvere la regressione lineare della norma L-infinito


10

Esiste un pacchetto software per risolvere la regressione lineare con l'obiettivo di ridurre al minimo la norma L-infinito.


Bene, qualsiasi pacchetto di programmazione lineare funzionerebbe. Questo ti lascia con molte opzioni. :)
cardinale

1
@Cardinal Come lo rifonderebbe come un programma lineare? Non è evidente come farlo anche in casi banali (come due punti dati e un parametro): non ci sono vincoli e la funzione obiettivo non è lineare.
whuber

Frase chiave : approssimazione di Chebyshev. (Altre cose da seguire. L'idea è quella di introdurre una variabile aggiuntiva, quindi trasformare l'obiettivo in vincoli.)
cardinale

@cardinal Intendi questo: mathworld.wolfram.com/ChebyshevApproximationFormula.html Sembra abbastanza complicato.
Fan Zhang,

Bene, è un po 'correlato, ma non germano a questo problema. Il tuo problema può essere risolto con un semplice LP. Non appena potrò accedere a un computer, posterò una risposta.
cardinale

Risposte:


17

Risposta breve : il problema può essere formulato come un programma lineare (LP), che consente di scegliere il solutore LP preferito per l'attività. Per vedere come scrivere il problema come LP, continua a leggere.

Questo problema di minimizzazione viene spesso definito approssimazione di Chebyshev .

Lascia che , con riga indicata da e . Quindi cerchiamo di minimizzare la funzione rispetto a . Indica il valore ottimale con y=(yi)RnXRn×pixiβRpf(β)=yXββ

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

La chiave per rifondere questo come un LP è riscrivere il problema in forma epigrafica . Non è difficile convincersi che, in effetti,

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

Ora, usando la definizione della funzione , possiamo riscrivere il lato destro sopra come e quindi vediamo che minimizzare la norma in un'impostazione di regressione equivale al LP dove viene eseguita l'ottimizzazione over e indica un vettore di quelli di lunghezza . Lascio che sia un (facile) esercizio per il lettore la rifusione del precedente LP in forma standard.f

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

Relazione con la versione (variazione totale) della regressione lineare1

È interessante notare che qualcosa di molto simile può essere fatto con la norma . Lascia che . Quindi, argomenti simili portano a concludere che modo che l'LP corrispondente sia 1g(β)=yXβ1

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

Nota qui che ora è un vettore di lunghezza anziché uno scalare, come nel caso .tn

La somiglianza in questi due problemi e il fatto che entrambi possano essere espressi come LP non è certo un caso. Le due norme sono correlate in quanto sono le doppie norme l' una dell'altra.


Come troveresti una certa precisione per i parametri e / o le previsioni? Chiedo a causa della seguente domanda recente: mathematica.stackexchange.com/questions/214226/… .
JimB

3

Malab può farlo, usando cvx. per ottenere cvx (gratuito):

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

In cvx, lo scriveresti in questo modo:

cvx_begin
   variable x(n);
   minimize( norm(A*x-b,Inf) );
cvx_end

(vedi esempio pagina 12 del manuale )

C'è un'implementazione Python di CVX ( qui ) ma i comandi sono leggermente diversi ...


1

La risposta di @ cardinal è ben dichiarata ed è stata accettata, ma, per motivi di chiusura completa di questo thread, offrirò quanto segue: Le Librerie numeriche IMSL contengono una routine per eseguire la regressione della norma L-infinito. La routine è disponibile in Fortran, C, Java, C # e Python. Ho usato le versioni C e Python per il quale il metodo è lnorm_regression chiamata, che supporta anche generale regressione -norm, .Lpp>=1

Si noti che si tratta di librerie commerciali ma le versioni di Python sono gratuite (come nella birra) per uso non commerciale.


Sfortunatamente, il collegamento non funziona più. Potresti aggiornarlo?
COOLSerdash
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.