자동 모델 선택을위한 알고리즘


193

자동 모델 선택을위한 알고리즘을 구현하고 싶습니다. 나는 단계적 회귀를 할 생각이지만 아무것도 할 것입니다 (선형 회귀를 기반으로해야합니다).

내 문제는 방법론이나 오픈 소스 구현을 찾을 수 없다는 것입니다 (Java에서 깨우고 있습니다). 내가 생각하는 방법은 다음과 같습니다.

  1. 모든 요인의 상관 행렬을 계산
  2. 서로 관련성이 낮은 요소를 선택하십시오
  3. t-stat가 낮은 요인 제거
  4. 다른 요인을 추가하십시오 (여전히 2에서 찾은 낮은 상관 계수를 기반으로 함).
  5. 일부 기준 (예 : AIC)이 특정 임계 값을 초과하거나 더 큰 값을 찾을 수 없을 때까지 여러 번 반복하십시오.

나는 이것을 위해 R 구현 (stepAIC)이 있다는 것을 알고 있지만 코드를 이해하기가 어렵다는 것을 알았습니다. 또한 단계적 회귀를 설명하는 기사를 찾을 수 없었습니다.


72
솔직히, 나는 이것이 많은 잘못된 결론으로 ​​이어질 것이라는 비참한 생각 이라고 생각합니다 .
gung

4
@ gung : 모델 선택의 결과를 맹목적으로 따르는 것이 좋지 않다는 데 동의하지만 분석의 시작점으로 유용 할 수 있다고 생각합니다. 내 경우에는 수백 가지 요소를 사용할 수 있으며 가장 관련성이 높은 5-10을 선택하고 싶습니다. 자동 모델을 선택하지 않고 어떻게 할 수 있는지 알 수 없습니다 (나중에 수동으로 수정).
S4M

12
모든 모델 선택 절차에는 아래 답변에서 논의 할 문제가 있습니다. 또한 검색 할 수있는 가능한 요소 수가 많을수록 이러한 문제는 더욱 심각해지며 증가하는 수치는 선형이 아닙니다. 교차 검증 (@JackTanner에 의해 논의 됨)과 함께 사용해야하는 더 나은 접근법 (@Zach에 의해 논의 됨)이 있지만, t, r 및 AIC에 기반한 선택은 그 중 하나가 아닙니다. 더욱이 수백 가지 요소로 필요한 데이터의 양은 수백만에 달할 수 있습니다. 불행히도, 당신은 당신 앞에 아주 어려운 일이 있습니다.
gung

7
모델 선택의 목적은 무엇입니까? 예측 / 예측 모델이거나 중요한 변수를 찾고 있습니까? 또한 사용중인 데이터 세트의 크기는 얼마나됩니까?
chanceislogic

6
흥미로운 견해는 있지만 알고리즘 모델 선택 절차에 대한 부정적인 견해는 다소 오래된 것으로 생각합니다. 예를 들어, 계량 경제학 분야의 David Hendry의 최근 연구, 특히 PcGive 소프트웨어 및 채도 방법에 대한 그의 연구를 보자. 그의 접근 방식에 대한 개요를 제공하는 강의는 여기 에서 찾을 수 있습니다 . @MichaelChernick이 지적했듯이 (그리고 Hendry도 마찬가지입니다!), 주제 지식은 (거의) 중요합니다. 이것이 주제 전문가들에게 가치가있는 이유입니다. 알고리즘이 단독으로 작동하게하는 것은 실수입니다.
Graeme Walsh

답변:


333

