Путь лассо [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.