glmnet 로지스틱 회귀 분석은 더미 변수없이 요인 (범주) 변수를 직접 처리 할 수 ​​있습니까? [닫은]


15

나는 기능 LASSO 방법을 사용하여 R에 로지스틱 회귀 분석을 짓고 있어요 cv.glmnet을 선택 lambda하고 glmnet최종 모델.

자동 모델 선택과 관련된 모든 단점을 이미 알고 있지만 어쨌든해야합니다.

내 문제는 모델에 요인 (범주) 변수를 포함시켜야한다는 것입니다. 많은 더미 변수를 만들지 않고 그것을 할 수있는 방법이 있습니까? 이 변수는 거의 모든 문자열이며 숫자가 아닙니다.


2
나는 이것에 대해 가장 좋은 방법이 궁금합니다.
산림 생태 학자

답변:


26

glmnet은 요인을 직접 취할 수 없으므로 요인 변수를 인형으로 변환해야합니다. 예를 들어 model.matrix를 사용하는 간단한 단계는 다음과 같습니다.

x_train <- model.matrix( ~ .-1, train[,features])
lm = cv.glmnet(x=x_train,y = as.factor(train$y), intercept=FALSE ,family =   "binomial", alpha=1, nfolds=7)
best_lambda <- lm$lambda[which.min(lm$cvm)]

alpha = 1은 LASSO를 빌드합니다.


1
+1 좋은 답변입니다! 왜 당신이나 다른 사람이 intercept = FALSE를 사용하는지 물어봐도 될까요?
Erosennin 2012 년

두 가지 범주 형 변수가있는 경우 실패한 것 같습니다. var1에 L1 수준이 있으면 L1 열이 올바르게 표시되지만 var2 (L2 수준이있는) L2-1 열은 올바르게 표시됩니다.
피터 스트라 카

@Peter Straka : 모든 레코드에 대해 sum (var1의 경우 L1 인형 이상) = 1, 모든 레코드의 경우 sum (V2의 경우 L2 인형 이상) = 1이므로 var1의 L1 인형과 var2의 L2 인형은 선형으로 종속됩니다. var2에 대한 인형 L2 인형 중 하나 이상이 중복됩니다 (선형 모델을 구축하기 위해).
VictorZurkowski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.