나는이 접근법이 잘못되었다고 생각하지만 이유를 설명하면 더 도움이 될 것입니다. 많은 수의 변수에 대한 정보가 제공되는 최상의 모델을 알고 싶어하는 것은 이해할 만합니다. 또한 사람들이 규칙적으로 자신을 찾는 것처럼 보입니다. 또한 회귀에 관한 많은 교과서 (및 과정)에는 단계별 선택 방법이 포함되어 있으며 이는 합법적이어야 함을 의미합니다. 그러나 안타깝게도 이러한 상황과 목표의 페어링은 성공적으로 탐색하기가 매우 어렵습니다. 다음은 자동화 된 단계별 모델 선택 절차 (Frank Harrell에 귀속되고 여기 에서 복사 됨 ) 의 문제점 목록입니다 .

  1. 잘못 치우친 R 제곱 값을 산출합니다.
  2. 출력물의 각 변수 옆에 인용 된 F 및 카이 제곱 검정에는 배분 된 분포가 없습니다.
  3. 이 방법은 효과에 대한 신뢰 구간과 허위로 좁은 예측값을 산출합니다. Altman and Andersen (1989) 참조.
  4. 적절한 의미를 갖지 않는 p- 값을 산출하며, 이에 대한 올바른 교정은 어려운 문제입니다.
  5. 수축이 필요한 편향 회귀 계수를 제공합니다 (잔여 변수의 계수가 너무 큽니다. Tibshirani [1996] 참조).
  6. 공선 성이있을 경우 심각한 문제가 있습니다.
  7. 미리 지정된 가설을 테스트하기 위해 사용 된 방법 (예 : 중첩 모델에 대한 F 검정)을 기반으로합니다.
  8. 샘플 크기를 늘리는 것은별로 도움이되지 않습니다. Derksen and Keselman (1992) 참조.
  9. 문제에 대해 생각할 수 없습니다.
  10. 종이를 많이 사용합니다.

문제는 이러한 절차에서 어떤 점이 나쁜가 / 왜 이런 문제가 발생합니까? 기본 회귀 과정을 수강 한 대부분의 사람들은 회귀 개념에 대해 잘 알고 있으므로 이러한 문제를 설명하는 데 사용합니다. (이것은 처음에는 주제가 아닌 것처럼 보일 수 있지만 나와 관련이 있다고 약속합니다.)

트라이 아웃 첫날 고등학교 트랙 코치를 상상해보십시오. 30 명의 아이들이 나타납니다. 이 아이들은 코치 나 다른 사람이 직접 접근 할 수없는 몇 가지 근본적인 능력을 가지고 있습니다. 결과적으로 코치는 자신이 할 수있는 유일한 일을합니다. 시간은 아마도 그들의 본질적인 능력의 척도 일 것이며, 그렇게 취해진 다. 그러나 그것들은 확률 적이다. 누군가가 얼마나 잘하는지의 일부 비율은 실제 능력을 기반으로하고 일부 비율은 임의입니다. 실제 상황이 다음과 같다고 상상해보십시오.

set.seed(59)
intrinsic_ability = runif(30, min=9, max=10)
time = 31 - 2*intrinsic_ability + rnorm(30, mean=0, sd=.5)

첫 번째 경기 결과는 다음 그림에 어린이의 코치 의견과 함께 표시됩니다.

첫 레이스

경기 시간에 따라 아이들을 분할하면 본질적 능력이 겹치게됩니다.이 사실은 매우 중요합니다. 일부는 칭찬하고 다른 코치들은 소리를 지르며 (코치처럼) 다시 뛰게한다. 다음은 코치의 반응에 따른 두 번째 레이스의 결과입니다 (위의 동일한 모델에서 시뮬레이션 됨).

두 번째 레이스

그들의 고유 한 능력은 동일하지만 첫 번째 레이스에 비해 시간이 튀었다는 것을 주목하십시오. 코치의 관점에서, 그가 고함을 지르는 사람들은 개선하는 경향이 있었고, 그가 칭찬하는 사람들은 더 나빠지는 경향이있었습니다. 코치가 부분적으로 임의적 인 측정을 기반으로 팀의 선수를 선택한다는 사실의 결과.

