cv.glmnet
예측 변수를 찾는 데 사용 하고 있습니다. 내가 사용하는 설정은 다음과 같습니다.
lassoResults<-cv.glmnet(x=countDiffs,y=responseDiffs,alpha=1,nfolds=cvfold)
bestlambda<-lassoResults$lambda.min
results<-predict(lassoResults,s=bestlambda,type="coefficients")
choicePred<-rownames(results)[which(results !=0)]
메이크업에 확인 결과는 재현 I 있습니다 set.seed(1)
. 결과는 매우 다양합니다. 결과가 얼마나 변수인지 확인하기 위해 정확히 동일한 코드 100을 실행했습니다. 98/100 런에서 하나의 특정 예측 변수가 항상 선택되었습니다 (때로는 그 자체 만 가능합니다). 다른 예측 변수는 보통 50/100 배로 선정되었습니다 (계수는 0이 아님).
따라서 교차 검증이 실행될 때마다 폴드의 초기 무작위 화가 중요하기 때문에 아마도 다른 최상의 람다를 선택하게 될 것이라고 말합니다. 다른 사람들은이 문제 ( CV.glmnet results )를 보았지만 제안 된 해결책은 없습니다.
나는 아마도 98/100을 나타내는 것이 다른 모든 것과 매우 관련이 있다고 생각합니다. LOOCV ( fold-size = n )를 실행하면 결과 가 안정화 되지만 nfold < n 일 때 왜 그렇게 가변적인지 궁금 합니다.
set.seed(1)
한 번cv.glmnet()
100 번 실행 한다는 의미 입니까? 재현성을위한 훌륭한 방법론은 아닙니다.set.seed()
각 달리기 직전에 나아지 거나 달리기 동안 foldid를 일정하게 유지하십시오. 당신의 각 전화cv.glmnet()
는sample()
N 번 전화 입니다. 따라서 데이터 길이가 변경되면 재현성이 변경됩니다.