Stephen Milborrow
September 10, 2016
September 10, 2016
출처: Stephen Milborrow Homepage
원본: PDF
- 1 Introduction
- 2 Overview
- 3 Termination conditions for the forward pass
- 4 Generalized linear models
- 5 Factors
- 6 The linpreds argument
- 7 The allowed argument
- 8 Using earth with fda and mda
- 9 Plots
- 10 Cross-validating earth models
- 11 Understanding cross-validation
- 12 Estimating variable importance
- 13 FAQ
11 교차 검증의 이해(Understanding cross-validation)
이 장에서는 교차 검증의 어떤 측면을 명확히 하려고 시도한다. 이것은 earth 모델의 교차 검증에 대해 email 응답에서 쓰여졌다. 이 장은 일반적인 논의가 대부분 이다, earth 모델에 제한하지 않음. 설명은 빈도 접근(frequentist approach)을 가진다, 우리가 여분의 데이터에 접근을 하는 경우에 가상 상황에 기반한 인수를 사용.
교차 검증의 설명을 위해, Hastie et al. [12]의 Section 7.10 절, Duda et al. [4] 9.6 절, 또는 Wikipedia http://en.wikipedia.org/wiki/Cross-validation_(statistics)를 보라.
깊이가 있는 참조는 Arlot and Celisse [1] 이다.
깊이가 있는 참조는 Arlot and Celisse [1] 이다.
11.1 성능 측정을 위한 데이터셋(Datasets for measuring performance)
다음 절에서 우리는 어떤 일반적인 교차 검증의 오류를 논의할 것이다. 그러나 첫번째 우리는 모델의 성능 측정을 위한 약간의 측면을 다시 검토한다, 그리고 이것을 하기 위해 필요한 데이터셋을 검토한다. 이런 데이터셋의 역할의 이해는 교차 검증을 올바르게 적용하기 위해 중요하다.
전형적으로 우리는 우리의 모델의 일반화한(generalization) 성능을 측정하기를 원한다. 그리고 새로운 데이터에서 예측을 측정하기를 원한다. ( 만약 이것이 즉시 명백하지 않다면, FAQ 13.7를 보라) 우리는 전형적으로 2개의 시나리오에서 성능을 측정하기를 원한다.
(a) | 변수 선택을 위해(parameter selection), i.e., 모델 생성 과정에서 어떤 주요한 모델 변수를 선택하기 위해. 예를 들면, earth 모델에서 우리는 최적의 조건의 수를 선택할 필요가 있다 (그래서 변수는 여기에서 조건의 수이다). 다른 예는 rpart 트리이다, 최적의 트리 크기를 선택할 필요가 있는 경우. 새로운 데이터는 변수 선택 데이터(parameter-selection data)로 사용된다, 또한 일반적으로 모델 선택(model-selection) 또는 검증(validation) 데이터로 호출된다. |
(b) | 모델 평가를 위해(For model assessment), i.e., 최종 모델의 성능을 측정하기 위해. 여서에서 새로운 데이터는 검증 데이터(test data)로 이용된다. |
우리는 그러므로 3개의 독립 데이터셋이 요구된다:
(i) | 훈련 데이터 |
(ii) | 위 (a)에서의 변수 선택 데이터 |
(iii) | 위 (b)에서의 검증 데이터 |
이러한 요구를 만족하는 이상적인 방법은 같은 모집단에서 새로운 데이터의 큰 량을 실제로 가져야 한다. 일반적으로 우리는 그러한 데이터를 실제로 접근하지 못한다, 그래서 다른 기술에 의존해야 한다.
하나의 기술은 MARS 모델을 생성할 때 사용된 GCV 이다, 새로운 데이터에서 측정된 RSS에 근접하기 위해 식을 사용하는 것으로 모델 선택 데이터를 위해 필요한 것을 전달함.
다른 기술은, 더 보편적인, 교차 검증이다. 이것이 어떻게 사용되는지에 의존하여, 교차 검증은 변수-선택 또는 검증 데이터 하나를 에뮬레이트 할 수 있다.
선형 모델에서 주의하라. 많은 이들이 선형 모델(linear models)을 학습하는 것으로 통계적 모델링에서 배움을 시작한다. 이것은 왜 우리가 선형 모델(linear models)을 가지고 위의 데이터셋 모두를 가지고 둘다 하지 않는가에 대한 물음에 근거이다. 답은 선형 모델은 상대적으로 유연하지 않고, 그리고 이런 단순한 모델을 가지고 훈련 데이터와 독립 검증 데이터에서 측정된 성능의 차이는 대수롭지 않고(inconsequential), 어떤 가정에 도달하게 제공된다. 그리서 우리는 분리된 검증 집합이 필요하지 않다. 추가적으로, 선형 도델을 만들 때 분리된 변수 선택(parameter-selection) 단계가 없다. 그래서 우리는 변수 선택 집합이 필요하지 않다. 만약 우리가 더 유연한 모델링 과정을 적용한다면 이것은 더 이상 참이 아니다. 예를 들어, 만약 우리가 선형 모델에서 다양한 선택을 한다면 (또는 만약 우리가 많은 관계 없는 변수를 가지면), 우리는 독립적인 훈련 데이터에서 R2를 측정할 것이고, 또는 만약 그런 데이터를 가진다변 조정(adjust) R2를 측정할 것이다 (AIC와 같은 측정을 사용하여). 더 유연한 모델일수록 과적합(overfitting)이 아마도 더 된다, 유연한 모델은 훈련 데이터의 특징에 적응할 수 있으므로.
11.2 일반적인 교차 검증 실수(Common cross-validation mistakes)
이 절에서 우리는 교차 검증을 수행할 때 쉽게 만들어지는 약간의 실수를 나열했다. 이런 모두는 모델 성능이 그것이 가지고 있는 것보다 좋게 보인다. 어떻해서 이런 오류가 발생하는 지에 대한 방법이 알려지는 것은, 어떤 회의론은 논문이 교차 검증에 기반한 최종 모델 평가 통계량을 제시했을 때 나타난다.
관측값의 독립성(Independence of observations)
out-of-fold 데이터는 새로운 데이터의 역할을 해야 한다. 그러므로 이것은 out-of-fold 데이터가 in-fold 훈련 데이터로 "더럽혀지지(contaminated)" 않는 점이 중요하다. 이것은 관측값은 독립성이 보장 되어야 한다는 의미이다.
독립성의 결여는 훈련에 사용된 in-fold 데이터가 어떤 의미에서 검증을 위해 사용된 out-of-fold 데이터에서 복제되었다는 뜻이다, 그리고 교차 검증은 긍정적인 적합을 주는 경향이 있다. 최소한, 우리는 관측값의 "복제(twinned)"를 피해야 한다.
사전 조정(Pre-tuning)
모델 변수를 선택하기 위해 데이터의 집합을 사용하지 마라, 그러면 모델의 교차 검증의 하위집합에서 같은 데이터를 사용해라. 교차 검증은 완전한 모델 생성 과정에 적용되어야 한다. 훈련 데이터에서 조정되는 어떤 변수는 교차 검증 시작 전에 조정되지 않아야 한다.
위 문단에서 설명한 말. 우리가 교차 검증 전에 전체 데이터셋에서 변수를 최적화를 해야 한다는 사실을 말한다. 이렇게 함으로써, 우리는 교차 검증 동안 사용된 out-of-fold 데이테에서 최적화를 위한 어떤 확장을 또한 해야한다 (왜냐하면 out-of-fold 데이터는, 모든 것을 한 후에, 전체 데이터에서 얻기 때문이다). out-of-fold 데이터는 예를 들어 오염되고 그러면 독립적인 검증 집합의 역할을 타당하게 더 이상 할 수 없다, 그리고 out-of-fold 데이터에서 측정된 성능은 그것이 할 수 있는 것보다 더 좋게 나타날 것이다.
어쨌든 교차 검증 전에 결정 도출을 수용할 경우의 맥락이다. 훈련 집합의 독립성이 보장되는 결정은 수용한다. 응답의 독립성이 보장을 포함하는 어떤 변수에 대한 결정은 수용된다. Hastie et al. [12]. 에서 7.10.2 절의 마지막의 주석을 보라.
최정 검증 적합으로 변수 선택 적합의 혼동
Confusing parameter-selection fitness with final test fitness
Confusing parameter-selection fitness with final test fitness
만약 교차 검증으로 얻어진 적합에서 모델의 변수 선택에 사용되려면, 그러면 선택된 모델에서 인용된 최종 검증 적합은 독립적인 데이터의 새로운 집합을 사용하여 그 모델을 재계산 해야 한다. 모델을 선택할 때 사용된 교차 검증 적합은 그 모델을 위한 적합으로 인용될 수 없다. - 그것은 변수-선택과 검증 데이터의 융합으로 검증 집합에서 최적이 될 것이다.
11.3 교차 검증 측정은 무엇인가? (What does cross-validation measure?)
교차 검증의 구조는 이해하기가 쉽다. 교차 검증은 어떤 미묘함(subtleties)을 포함하는 실제로 평가함이 무엇인지 이해함, 그리고 이 장의 나머지는 어떤 기술적인 것이다.
교차 검증은 "조건부" 에러가 아닌 "평균"을 평가한다
Cross-validation estimates "average" not "conditional" error
Cross-validation estimates "average" not "conditional" error
교차 검증은 우리의 모델의 일반화 성능을 실제로 평가하지 않는다, 하나의 데이터 집합으로 생성된 모델 (우리는 earth 같은 모델링 기술을 적용했을 때 일반적으로 알기를 원하는 것). 대신에, 교차 검증은 훈련 집합의 구간에서 우리의 모델 생성 알고리즘의 성능에 근사적으로 접근한다. 이것은 많은 모델이 만들어지는 경우에 가상의 시나리오에서 볼 수 있는 평균 성능에 근접한다, 원래의 표본과 거의 같은 크기의 신선한 훈련 데이터의 표본에 가각, 그리고 독립적인 검증 데이터에서 그런 모델의 개별적인 성능을 측정한다 (모든 데이터는 같은 모집단에서 i.i.d.(독립 항등 분포 independent and identically distributed.)가 됨).
다른 말로, 교차-검증은 훈련 집합 전체에서 기대 예측 에러의 평가에서 더 좋다, 우리가 손에 가진 훈련 데이터의 조건부 예측 에러가 아님. 41 페이지의 Figure 18에서, 우리의 모델은 하나의 분홍 선이다 그러나 교차 검증은 굵은 붉은 선에 접근한다. Hastie et al. [12]의 7.12 절 "Conditional orExpected Test Error?" 또한 보라.
일부 세부 사항. 교차-검증은 위의 가상(hypothetical)의 시나리오와 다르다 왜냐하면 교차-검증에서 훈련 (in-fold) 집합은 관측값을 공유하고 그리고 가상의 시나리오에서 되는 것처럼 변하지 않는다. 또한, fold의 훈련 집합은 다른 fold에서 나온 검증 집합을 통합한다. 이것은 fold 전체에서 잔차 에러 (또는 성능을 측정하기 위해 사용된 무엇이든) 간 관계를 야기한다, 특히 이상점(outlier)의 표현에서.
모델 전체에서 R2의 기대 값
Expected value of R2 across models
Expected value of R2 across models
위의 가상의 시나리오(hypothetical scenario)를 고려해라. 우리는 독립적인 검증 집합에서 R2의 성능 측정을 해라: 각 모델을 위해 우리는 모집단에서 훈련 집합을 얻는다, 그리고 또한 R2를 측정하기 위해 모집단에서 나온 검증 집합을 얻는다. 만약 우리가 많은 모델을 생성하고 그리고 모든 모델에서 평균 R2를 취하면, 우리는 안정적인 평균 R2 값에 결국 가까워 질 수 있다.
이 평균 R2는 검증 집합의 크기에 관계 없이 같게 될 수 있다, 우리가 실험을 충분한 횟수로 반복한다고 가정. 다른 말로, 모델 전체에서 R2의 기대된 값(expected value)은 훈련 집합의 크기에 의존하지 않는다 - 그러나 R2의 변화는 확실히 있다, 다음 절에서 연결 됨.
모델 전체에서 R2의 분산
Variance of R2 across models
Variance of R2 across models
일단 우리가 모델의 일반화 성능 평가를 수행할 때 ( 독립 데이터에서 R2 처럼), 우리는 평가의 안전성에 대해 알기를 전형적으로 원한다, 일반적으로 평가의 분산(the variance of the estimate)으로 표현.
일반적으로 만약 우리가 다른 훈련 집합을 가지면 우리의 추정된 R2가 어떻게 변하는지 예측할 수 있는 방법을 우리는 알기를 원한다 - R2의 표본 분산. 이것은 만약 검증 집합이 대단히 크다면 우리가 위의 가상 시나리오에서 모델 전체을 측정할 수 있는 분산이다 (그래서 모든 변화는 검증 집합이 아닌 훈련 집합 때문이다).
다른 한 편에서, 만약 검증 집합이 작다면, R2의 분산은 검증 집합의 작은 크기로 인해 추가 변화가 포함될 것이다. 이것은 교차-검증에 의해 에뮬레이트(emulate)된 시나리오이다. 그래서 교차-검증에서, 이것은 in-fold 훈련 집합 때문에 변화(variability) 또는 작은 out-of-fold 검증 집합으로 인한 변화(variability)를 풀기에 일반적으로 가능하지 않다.
11.4 교차-검증 평가의 편향(Bias of cross-validation estimates)
교차-검증은 표본의 더 작은 하위집합에서 만들어진 모델을 이용하여 전체 표본에서 만들어진 모델의 품질을 확정하기 위해 시도한다 (종종 4/5 또는 표본의 9/10). 일반적으로 하위집합으로 만들어진 모델은 전체 표본을 가지고 만들어진 모델 보다 "나빠"질 것이다. 그러므로 교차-검증 R2는 본래 있는 것 보다 더 낮아지는 경향이 있을 것이다. 이것을, 교차-검증 R2가 줄잡아 편향(biase)되었다라고 한다.
Figure 20: earth 모델에서 평가된 학습 곡선
검은 선은 회색 선의 평균이다 개개의 회색 선은 훈련 데이터의 하위집합의 집합 하나에서 GRSq를 보여준다. |
모델이 학습 곡선이 놓인 경우를 보기 위해((Hastie et al. [12]에서 Figure 7.8), 각 모델를 위한 하나의 기술은 같은 표본의 다른 크기의 하위집합을 가지고 만들어진 모델의 GRSq를 그려야 한다, 그리고 몇 번의 반복으로 산출된 변화를 평균한다. Figure 20은 예를 제공한다, 아래의 R 코드에 의해 생성됨. ( 코드를 무시하고 단지 그림을 볼 수 있다.)
learning.curve <- function(data, func, field="grsq", ncurves=30) { # set up the plot (call func on full data to establish ylim) body <- body(func) # needed only for the plot title plot(0, xlim=c(0,1), ylim=c(0, 1.2 * func(data)[[field]]), type="n", xlab="fraction of data", ylab=field, cex.main=1.1, xpd=NA, main=paste("estimated learning curve\n", substr(paste(deparse(substitute(body)), collapse=""), 1, 40))) grid(col="linen", lty=1) all.results <- rep(0, 10) for(curve in 1:ncurves) { # for each gray line sample <- sample.int(nrow(data)) results <- double(10) for(fold in 1:10) { sub.data <- data[sample[1:(fold * nrow(data) / 10)],] results[fold] <- func(sub.data)[[field]] } lines((1:10)/10, results, col="gray") # one gray line all.results <- all.results + results } lines((1:10)/10, all.results / ncurves, lwd=2) # the mean line } learning.curve(etitanic, function(data) earth(pclass~., data, degree=2))
그림에서, 편향은 10개의 fold를 가지면 충분히 작다 (곡선은 데이터의 90%를 가지면 충분히 평평하다).
이것은 단지 추정된(estimated) 학습 곡선임을 기억하라 왜냐하면 이것은 하나의 훈련 표본에서 만들어 졌기 때문이다. 이상적으로 우리는 많은 신선한 훈련 데이터를 사용하는 학습 곡선을 추정하기를 선호할 것이다. 만약 이렇게 하면, 우리가 Figure 20에서 보지 못한 그래프의 오른쪽 구석의 곡선에서 변화를 볼 수 있을 것이다. 그래서 nfold=5를 가지고서도 편향(bias)은 수용가능하게 작다, (알려지지 않은) 변화(variance)에 연관하여.
11.5 교차-검증의 분산 추정 (Variance of cross-validation estimates)
교차-검증 편향(bias)은 많은 논의가 될 것처럼 보인다, 그러나 보통은 교차-검증에서 더 심각한 문제는 표본 전체에서 교차-검증 추정값의 변화이다, 그리고 이 변화를 추정하기 위한 우리의 무능력. 만약 우리가 다른 훈련 표본을 사용한다면 우리는 변화하는 교차-검증 R2 기대값은 얼마나 많을 것인가? ( 새 표본은 같은 크기가 될 것이고 그리고 원본의 같은 모집단에서 얻어진다.) 이것은 추정의 기대된(expected) 값으로 작은 편향(bias) 까지 바로잡을 수 있는 것을 아는 것은 많은 위로가 되지 않는다, 만약 우리가 손에 있는 하나의 추정은 그 기대값에서 멀어질 것이다 왜냐하면 추정 분산 때문이다.
일반적으로 교차-검증 통계량의 변화의 정량은 계속 진행되는 연구의 문제이다 ( 관련된 문제의 일부의 설명을 위해 Bengio and Grandvalet [2]를 보라). 불운하게 이것은 earth 모델의 교차-검증 R2의 변화를 추정이 실제로 가능하지 않다.
조짐은 fold 전체에서 CV R2의 변화에서 나타난다 (summary.earth에서 출력되는 표준 편차). 어쨌든, 이 변화는 추가 변동을 포함한다 왜냐하면 우리는 fold 전체에서 평균 R2 대신에 fold 당 R2를 보기 때문이다. 다른 한 편에서, 이것은 훈련 집합 때문에 변화를 덜 포함한다 이는 만약 우리가 각 fold 에서 신선한 데이터를 실제로 사용하는 것과 비교하면. 또한 이것은 불안정하다 왜냐하면 out-of-fold 검증 집합의 작은 크기 때문이다 (변화의 분산는 크다, 원문: the variance of the variance is high).
Earth 모델에서, 다른 조짐는 추정된 학습 곡선에서 GRSq의 변화이다 (Figure 20). GRSq는 독립적인 데이터에서 R2를 위한 수용 가능한 대리(surrogate)라고 가정함, 회색 곡선 전체에서의 변화는 다양한 크기의 훈련 집합을 위한 모델 전체에서 R2 분산(variance)이 근사적으로 더 낮은 경계를 가진다. 우리는 "더 낮은 경계(lower bound)"라 말한다 왜냐하면 추정된 학습 곡선은 단지 하나의 훈련 집합에서 생성되었다 ( 만약 우리가 각 모델을 위해 신선한 데이터를 사용한다면 곡선 오른쪽의 변화는 0으로 점점 작아지지 않을 것이다)
12 변수 중요성 추정 (Estimating variable importance)
이 장은 earth 모델에서 변수의 연관된 중요성을 추정하기 위한 방법을 논의한다.
12.1 변수의 중요성 소개(Introduction to variable importance)
변수의 중요성이란 정확히 무엇인가? 작업 정의는 변수의 중요성은 변수의 관측된 변동이 관측된 응답에서 가지는 영향의 측정이다 라고 한다 (혹은 더 좋게, 모집단에서 그 영향의 기대치). 이것은 evimp로 추정하려 하는 중요성의 측정이다.
당신은 우리가 변수의 값의 변동과 어떻게 응답이 변동하는지 측정하는 것으로 변수의 중요도를 측정할 수 있다고 말할 것이라 추측한다. 실제로, earth 모델이 방정식으로 표현된다는 사실은 이것을 진행하는 방법이라고 의미하는 것처럼 보인다. 어쨌든, 특별한 상황을 제외하고, 생각한 방법에 문제가 있다 왜냐하면:
(i) | 이것은 우리가 변수를 변경할 수있다고 가정한다, 보통 이런 경우는 없다. 예를 들면, trees 데이터에서, 우리는 단순히 임의의 높이(height)로 새 나무를 단순하게 생성할 수 없다. |
(ii) | 이것은 변수의 변동은 고립되어서 발생할 수 있다고 가정한다. 실제로는, 변수는 다른 변수와 보통은 묶여 있고, 그리고 변수의 변동은 다른 변수의 연속적인 변동(simultaneous changes) 없이 모집단에서 결코 일아나지 않을 것이다. 예를 들어, trees 데이터에서, 높이(height)의 변동은 둘레(girth)의 변동을 가지게 연관되어 있다. |
(iii) | 이것은 인과 관계(causal relationship)를 의미한다, 이런 경우는 자주 있지 않다. 진흙 양의 변화는 비의 양에 대해 어떤것도 우리에게 말해주지 않는다. |
그러므로 이것은 전체 모집단에서 평균화된 응답에서 변수 영향의 조건을 생각하는 것이 더 좋다. 이것은 "기대된(expected) 효과"라 말한다. 실제로, 우리는 모델을 사용하기 위한 방법을 파악해야 한다 그리고 모집단을 위한 대리(surrogate)로써 표본, 하찮은 것이 아님.
MARS가 데이터에서 얻은 방정식에서 변수의 중요성은 우리가 여기서 마음에 담아 둘 일은 실로 아니다. 예로, 만약 두개의 변수는 높은 상관관계가 있다면, MARS는 모델을 만들 때 하나를 보통은 뺄 것이다. 두 변수 모두 데이터에서 같은 중요도를 가진다 그러나 MARS의 방정식에서는 아니다 (하나의 변수는 방정식에서 결코 나타나지 않는다). 12.5 절에는 MARS 방정식에서 변수 중요도를 추정하기 위해 plotmo를 사용하는 방법에서 몇 자가 있다.
12.2 변수 중요도 추정(Estimating variable importance)
예측자의 중요도 추정은 대개 교묘하다 그리고 심지어 논란의 문제이다. 표준 MARS 모델에서 변수의 중요도를 추정하는 완전하게 신뢰할 수 있는 방법은 보통 없다. evimp 함수는 아래에 설명되는 학습된 (그리고 실제로 유용한) 추정을 단지 한다.
12.3 변수 중요성을 추정하는 세 가지 기준
(Three criteria for estimating variable importance)
evimp 함수는 MARS 모델에서 변수 중요성을 추정하기 위한 3가지 기준을 이용한다.
-
nsubsets 기준은 변수를 포함하는 모델의 하위집합의 수를 센다. 더 많은 하위집합을 포함하는 변수는 더 중요하게 여겨진다. 이것은 변수의 중요도를 출력하는 summary.earth에서 사용한 기준이다.
"하위집합"으로 우리는 가지치지 패스로 생성된 조건(term)의 하위집합을 의미한다. 각 모델 크기 (1에서 선택된 모델의 크기) 를 위해 하나의 하위집합이 있고 그리고 하위집합은 그 모델 크기를 위한 조건(term)의 최적의 집합이다. (이런 하위집합은 earth의 반환 값에서 $prune.terms 에 지정되어 있다.) 최종 모델의 크기보다 작거나 또는 같은 하나의 하위집합은 변수 중요도 추정를 위해 사용된다.
-
rss 기준은 이전 하위집합에 연관된 각 하위집합의 RSS에서 감소를 처음으로 계산한다. (다중 응답 모델에서, RSS는 모든 응답에서 계산된다.) 그러면 각 변수에서 이것은 변수를 포함하는 모든 하위집합에서 이러한 감소를 합한다. 마지막으로 합된 감소 해석을 쉽게 하기 위해 가장 큰 합한 감소를 100으로 하고 척도된다. RSS에서 순 감소가 더 크게 일어나는 변수는 더 중요하게 여겨진다.
- gcv 기준은 같다, 그러나 RSS 대신에 GCV를 이용한다. 변수 추가는 GCV를 때로는 증가할 수 있음을 주목하라. (변수의 추가는 모델에 해로운 효과를 끼진다, 보이지 않는 데이터에서 그것의 추정된 예측 능력의 조건(term)에서 계산.) 만약 그것이 너무 자주 발생하면, 변수는 음의 전체 중요도를 가진다, 그리고 그러므로 사용되지 않은 변수보다 덜 중요하게 나타난다.
RSS 와 GCV 대신에 RSq 와 GRSq를 사용은 변수 중요도 동일한 평가(identical estimates)를 준다는 것을 주목하라, 왜냐하면 evimp 상관(relative) 중요도를 계산한다.
12.4 예 (Example)
이 코드는
earth.model <- earth(O3 ~ ., data=ozone1, degree=2) evimp(earth.model, trim=FALSE) # trim=FALSE to show unused variables
아래를 출력한다 (당신의 earth 버전은 다소 다른 결과를 줄 것이다):
nsubsets gcv rss temp 11 100.0 100.0 humidity 9 35.7 38.9 ibt 9 35.7 38.9 doy 8 33.7 36.5 dpg 6 26.2 28.7 ibh 5 31.1> 33.0> vis 5 21.2 23.9 wind 2 9.3 11.9 vh-unused 0 0.0 0.0
행(row)은 nsubsets으로 정렬되었다. 우리는 temp를 가장 중요한 변수로 여긴다는 것을 본다, 다음은 humidity, 등등. 우리는 vh는 최종 모델에서 사용되지 않음을 본다, 그리고 그러므로 unused 접미사가 붙어 있다. (사용되지 않은 변수는 여기서 출력되었다 왜냐하면 우리는 evimp에 trim=FALSE를 전달했다. 보통 이것은 출력에서 제외 된다.)
nsubsets 열(column)은 해당 변수를 포함하는 하위집합의 수이다. 예로, temp는 11개의 하위집에서 그리고 humidity는 9개에서 나타난다.
gcv 와 rss 행(columns)은 일반화 되었다 그래서 가장 큰 순 감소는 100이다.
">"는 감소 대신에 증가하는 gcv 와 rss 항목 후에 출력되었다 (i.e., nsubsets 순위를 가지면서 순위 감소). 우리는 ibh는 nsubsets 기준을 사용하는 dpg 보다 덜 중요하게 여겨진다는 것을 본다, gcv 와 rss의 기준이 아니라는 것.
12.5 MARS 방정식에서 변수 중요도 추정
(Estimating variable importance in the MARS equation)
plotmo 실행은 MARS 방정식에서 어떤 예측자가 예측된 값에 가장 큰 변화를 주는지에 대한 생각을 제공한다 ( 그러나 단지 그들의 중앙값에서 모든 다른 예측자를 가지고서).
MARS의 방정식에서 변수의 중요도와 데이터에서 변수의 중요도 간에 단지 약한 상관관계가 있음을 기억해라(12.1 절).
12.6 변수 중요도 추정하기 위해 drop1을 사용
(Using drop1 to estimate variable importance)
evimp의 대안으로, 우리는 drop1 함수를 사용할 수 있다(우리는 earth에 식(formula) 인터페이스를 사용한다고 가정). drop1(earth.model) 호출은 모델에서 차례로 각 예측자를 삭제할 것이다, 매 번 자국(scratch)으로부터 모델을 다시 만들고, 그리고 매 번 GCV를 계산한다. 우리는 earth 라이브러리 함수 extractAIC.earth는 AIC 대신에 GCV를 반환는 경고를 받는다 - 그러나 이것은 우리가 원한는 무엇이다 그래서 우리는 경고를 무시할 수 있다. (drop1 에 warn=FALSE를 전달하여 이러한 경고를 단지 꺼라.) drop1의 출력된 결과에서의 열(column) 라벨 AIC는 실제로 GCV의 열(column)일 것이다, AIC 아님. Df 열은 이 문장에서 많이 사용되지 않는다.
이 기술은 모델에서 기존의 다른 변수를 가지고 변수가 얼마나 중요한지를 우리에게 말할 뿐임을 기억하라. 이것은 고립 상태에서 변수의 영향을 우리에게 말하지 않는다.
우리는 drop1에서 많은 산출을 얻는다 만약 우리가 trace > 0으로 본래의 earth 모델을 생성하면. 우리는 drop1을 호출하기 전에 모델을 갱신하기 위해 trace=0으로 놓을 수 있다. 이처럼 해라:
earth.model <- update(earth.model, trace=0).
12.7 많은 모델을 생성하여 변수의 중요도 추정
(Estimating variable importance by building many models)
earth 모델에서 추정된 변수 중요도의 분산(variance)은 높게 될 수 있다 (데이터의 다른 구현을 가지고 만든 모델에서 변수 중요도의 추정은 달라 질 수 있음을 의미).
분산(variance)은 bagged earth 모델(bagged earth model)을 생성하여 부분적으로 평균화 할 수 있고 그리고 bagged model에 참여하는 많은 earth 모델에서 변수 중요도의 평균을 가진다. 당신은 Max Kuhn's caret 패키지에서 함수 bagEarth 와 varImp를 이용하여 쉽게 이것을 할 수 있다.
랜덤 포레스트(Random Forests)를 사용하는 변수 중요도 측정은 다르게 진행하는 방법이다, earth와 독립적으로. randomForest 패키지에 함수 randomForest 와 importance 를 보라.
12.8 evimp에 대한 비고(Remarks on evimp)
evimp 함수는 실제로 유용하다 그러나 아래의 이슈는 오해의 소지가 있을 수 있다.
동일선 (또는 다른 연관) 상의 변수(collinear variables)는 각 다른 중요도를 감출(mask) 수 있다, 선형 모델 처럼. 이것은 만약 2개의 예측자가 가깝게 연관되어 있으면, 순방향 패스(forward pass)는 다른 것에서 무엇인가 임의로 하나를 선택할 것이다. 선택된 예측자는 올바르지 않게 더 중요하다고 나타날 것이다.
조건(term)의 상호작용에서, 각 변수는 완전한 조건(term)에서 신뢰도(credit) 가진다 - 그러므로 상호작용 조건(term)은 하나 보다 더 셈한다 그리고 추가 조건(term)보다 전체에서 높은 가중치를 가진다(미심쩍게). 각 변수는 비록 그 조건에서 하나의 변수는 다른 것보다 아주 더 중요하지만 상호작용 조건에서와 같은 신뢰도(credit)를 가진다.
MARS 모델은 때로는 높은 분산(variance)을 가질 수 있다 - 만약 데이터가 약간 변경되면, 순방향 패스(forward pass)에서 생성된 기저 조건(basis terms)의 집합은 많이 변경될 수 있다. 그래서 예측자의 중요도 추정은 신뢰할 수 없다 왜냐하면 그들은 다른 훈련 데이터를 가지고 변화할 수 있다.
펙터 예측자에서, 중요도는 수준-당(per-level) 기준(basis)에서 추정된다 (왜냐하면 earth는 펙터를 지시자 열(indicator columns)로 분할한다, 분할된 변수로 각 수준(level)을 근본적으로 처리함). evimp 함수는 전체 수준(level)에서 중요도를 누적할 수 있는 옵션을 가질 수 있다, 그러나 그것은 아직은 구현되고 있지 않다.
TODO 가능할 때 교차-검증 통계량을 사용하는 evimp를 익혀라.
댓글 없음:
댓글 쓰기