이제 자동화 된 (예 : 단계적) 모델 선택 기술과 어떤 관련이 있습니까? 동일한 데이터 세트를 기반으로 모델을 개발하고 확인하는 것을 데이터 준설 이라고 합니다.. 변수들 사이에 어떤 근본적인 관계가 있고, 더 강한 관계는 더 높은 점수 (예를 들어, 더 높은 t- 통계)를 산출 할 것으로 예상되지만, 이들은 임의의 변수이고 실현 된 값은 에러를 포함한다. 따라서 더 높은 (또는 더 낮은) 실현 된 값을 기반으로 변수를 선택하면 기본 실제 값, 오류 또는 둘 다로 인해 발생할 수 있습니다. 이 방법으로 진행하면 코치가 두 번째 레이스를 마친 것처럼 놀랄 것입니다. 높은 t- 통계 또는 낮은 상관 관계를 기반으로 변수를 선택하는지 여부는 사실입니다. 사실, AIC를 사용하는 것이 p- 값을 사용하는 것보다 낫습니다. 복잡함을 위해 모델에 불이익을 주지만 AIC 자체는 무작위 변수입니다 (연구를 여러 번 실행하고 동일한 모델에 적합하면 AIC는 다른 모든 것). 운수 나쁘게,

도움이 되길 바랍니다.


43
데이터 준설에 대한 현상 적 설명.
Frank Harrell

17
선형 모델 선택의 맥락에서 aic이 p- 값 (또는 bic 또는 이와 유사한)에 대한 개선이라는 아이디어에 완전히 동의하지는 않지만 이것은 잘 생각되는 답변입니다. 형식의 aic과 같은 페널티 는 p- 값을 (입출구) 로 설정하는 것과 같습니다 . aic은 기본적으로 p- 값을 선택하는 방법을 알려줍니다. P r ( χ 2 1 > k )2L+kpPr(χ12>k)
chanceislogic

7
내 의견은 단계적 또는 유사한 알고리즘에 aic을 사용하는 것과 관련이 있습니다. 내 의견도 너무 짧았습니다. 참고 는 변수의 수이고, 는 페널티 ( bic의 경우 aic 경우 ), 은 최대화 된 로그 가능성의 두 배 음수입니다. Aic과 bic은 개념적으로 다르지만 0이 아닌 계수의 축소없이 "서브 세트"스타일 선택을 수행 할 때는 p- 값과 작동하지 않습니다. k 2 log N 2 Lpk2logN2L
chanceislogic

9
@gung-하나의 매개 변수가 다른 두 모델의 차이를 취하면 됩니다. 이제 첫 번째 항은 p- 값의 기반이되는 우도 비율 통계입니다. 따라서 우도 비 통계가 일부 컷오프보다 큰 경우 추가 매개 변수를 추가합니다. 이것은 p- 값 접근 방식과 동일합니다. 여기에는 개념적 차이 만 있습니다(2L1+2p0+2)(2L0+2p0)=2(L1L0)+2
확률 론적

2
AIC가 문제를 해결하지 못하는 이유에 대한 설명은 Mundry, R. (2011)을 참조하십시오. 정보 이론에 기반한 통계적 추론 문제 – 잦은 관점에서 논평. 행동 생태학과 사회 생물학, 65 (1), 57-68.
jank

70

R 에서 캐럿 패키지를 확인하십시오. 단계적 회귀 모델 (use 또는 ) 을 교차 검증 하는 데 도움이되고 이러한 종류의 모델이 예측 성능이 좋지 않은 경향을 이해하는 데 도움이 될 수 있습니다. 또한 캐럿 의 함수를 사용하여 공 선형 변수를 식별 및 제거하고 캐럿 의 함수를 사용하여 t 통계량이 낮은 변수를 제거 할 수 있습니다 (use ).method='lmStepAIC'method='glmStepAIC'findCorrelationrferfeControl=rfeControl(functions=lmFuncs)

