로지스틱 회귀 하위 집합 선택을 수행하는 방법은 무엇입니까?


47

나는 R에 이항 가족 glm을 피팅하고 있으며 설명 변수의 전체 그룹을 가지고 있으며 가장 좋은 것을 찾아야합니다 (측정 값이 R의 제곱이 좋습니다). 설명 변수의 임의의 다른 조합을 반복하는 스크립트를 작성하고 최상의 성능을 기록하는 기록이 부족하여 실제로 무엇을 해야할지 모르겠습니다. 그리고 leaps패키지 도약 의 기능 은 로지스틱 회귀를 수행하지 않는 것 같습니다.

어떤 도움이나 제안이라도 대단히 감사하겠습니다.


자동 검색을 수행하는 기능이 있습니다. step 함수를 살펴 봐야 합니다. 섹션 5.4는 그 점을 보여줍니다. data.princeton.edu/R/glms.html
ocram

죄송하지만 게시물이 더 이상 내 질문을하지 않도록 편집되었습니다. 로지스틱 회귀 모형에 35 개의 유의미한 설명 변수가 있습니다. 최고의 하위 집합이 아닌 8의 가능한 최상의 조합이 필요하며 어느 시점에서든 모든 하위 집합 스타일 접근 방식에 관심이 없었습니다. 이 8에는 흔들림이 없습니다. 방금 누군가 8 가지 외식 변수의 모든 조합을 어떻게 맞출 수 있는지 알았을 가능성이 가장 높을 가능성을 알 수 있습니다 (R 제곱 뇌 방광에 대해서는 죄송하지만 AIC는 관련이 없습니다. 고정 된 수의 매개 변수가 있습니다 .8).
Leendert

게시물의 이전 버전으로 되돌 리거나 두 수정 사항을 결합 할 수 있습니다. @mpiktas가 외관을 개선하려고 할 때 좋은 의도를 가지고 있었고 No. 매개 변수를 보지 못했습니다.
chl

@ 모두 : 대단히 감사합니다. 결국 나는 그들이 비슷한 답변을 줄 것이라는 희망에 많은 다른 것을 사용했습니다. 그리고 그들은했다. BMA, bestglm 및 glmnet 패키지와 단계 기능을 사용했습니다. maxcol = 9의 BMA와 단계가 최고의 모델로 간주되는 것과 일치하는 모델이 모두 있습니다. 내 주변 분야의 모든 전문가들은 변수에 매우 만족스러워 보였고 매우 진보적이라고 생각했습니다. 모든 입력에 감사드립니다. 정말 다 사용 했어요
Leendert

glmulti는 또한 최상의 부분 집합 선택을위한 훌륭한 패키지이며 모델에서 변수의 최대 nr을 지정할 수 있으며 가능한 모든 1 차 상호 작용 효과를 고려할 수도 있습니다
Tom Wenseleers

답변:


28

단계적 방법과 "모든 부분 집합"방법은 일반적으로 나쁩니다. Stepwise 중지 방법 : Stepwise 방법이 나쁜 이유 및 David Cassell과 본인이 직접 사용해야하는 내용 (SAS를 사용했지만 교훈이 적용됨) 또는 Frank Harrell Regression Modeling Strategies를 참조하십시오. 자동 방법이 필요한 경우 LASSO 또는 LAR을 권장합니다. 로지스틱 회귀 분석을위한 LASSO 패키지가 여기에 있으며, 또 다른 흥미로운 기사는 로지스틱을위한 반복 된 LASSO에 있습니다.


6
(+1) R 패키지에 대해서는 glmnet (좌표 강등 알고리즘으로 구현, Friedman 및 coll.)이 있고 불이익을받습니다 (일부 종류를 미박 할 수 있음). 참고로, F. Harrell은 GLM에 대해 처벌 된 ML 추정을 제공합니다 (자세한 내용은 lrmRMS 교과서 참조 ).
chl

(+1) 좋은 기사입니다. 문제의 저자 국가를 넘어서서 시작해야 할 것 같습니다. @chl (+1) 완벽한 대안 제안.
Dmitrij Celov

@chl : glmnet의 경우 +1, 훌륭한 패키지입니다.
Zach

1
@chl 감사합니다! R의 문제점 중 하나는 패키지를 추적하는 것입니다 (많은 것들이 있습니다!). 작업보기가 도움이됩니다
Peter Flom-Monica Monica 복원

