2013-02-05 78 views
1

在scikit-learn中運行linear_model.lars_path(model ='lasso')時,我對套索路徑的行爲感到困惑。套索路徑[linear_model.lars_path(model ='lasso')]

我認爲一旦權重(係數)變爲活動(從0開始),它必須在LARS算法的所有即將到來的步驟中保持活動狀態。

在我的數據上運行該算法時,我注意到有時係數會變爲活動狀態,然後它會變爲零(從活動集中刪除)。這是LARS算法的正確行爲,還是scikit-learn實現中可能存在錯誤?

+1

是的,這是可能的。也許看看「統計學習元素」一書,瞭解線性模型中路徑算法的更多細節。 –

回答

0

這是LARS L1正則化版本的正確行爲(並且L1正則化迴歸通常被稱爲「套索」)。

在L1版本中,如果沿着LARS路徑的一個步驟導致數據矩陣的列與殘差的相關符號不同於相應的迴歸係數的符號(例如sgn(x_i^\top(y-X\beta)) != sgn(\beta_i)),那麼這列/係數將從活動路徑中刪除。 (您可以在Efron等人的2003年論文「Least Angle Regression」中找到原始描述)

相比之下,活動集在L0S正規化版本的LARS的每次迭代中增長。