그러나 이전 답변에서 언급했듯이 이러한 변수 선택 방법은 특히 반복적으로 수행하는 경우 문제를 일으킬 수 있습니다. 완벽하게 실시 된 테스트 세트에서 성능을 평가할 것을 절대적으로 확신하십시오. 알고리즘에 만족할 때까지 테스트 세트를 보지 마십시오!

마지막으로, 능선 회귀, 올가미 또는 탄성 그물과 같은 "내장"기능 선택과 함께 예측 모델을 사용하는 것이 더 좋고 간단 할 수 있습니다. 특히, method=glmnet캐럿에 대한 인수를 시도하고 해당 모델의 교차 검증 된 정확도를 인수와 비교하십시오 method=lmStepAIC. 필자는 전자가 샘플의 정확도를 훨씬 높일 수 있으며 사용자 정의 변수 선택 알고리즘을 구현하고 유효성을 검사 할 필요가 없습니다.


1
log(λ2+β2)

2
@probabilityislogic 당신은 r또는 같은 언어로 이중 파레토 페널티의 좋은 구현을 알고 python있습니까? 나는 그것을 시도하고 싶습니다.
Zach

1
내가 이해 한 바에 따르면, AIC에 의한 모델 선택과 교차 교차 유효성 검사는 본질적으로 동일하므로 (점근 적 동등성, Stone, 1977 참조 ) AIC와 일부 교차 유효성 검사 유형은 매우 유사합니다. 결과. 그러나 캐럿 패키지를 사용하지 않았으며 메서드 호출에서 AIC가 실제로 사용되는 것처럼 보입니다.
fileunderwater

38

@gung이 설명한 문제에 완전히 동의합니다. 현실적으로 말하면 모델 선택은 실제 솔루션이 필요한 실제 문제입니다. 실제로 사용하는 것이 있습니다.

  1. 데이터를 교육, 검증 및 테스트 세트로 나눕니다.
  2. 훈련 세트에서 모델을 훈련시킵니다.
  3. 예측 RMSE와 같은 메트릭을 사용하여 유효성 검사 세트에서 모델 성능을 측정하고 예측 오류가 가장 낮은 모델을 선택하십시오.
  4. 필요에 따라 새 모델을 고안하고 2-3 단계를 반복하십시오.
  5. 테스트 세트에서 모델의 성능을보고하십시오.

현실에서이 방법을 사용하는 예를 들어,이 방법이 Netflix Prize 경쟁에서 사용되었다고 생각합니다.


15
n>20000

5
@ 프랭크 : 왜 N이 그렇게 높아야한다고 생각합니까?
rolando2

14
정밀도가 떨어집니다. 다시 나누면 훨씬 다른 결과를 얻을 수 있습니다. 그렇기 때문에 사람들은 100 번의 10 배 교차 검증 또는 부트 스트랩을 반복합니다.
Frank Harrell

10
@FrankHarrell n> 20000 수치는 무엇에 의존합니까? " 수백 가지 요소 " 에 대한 원래 포스터의 의견을 기반으로 합니까? 아니면 데이터의 측면과 무관합니까?
대런 쿡

33
데이터 분할을 테스트 한 설정의 종류는 이벤트가 0.3 인 분수의 n = 17000이며 이진 물류 모델에 약 50 개의 매개 변수가 검사되거나 적합했습니다. 무작위 1 : 1 분할을 사용했습니다. 데이터를 다시 분할하고 다시 시작할 때 테스트 샘플의 검증 된 ROC 영역이 실질적으로 변경되었습니다. 자세한 정보를 제공하는 시뮬레이션 연구 및 관련 논문 은 biostat.mc.vanderbilt.edu/rms 의 본문에 사용 된 방법 연구를 참조하십시오.
Frank Harrell

15

질문에 대답하기 위해 1) AIC / BIC에 의한 모든 하위 집합 2) p- 값에 의한 단계별 3) AIC / BIC에 의한 단계별 4) LASSO와 같은 정규화 5) 유전자 알고리즘 (GA) 6) 기타? 7) 비 자동 이론 ( "주체 지식") 중심 선택 사용