2
변수가 공선 형인 경우 LASSO가 모델에서 공 선형 변수를 임의로 추출하는 경향이 있으므로 알파 = 0.5와 같이 glmnet을 사용하여 탄성 그물을 사용하는 것이 가장 좋습니다.
Tom

15

R2AICBIC

로지스틱 회귀는 최대 우도 방법으로 추정되므로 leaps여기서 직접 사용되지는 않습니다. 의 확장 leaps으로 glm()기능이있다 bestglm의 (일반적으로 권고는 다음과 같이이 네트를 참조) 패키지로 제공된다.

David W. Hosmer, Borko Jovanovic 및 Stanley Lemeshow Best Subsets Logistic Regression // Biometrics Vol. 의 기사에 관심이있을 수도 있습니다 . 45, No. 4 (1989 년 12 월), pp. 1265-1270 (일반적으로 대학 네트워크를 통해 액세스 가능).


2
R2BIC,AIC8BICAICR2

8

R2R2 is not an appropriate goodness-of-fit measure for logistic regression take an information criterion AICAIC or BICBIC
SIslam

에 참고 bestglm, 그것을 사용하여 leaps계산 백엔드에서! 따라서 데이터 세트에 NA가 있으면 실패하고 다음과 같은 메시지가 나타납니다. Error in leaps.setup(x, y, wt = weights, nbest = nbest, nvmax = nvmax, : NA/NaN/Inf in foreign function call (arg 3) 그러나 흥미로운 것은 내 데이터 세트에는 NA가 없지만이 함수가 불평하지만 정확히 위의 메시지를 제공합니다!
SIslam

glmnet은 또한 좋은 것이며, 가능한 모든 1 차 상호 작용 효과를 고려한 모델을 수행 할 수 있습니다
Tom Wenseleers

6

한 가지 아이디어는 임의의 포리스트를 사용한 다음 출력되는 변수 중요도 측정을 사용하여 최상의 8 개의 변수를 선택하는 것입니다. 또 다른 아이디어는 "boruta"패키지를 사용하여이 과정을 몇 백 번 반복하여 모델에 가장 중요한 8 개의 변수를 찾는 것입니다.


@Zach RF를 사용하여 기능 선택을 수행 한 다음 GLM을 적용 (이 경우 과적 합 또는 과다 낙관의 위험이 있음) 또는 RF (표준 중요도 측정 기준)를 사용하는 것이 좋습니다 독립형 도구)?
chl

@chl : RF를 사용하여 기능 선택을 수행 한 다음 GLM을 적용하는 것이 좋습니다. 과잉 적합 위험에 동의하지만 OP는 정확히 8 개의 변수가 필요하다고 말했습니다.
Zach

1
@Zach "정확하게 8 개의 변수"... 그런 다음 변수 중요도 측정 (기초와 이중 리샘플링을 기반으로하기 때문에 바이어스가 없어야 함)을 기준으로 잠재적 인 잠재적 변수를 약간 소프트 임계 값으로 사용합니다. 그런 다음 GLM에 다시 주입하십시오. IMHO, 당신은 bagging을 통해 과잉 피팅에 대한 통제력을 상실합니다. 이것은 또한 Hastie et al.의 ESLII에 설명되어 있습니다 : 기능 선택은 교차 검증 절차에 포함되어야합니다 (여기서 교차 검증에는 모델 성능 평가가 포함됩니다).
chl

@chl : 임의의 포리스트를 여러 번 실행하여 r 패키지 "boruta"가 교차 유효성 검사를하지 않습니까? 기본적으로 "메타 크로스 밸리데이션 (meta-cross-validation)"이 필요합니다. 여기서 변수 선택을 수행하고 데이터의 임의의 서브 세트에 모델을 맞 춥니 다.
Zach

3
@Zach 내 요점은 동일한 툴체인에 머물러 있으면 배깅 또는 특히 RF가 과도하게 맞지 않도록하는 것입니다. RF의 결과를 사용한 다음 다른 모델이 동일한 데이터로 어떻게 수행되는지 확인하면 CV 루프가 중단됩니다. 그러나 분류에 직접 RF를 사용하지 않는 이유는 무엇입니까? 또 다른 해결책은 훈련 샘플에 RF를 사용한 다음 보류 된 샘플에 잠재적으로 교차 검증 될 수있는 GLM을 적용하는 것입니다.
chl

0

stats::step기능 또는 일반적인 MASS::stepAIC기능 지원 lm, glm(즉, 로지스틱 회귀 분석) 및 aov가족 모델.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.