태그 보관물: lasso

lasso

LASSO 모델에 ILS (Iteratively Reweighted Least Squares) 방법을 적용하는 방법은 무엇입니까? 싶습니다 . 각 반복에서 다음이 해결됩니다. (XTWX)δβ^=XT(y−p)(XTWX)δβ^=XT(y−p)\mathbf{\left(X^TWX\right) \delta\hat\beta=X^T\left(y-p\right)} 하자

IRLS 알고리즘을 사용하여 로지스틱 회귀를 프로그래밍했습니다 . 올바른 기능을 자동으로 선택하기 위해 LASSO 처벌 을 적용하고 싶습니다 . 각 반복에서 다음이 해결됩니다.

(XTWX)δβ^=XT(yp)

하자 음수가 아닌 실수합니다. 나는 The Elements of 에서 제안한 것처럼 요격을 처벌하지 않습니다 . 통계 학습 . 이미 0의 계수에 대한 차이. 그렇지 않으면 오른쪽에서 용어를 뺍니다.

λ

XT(yp)λ×sign(β^)

그러나 IRLS 알고리즘의 수정이 확실하지 않습니다. 올바른 방법입니까?


편집 : 그것에 대해 확신하지 못했지만 여기에 마침내 생각해 낸 해결책 중 하나가 있습니다. 흥미로운 점은이 솔루션이 현재 LASSO에 대해 이해하고있는 것입니다. 각 반복마다 실제로 한 단계가 아닌 단계 가 있습니다 .

  • 첫 번째 단계는 이전과 동일합니다. 알고리즘을 반복 합니다 (위의 기울기 공식에서 것처럼).
    λ=0

  • 두 번째 단계는 새로운 단계입니다. 첫 번째 단계에서 얻은 벡터 각 구성 요소에 소프트 임계 값을 적용합니다 ( 에 해당하는 구성 요소 제외 ) . 이것을 반복 소프트 임계 값 알고리즘이라고 합니다.
    β0

    β

i1,βisign(βi)×max(0,|βi|λ)



답변

이 문제는 일반적으로 좌표 하강에 의해 적합하게 해결됩니다 ( 여기 참조 ). 이 방법은 수치 적으로보다 안전하고 알고리즘 적으로 구현하기가 더 쉽고 일반적인 모델 배열 (Cox 회귀 포함)에 적용 할 수 있습니다. R 구현은 R 패키지 glmnet 에서 사용 가능합니다 . 코드는 오픈 소스 (부분적으로 C로, 부분적으로 R로)이므로 청사진으로 사용할 수 있습니다.


답변

LASSO 손실 함수는 각 축을 따라 0에서 불연속성을 가지므로 IRLS에 문제가 있습니다. 순차 최소 최적화 (SMO) 유형 접근 방식이 매우 효과적이라는 것을 알았습니다.

http://bioinformatics.oxfordjournals.org/content/19/17/2246

MATLAB 소프트웨어가 포함 된 버전은

http://bioinformatics.oxfordjournals.org/content/22/19/2348

소프트웨어는 여기에 있습니다 :

http://theoval.cmp.uea.ac.uk/~gcc/cbl/blogreg/

기본 아이디어는 계수를 한 번에 하나씩 최적화하고 한 번에 한 계수 씩 불연속을 교차하는지 테스트하여 스칼라 최적화를 수행 할 때 쉽게 수행 할 수 있습니다. 느리게 들릴지 모르지만 실제로는 매우 효율적입니다. (그 이후로 더 나은 알고리즘이 개발되었을 것으로 예상하지만, Keerthi 또는 Chih-Jen Lin이 아마도 그런 종류의 전문가입니다.)


답변

LASSO에 대한 IRLS 기반 알고리즘 인 효율적인 L1 정규화 된 로지스틱 회귀 분석을 확인할 수 있습니다. 구현과 관련하여 링크가 유용 할 수 있습니다 (http://ai.stanford.edu/~silee/softwares/irlslars.htm).


답변

LASSO 문제에 대한 IRLS는 다음과 같습니다.

argminx12Axb22+λx1=argminx12Axb22+λxTWx

여기서 대각 행렬 – .
이것은 에서 온다 .

W

Wi,i=1|xi|


x1=i|xi|=ixi2|xi|

위의 내용은 Tikhonov Regularization 입니다.
이후 그러나, 에 따라 하나 반복적으로 해결한다 (또한 이것의 유도체, 노프 정규화 (regularization)의 2 인자가 취소 에 대해서 채 상수 것은 는 와 같습니다 ) :

W

x

xTWx

x

x

diag(sign(x))

Wx

xk+1=(ATA+λWk)1ATb

여기서 .

Wi,iK=1|xik|

초기화 할 수 있습니다 .

W=I

이 값은 의 큰 값에는 적합하지 않으므로 ADMM 또는 Coordinate Descent를 사용하는 것이 좋습니다.

λ


답변