다음 질문은 어떤 방법이 더 좋을까요. 이 논문 (doi : 10.1016 / j.amc.2013.05.016)은“모든 가능한 회귀”가 제안 된 새로운 방법에 대해 동일한 결과를 보였으며 단계적으로 나빴 음을 나타냅니다. 간단한 GA가 그들 사이에 있습니다. 이 논문 (DOI : 10.1080 / 10618600.1998.10474784)은 벌점 형 회귀 (브리지, 올가미 등)를 "도약 및 경계"(완전한 검색 알고리즘으로 보이지만 더 빠름)와 비교하고 "다리 모델이 "도약 및 경계 방법에 의한 부분 집합 선택". 이 논문 (doi : 10.1186 / 1471-2105-15-88)은 GA가 LASSO보다 낫다는 것을 보여줍니다. 이 논문 (DOI : 10.1198 / jcgs.2009.06164)은 본질적으로 모든 서브셋 (BIC 기반) 접근 방법을 제안했지만 계산 시간을 영리하게 줄였습니다. 그들은이 방법이 LASSO보다 낫다는 것을 보여줍니다. 흥미롭게도이 백서 (DOI : 10.1111 / j.1461-0248.2009.01361).

전체적으로 결과가 혼합되어 있지만 단계적으로 나쁘지 않고 빠를지라도 GA가 매우 좋아 보인다는 인상을 받았습니다.

7) 비 자동 이론의 사용 ( "주체 지식") 지향적 선택. 시간이 걸리고 반드시 자동 방법보다 낫지는 않습니다. 실제로 시계열 문헌에서는 자동화 된 방법 (특히 상용 소프트웨어)이 인간 전문가를 "실질적으로"능가하는 것으로 잘 확립되어있다 (doi : 10.1016 / S0169-2070 (01) 00119-4, page561 예 : 다양한 지수 평활화 선택) 및 ARIMA 모델).


6
데이터 생성 프로세스를 (의도적으로 의도하지는 않지만) 특정 루틴을 선호하도록 변경하여 다른 선택 알고리즘의 시뮬레이션 연구에서 다른 성능을 얻을 수 있습니다. 어떤 접근 방식이 더 빠르거나 느려질 지에 대한 문제는 분명하지만 여전히 중요합니다.
gung

2
실제로 LASSO에 대한 Tibshirani의 원본 논문 의 예는 @gung 의 요점을 잘 보여줍니다. 실제 데이터에 대한 다양한 방법의 비교 연구에서도 마찬가지입니다. BTW, 마지막 참조가 맞습니까? 귀하가 제공 한 DOI에 대한 Clements & Hendry의 논문은 자동화 된 방법이 인간 전문가보다 성능이 뛰어나거나 "실질적으로"라는 단어를 전혀 사용하지 않는다고 주장하지 않습니다. (당신이 완전한 언급을한다면 좋을 것입니다.)
Scortchi

발견 : Goodrich (2001), "M3-Competition의 상용 소프트웨어", Int. J. Forecast., 17, 560-565 쪽. 그것은 Clements & Hendry 논문과 같은 "M3-Competition에 관한 논평"컬렉션에 있습니다.
Scortchi

어쨌든 Goodrich의 의견은 주제 관련 전문 지식 과 관련이 있다는 것이 확실하지 않습니다 .
Scortchi

1
@Scortchi 581 페이지부터 시작되는 그 기사에 관한 기사에서 더 분명 할 것입니다. 자동 예측 방법은 경제 / 산업 상황을 알고 있으며 제공된 회사의 추가 정보를 요청할 수있는 초대 된 인간 전문가 (시계열 문학의 일부 큰 이름 포함)와 비교 된 "M2-Competition"과 관련이 있습니다. 자료.
heran_xp

6

