GLMNET или LARS для вычисления решений LASSO?


13

Я хотел бы получить коэффициенты для задачи LASSO

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

Проблема в том, что функции glmnet и lars дают разные ответы. Для функции glmnet я спрашиваю коэффициенты вместо просто λ , но я все еще получаю разные ответы.λ/||Y||λ

Это ожидается? Какова связь между ларами и glmnet λ ? Я понимаю, что glmnet быстрее для проблем LASSO, но я хотел бы знать, какой метод является более мощным?λλ


deps_stats Я боюсь, что размер моего набора данных настолько велик, что LARS не может с ним справиться, тогда как glmnet может обрабатывать мой большой набор данных.

mpiktas Я хочу найти решение (Y-Xb) ^ 2 + L \ sum | b_j | но когда я спрашиваю у двух алгоритмов (lars & glmnet) их рассчитанные коэффициенты для этого конкретного L, я получаю разные ответы ... и мне интересно, правильно ли это / ожидаемо? или я просто использую неправильную лямбду для двух функций.


1
пожалуйста, приведите пример, иллюстрирующий вашу проблему. Также, как вы определяете мощность алгоритма?
mpiktas

1
Я использовал пакеты glmnet и lars в нескольких проектах. В моем ограниченном опыте у меня было много проблем с внедрением glmnet. Я думаю, что glmnet нуждается в некоторых исправлениях ошибок относительно типа переменных, используемых во фрейме данных. Кроме того, у glmnet есть запутанная документация. В итоге я использовал lars, и я был очень доволен результатами. Не обращайте внимания на размер вашей проблемы, я думаю, что Ларс справится с этим.
deps_stats

«Проблема в том, что функции glmnet и lars дают разные ответы». У меня точно такая же проблема. Есть ответы?
Грант

Решительно разные ответы для коэффициентов? И просто прочитав оригинальную статью, вы действительно не должны просить об одном лямбда-решении glmnetи, скорее всего, не о реализации LARS. Они предоставляют целый ряд решений по спектру смещения против дисперсии. Что затрудняет сравнение фактических коэффициентов. Но все же, те же самые переменные, вероятно, должны стать ненулевыми в аналогичном порядке.
Shea Parkes

Ответы:


14

По моему опыту, LARS быстрее для небольших проблем, очень редких проблем или очень «широких» проблем (гораздо больше функций, чем образцов). Действительно, его вычислительная стоимость ограничена количеством выбранных функций, если вы не вычислите полный путь регуляризации. С другой стороны, для больших задач glmnet (оптимизация спуска координат) работает быстрее. Среди прочего, у координатного спуска есть хороший шаблон доступа к данным (дружественный памяти), и он может выиграть от избыточности данных в очень больших наборах данных, так как он сходится с частичным совпадением. В частности, он не страдает от сильно коррелированных наборов данных.

Мы пришли к выводу, что мы (основные разработчики scikit-learn ) пришли к следующему выводу: если у вас нет априорных знаний о ваших данных, вам лучше использовать glmnet (или координировать оптимизацию спуска, чтобы скорее говорить об алгоритме) чем реализация).

Интересные ориентиры можно сравнить в диссертации Жюльена Майрала:

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

Раздел 1.4, в частности 1.4.5 (стр. 22)

Жюльен приходит к несколько иным выводам, хотя его анализ проблемы схож. Я подозреваю, что это потому, что его очень интересовали очень широкие проблемы.


Большинство ваших ответов сделаны CW (здесь, но также и на metaoptimize.com/qa) ... Любая причина, почему?
ЧЛ

1
Потому что я думаю, что это хорошо, если люди могут исправить опечатки, неправильные формулировки ... Мне нравится идея постоянного улучшения ответов. Это против лучшей практики?
Gael Varoquaux

2
Я исправил две или три опечатки мимоходом. Ничего общего с CW как таковым, если только вы не думаете о более низкой репутации, необходимой для редактирования вашего поста! Пользователи могут предложить любые изменения, хотя; но ваш ответ CW не позволит вам заработать репутацию на них. Я думаю, что вы не после представителя, но так как ваши ответы всегда были хорошо сформулированы, мне просто интересно ... Ура.
ЧЛ

1

LASSO не является уникальным в том случае, когда несколько элементов имеют идеальную коллинеарность. Вот простой мысленный эксперимент, чтобы доказать это.

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


2
@dsmcha, извините, но я не думаю, что мне слишком нравится этот пример. Ответ идентичен двум предикторам? Это вне патологии, на мой взгляд.
кардинал

1

Ларс и Glmnet предлагают разные решения для проблемы Лассо, так как они используют несколько разные целевые функции и разные стандартизации данных. Вы можете найти подробный код для воспроизведения в соответствующем вопросе. Почему Lars и Glmnet предлагают разные решения для проблемы Лассо?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.