GLMNET o LARS per il calcolo delle soluzioni LASSO?


13

Vorrei ottenere i coefficienti per il problema LASSO

||YXβ||+λ||β||1.

Il problema è che le funzioni glmnet e lars danno risposte diverse. Per la funzione glmnet chiedo i coefficienti di λ/||Y||invece di solo λ , ma ho ancora risposte diverse.

È previsto? Qual è la relazione tra lars e glmnet λλλ ? Capisco che glmnet è più veloce per i problemi di LASSO ma vorrei sapere quale metodo è più potente?


deps_stats Temo che le dimensioni del mio set di dati siano così grandi che LARS non sia in grado di gestirlo, mentre glmnet può invece gestire il mio set di dati di grandi dimensioni.

mpiktas Voglio trovare la soluzione di (Y-Xb) ^ 2 + L \ sum | b_j | ma quando chiedo ai due algoritmi (lars e glmnet) i loro coefficienti calcolati per quella particolare L, ottengo risposte diverse ... e mi chiedo che sia corretto / previsto? o sto solo usando un lambda sbagliato per le due funzioni.


1
Fornisci un esempio che illustri il tuo problema. Inoltre, come si definisce la potenza dell'algoritmo?
mpiktas,

1
Ho usato i pacchetti glmnet e lars in un paio di progetti. Nella mia esperienza limitata ho avuto MOLTI problemi nell'implementazione di glmnet. Penso che glmnet abbia bisogno di alcune correzioni di bug riguardanti il ​​tipo di variabili utilizzate nel frame di dati. Inoltre, glmnet ha una documentazione confusa. Ho finito per usare Lars e sono rimasto molto soddisfatto dei risultati. Non importa la dimensione del tuo problema, penso che Lars possa gestirlo.
deps_stats,

"Il problema è che le funzioni glmnet e lars danno risposte diverse." Ho lo stesso problema. Qualche risposta?
concedi il

Risposte drasticamente diverse per i coefficienti? E proprio dalla lettura del post originale, non dovresti davvero chiedere una singola soluzione lambda da glmnete probabilmente nemmeno da un'implementazione LARS. Forniscono una vasta gamma di soluzioni lungo lo spettro della distorsione rispetto alla varianza. Il che rende difficile confrontare i coefficienti effettivi. Tuttavia, le stesse variabili dovrebbero probabilmente diventare diverse da zero in un ordine simile.
Shea Parkes,

Risposte:


14

Nella mia esperienza, LARS è più veloce per piccoli problemi, problemi molto sparsi o problemi molto "ampi" (molte più funzioni rispetto ai campioni). Infatti, il suo costo di calcolo è limitato dal numero di funzionalità selezionate, se non si calcola l'intero percorso di regolarizzazione. D'altra parte, per grossi problemi, glmnet (ottimizzazione della discesa delle coordinate) è più veloce. Tra le altre cose, la discesa delle coordinate ha un buon modello di accesso ai dati (compatibile con la memoria) e può beneficiare della ridondanza dei dati su set di dati molto grandi, poiché converge con adattamenti parziali. In particolare, non soffre di set di dati fortemente correlati.

La conclusione che noi (i principali sviluppatori del scikit-learn ) è arrivata è che, se non si dispone di una forte conoscenza a priori dei propri dati, è preferibile utilizzare glmnet (o coordinare l'ottimizzazione della discesa, per parlare piuttosto di un algoritmo di un'implementazione).

Parametri interessanti possono essere confrontati nella tesi di Julien Mairal:

http://www.di.ens.fr/~mairal/resources/pdf/phd_thesis.pdf

Sezione 1.4, in particolare 1.4.5 (pagina 22)

Julien giunge a conclusioni leggermente diverse, sebbene la sua analisi del problema sia simile. Sospetto che ciò sia dovuto al fatto che era molto interessato a problemi molto ampi.


La maggior parte delle tue risposte sono fatte in CW (qui, ma anche su metaoptimize.com/qa) ... Qual è il motivo?
chl,

1
Perché penso che sia positivo se le persone possono correggere errori di battitura, formulazioni errate ... Mi piace l'idea di miglioramenti continui delle risposte. Questo è contro le migliori pratiche?
Gael Varoquaux,

2
Ho risolto due o tre errori di battitura di passaggio. Niente a che vedere con CW in sé, a meno che tu non stia pensando al rappresentante inferiore necessario per modificare il tuo post! Gli utenti possono comunque suggerire eventuali modifiche; ma fare la tua risposta in CW non ti permetterà di guadagnare rep da loro. Immagino che tu non stia cercando un rappresentante, ma dato che le tue risposte erano sempre ben espresse, mi stavo solo chiedendo ... Cin cin.
chl,

1

LASSO non è unico nel caso in cui più funzionalità abbiano una perfetta collinearità. Ecco un semplice esperimento mentale per dimostrarlo.

yx1x2yx1x2yx1x2β1=1Pβ2=0Pβ1=0β21P


2
@dsmcha, mi dispiace dirlo, ma non credo che mi piaccia troppo quell'esempio. La risposta è identica a due dei predittori? Questo va oltre la patologia, secondo me.
cardinale l'

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.