선형 회귀를 사용하는 대신 회귀 트리 (rpart package)를 사용하십시오. 약간의 작업으로 과도한 피팅을 피하는 데 사용되는 매개 변수 인 cp의 선택을 자동화 할 수 있으므로 자동 모델 선택에 적합합니다.


3

가장 가치있는 독립 변수를 선택하는 방식으로 유전자 알고리즘을 구현하여 선형 모델을 최적화 할 수 있습니다. 변수는 알고리즘에서 유전자로 표시되며, 교차, 돌연변이 등 연산자 후에 최상의 염색체 (유전자 세트)가 선택됩니다. 그것은 자연 선택에 기반을 둔다. 그러면 최고의 '생성'이 살아남을 수있다. 다시 말해, 알고리즘은 특정 모델에 의존하는 추정 함수를 최적화한다.


2
즉,에서 "최고"변수를 선택 할 데이터 는 단지 데이터에 액세스, 데이터 생성 과정 / 인구, 반드시 최선의 변수를. OP가 원했던 단계적 방법과 다른 것은 아닙니다.
gung

0

R base stats 패키지에는 step ()이라는 함수가 있습니다.이 함수는 가장 낮은 AIC를 기반으로 모델을 정방향, 역방향 또는 단계적으로 선택합니다. 이것은 요인 변수에도 적용됩니다. 이것이 서버의 목적이 아닙니까?


-51

내 질문이 자동 모델 선택 접근법의 타당성에 대한 많은 관심과 흥미로운 논쟁을 일으킨다는 것을 알았습니다. 자동 선택 결과를 당연한 것으로 받아들이는 것은 위험하지만 시작점으로 사용할 수 있다는 데 동의합니다. 그래서 여기 특정 변수를 설명하는 가장 좋은 n 개의 요소를 찾는 특정 문제에 대해 구현 한 방법이 있습니다.

  1. 모든 회귀 변수 대 개별 요인 수행
  2. 주어진 기준에 따라 회귀를 정렬하십시오 (예 : AIC)
  3. t-stat가 낮은 요소를 제거하십시오. 변수를 설명하는 데 쓸모가 없습니다.
  4. 2에 주어진 순서대로, 요인들을 모델에 하나씩 추가하고 그들이 우리의 기준을 개선 할 때 그것들을 유지하도록 노력하십시오. 모든 요소에 대해 반복하십시오.

다시 말하지만, 이것은 매우 거칠고, 방법론을 개선 할 수있는 방법이있을 수 있지만 이것이 저의 출발점입니다. 다른 사람에게 유용 할 수 있기를 바랍니다. 의견을 환영합니다!


47
(1) 나는이 글에서 "토론"을 보지 못했다. 모든 답글과 의견은 동일한 기본 메시지를 제시한다. (2) 귀하의 구현 은 단계적 회귀의 임시 버전 인 것으로 보입니다 . 본인의 목적으로 자동 승인되지 않는 경우 출발점으로 유용 할 수 있음에 동의합니다.
whuber

28
당신은 실제로 커뮤니티가 제기 한 모든 논쟁에 반대되는 자신의 대답을 받아 들였습니다. 여기에 부정적인 것을 보는 것은 놀라운 일이 아닙니다.
jank

23
나는 너무 많은 다운 보트를 본 것이 처음이라고 생각합니다. @SAM 다른 우수 답변 중 일부만 수락하고 "답변"을 삭제하지 않겠습니까?
marbel

이 SE의 가장 하향식 답변입니까?
mkt

2
"주어진 변수를 설명하는 가장 좋은 n 개의 요소를 찾는 것"이라는 목표를 말함으로써 @probabilityislogic의 중요한 질문에 답한 것 같습니다. 설명하기위한 모델 구축 (인과 관계를 이해하기 위해)은 모델 구축보다 더 의도적으로 그리고 훨씬 더 집중적으로 수행해야합니다.
rolando2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.