LARS vs koordinate descent untuk laso

13

Apa pro dan kontra dari menggunakan LARS [1] dibandingkan menggunakan penurunan koordinat untuk menyesuaikan regresi linier yang diatur L1?

Saya terutama tertarik pada aspek kinerja (masalah saya cenderung ada Ndalam ratusan ribu dan p<20.) Namun, wawasan lainnya juga akan dihargai.

sunting: Karena saya telah memposting pertanyaan, chl telah dengan ramah menunjukkan makalah [2] oleh Friedman et al di mana keturunan koordinat terbukti jauh lebih cepat daripada metode lain. Jika itu masalahnya, haruskah saya sebagai seorang praktisi melupakan LAR yang mendukung penurunan koordinat?

[1] Efron, Bradley; Hastie, Trevor; Johnstone, Iain dan Tibshirani, Robert (2004). "Regresi Sudut Paling Sedikit". Annals of Statistics 32 (2): hlm. 407-499.
[2] Jerome H. Friedman, Trevor Hastie, Rob Tibshirani, "Jalur Regulasi untuk Model Linear Umum melalui Koordinat Keturunan", Jurnal Perangkat Lunak Statistik, Vol. 33, Edisi 1, Februari 2010.
NPE
sumber

Jawaban:

13

Dalam scikit-pelajari implementasi Lasso dengan penurunan koordinat cenderung lebih cepat daripada implementasi LARS kami meskipun untuk p kecil (seperti dalam kasus Anda) mereka kira-kira setara (LARS bahkan mungkin sedikit lebih cepat dengan optimasi terbaru yang tersedia di master repo). Lebih jauh lagi, mengoordinasikan penurunan memungkinkan untuk implementasi yang efisien dari masalah jaring elastis yang diatur. Ini bukan kasus untuk LARS (yang memecahkan hanya Lasso, alias L1 masalah yang dihukum).

Penalti Net elastis cenderung menghasilkan generalisasi yang lebih baik daripada Lasso (lebih dekat ke solusi regresi ridge) sambil menjaga fitur penginduksian Lasso yang sparsity bagus (pemilihan fitur yang diawasi).

Untuk N besar (dan p besar, jarang atau tidak) Anda mungkin juga memberikan keturunan gradien stokastik (dengan L1 atau penalti net elastis) mencoba (juga diterapkan dalam scikit-learning).

Sunting : berikut adalah beberapa tolok ukur yang membandingkan LassoLARS dan implementasi penurunan koordinat dalam scikit-learn

ogrisel
sumber
(+1) @ogrisel Terima kasih banyak! Karena saya mungkin akhirnya harus membuat kode ini sendiri (membutuhkannya di Java, dan belum melihat implementasi Java open-source), algoritma mana yang menurut Anda lebih mudah diimplementasikan?
NPE
1
baik keturunan koordinat dan SGD mudah diimplementasikan (lihat halaman web Leon Bottou untuk intro yang bagus untuk SGD). LARS mungkin lebih sulit untuk diperbaiki.
ogrisel
Luar biasa, terima kasih! Saya akan memeriksa situs Léon Bottou.
NPE
@ogrisel (+1) Senang bertemu Anda di sana.
chl
2
@aix Saya telah mengedit jawaban saya untuk menambahkan beberapa tolok ukur pada implementasi saat ini di scikit-learn. Juga checkout versi liblinear java sebelum mengimplementasikan penurunan koordinat Anda sendiri karena mungkin cukup baik untuk Anda (meskipun Anda tidak dapat memiliki kedua reg L1 dan L2 secara bersamaan).
ogrisel