Путь лассо [linear_model.lars_path(model = 'lasso')]

Я запутался в поведении пути лассо при беге linear_model.lars_path(модель = 'лассо') в научном.

Я думал, что как только вес (коэффициент) становится активным (разница от 0), он должен оставаться активным на всех последующих этапах алгоритма LARS.

Запустив алгоритм на моих данных, я заметил, что иногда коэффициент становится активным, а затем он становится равным нулю (удаляется из активного набора). Это правильное поведение алгоритма LARS или может быть ошибка в реализации scikit-learn?

1 ответ

Это правильное поведение для L1-регуляризованной версии LARS (а L1-регуляризованная регрессия обычно известна как "лассо").

В версии L1, если шаг по пути LARS приводит к тому, что знак корреляции столбца матрицы данных с остатком будет отличаться от знака соответствующего коэффициента регрессии (например, sgn(x_i^\top(y-X\beta)) != sgn(\beta_i)), то этот столбец / коэффициент будет удален из активного пути. (Вы можете найти оригинальное описание в статье 2003 года "Регрессия наименьшего угла" Эфрона и др.)

Напротив, активный набор растет на каждой итерации в L0-регуляризованной версии LARS.

Другие вопросы по тегам