James, Witten, Hastie, Tibshirani (2013) 의 저서 'R의 통계 학습에 대한 통계 학습 소개' 에서 Ridge Regression / Lasso에 대한 LAB 섹션 §6.6을 살펴 보겠습니다 .
보다 구체적으로, scikit-learn Ridge
모델을 R 패키지 'ISLR'의 'Hitters'데이터 세트에 적용하려고합니다 . R 코드에 표시된 것과 동일한 기능 세트를 작성했습니다. 그러나 glmnet()
모델 의 결과에 가까이 갈 수는 없습니다 . 비교할 L2 튜닝 매개 변수를 하나 선택했습니다. (scikit-learn에서 'alpha'인수).
파이썬 :
regr = Ridge(alpha=11498)
regr.fit(X, y)
http://nbviewer.ipython.org/github/JWarmenhoven/ISL-python/blob/master/Notebooks/Chapter%206.ipynb
아르 자형:
참고 인수 alpha=0
의 glmnet()
2 계층의 패널티가 적용되어야하는 수단 (릿지 회귀). 설명서에는에 단일 값을 입력하지 말 것을 경고 lambda
하지만 결과는 벡터가 사용되는 ISL과 동일합니다.
ridge.mod <- glmnet(x,y,alpha=0,lambda=11498)
차이점을 일으키는 원인은 무엇입니까?
편집 : R의 처벌 패키지에서
사용할 때 penalized()
계수는 scikit-learn과 동일합니다.
ridge.mod2 <- penalized(y,x,lambda2=11498)
아마도 릿지 회귀 분석 glmnet()
과 penalized()
릿지 회귀 분석 의 차이점은 무엇입니까 ?
R 패키지 glmnet에 사용 된 실제 포트란 코드를위한 새로운 파이썬 래퍼
https://github.com/civisanalytics/python-glmnet
sklearn.linear_model.Ridge
승인 된 인터셉트 추정 (표준)을 수행하고 위약금||Xb - y - intercept||^2 + alpha ||b||^2
은 최소화됩니다b
. 패널티 앞에는 요소1/2
또는1/n_samples
둘 다가있어 결과가 즉시 달라집니다. 페널티 스케일링 문제를 해결하려면 두 경우 모두 페널티를 0으로 설정하고 불일치를 해결 한 다음 페널티를 다시 추가하여 수행하는 작업을 확인하십시오. 그리고 btw IMHO는이 질문을하기에 적합한 곳입니다.