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)∈RnX∈Rn×pixiβ∈Rpf(β)=‖y−Xβ‖∞β

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,t∈R,β∈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:−t≤yi−xiβ≤t,t∈R,β∈Rp,1≤i≤n},
ℓ∞
minimizetsubject toy−Xβ≤t1ny−Xβ≥−t1n,
(β,t)1nn

Relazione con la versione (variazione totale) della regressione lineareℓ1

È 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(β)=‖y−Xβ‖1

g⋆=inf{tT1n:−ti≤yi−xiβ≤ti,t=(ti)∈Rn,β∈Rp,1≤i≤n},
minimizetT1nsubject toy−Xβ≤ty−Xβ≥−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.