2013-02-05 3 views
1

scikit-learn에서 linear_model.lars_path (model = 'lasso')을 실행할 때 올가미 경로의 동작에 대해 혼동스러워합니다.올가미 경로 [linear_model.lars_path (model = 'lasso')]

일단 가중치 (계수)가 활성화되면 (0에서 diff) LARS 알고리즘의 모든 향후 단계에서 활성 상태를 유지해야한다고 생각했습니다.

내 데이터에서 알고리즘을 실행할 때 계수가 활성화되어 나중에 나중에 0으로 갈 것임을 알았습니다 (활성 집합에서 제거됨). 이것은 LARS 알고리즘의 올바른 동작입니까? 아니면 scikit-learn 구현에 버그가있을 수 있습니까?

+1

예, 가능합니다. 선형 모델의 경로 알고리즘에 대한 자세한 내용은 통계 학습의 요소 (Elements of Statistical Learning)를 참조하십시오. –

답변

0

이것은 L1 정규화 버전의 LARS (그리고 L1 정규화 회귀는 일반적으로 "올가미"라고도 함)의 올바른 동작입니다.

L1 버전에서 LARS 경로의 단계가 잔차가있는 데이터 행렬의 상관 관계 기호가 해당 회귀 계수 (예 : sgn(x_i^\top(y-X\beta)) != sgn(\beta_i))의 부호와 다른 경우이 열/계수가 활성 경로에서 제거됩니다. (원래의 설명은 Efron 외의 2003 년 논문 "최소 각 회귀"에서 찾을 수 있습니다.)

대조적으로 활성 집합은 L0 정규화 버전의 각 반복마다 커집니다.