Notes on the earth package :: part05


Stephen Milborrow
September 10, 2016

Contents

  1. 1 Introduction
  2. 2 Overview
  3. 3 Termination conditions for the forward pass
  4. 4 Generalized linear models
  5. 5 Factors
  6. 6 The linpreds argument
  7. 7 The allowed argument
  8. 8 Using earth with fda and mda
  9. 9 Plots
  10. 10 Cross-validating earth models
  11. 11 Understanding cross-validation
  12. 12 Estimating variable importance
  13. 13 FAQ

13 FAQ

13.1 earth에 대한 계획은 무엇인가? (What are your plans for earth?)

NA에 대한 지원은 좋아지게 될 것이다
멀티코어 지원은 earth를 상당히 빠르게 만들 것이다.
가중치(weights) 인수는 earth가 큰 모델에서 매우 느려지게 만든다.
분산 모델 코드는 그 자신의 패키지로 earth에서 요소가 될 수 있다, "어떤" 모델에서 예측 구간을 허용함.

13.2 어떻게 earth 패키지를 인용합니까? (How do I cite the earth package?)

이렇게 earth 패키지를 인용할 수 있다.
S. Milborrow. Derived from mda:mars by T. Hastie and R. Tibshirani.
earth: Multivariate Adaptive Regression Splines, 2011. R package.
아래의 BibTex 항목는 트릭이다. 저자 필드에 중괄호는 첫번째 저자의 마지막 이름에서 올바르게 항목을 정렬하기 위한 BibTex를 얻기 위해 필요하다. url 필드는 옵션이다.
@Manual{earthpackage,
    title = {earth: Multivariate Adaptive Regression Splines},
    author = {S. {Milborrow. Derived from mda:mars by T. Hastie and R. Tibshirani.}},
    year = {2011},
    note = {R package},
    url = {http://CRAN.R-project.org/package=earth}
}
R에서는 아래를 사용해라 (그러나 당신은 올바르게 항목을 정렬하기 위해 BibTex를 얻은 결과를 조작해야 할 것이다, 왜냐하면 특이한 저자 필드 때문);
> library(earth)
> citation("earth")

13.3 earth 모델 크기에 대한 제한은 무엇인가?
(What are the limits on earth model size?)

예로, earth 테스트 단위(suite)는 8백만건의 경우(case, 행)와 100개의 변수(열)에 적응된 모델이다, 8천만건의 경우와 2개의 변수. 더 큰 모델은 가능하다. 2.7 절을 보라.

13.4 이진 응답에서 earth 모델을 사용할 수 있나?
(Can I use earth with a binary response?)

그렇다. 전형적으로 당신은 확률을 예측하기를 원한다. 보통 진행하는 최적의 방법은:
(i) 당신의 이진 응답을 논리(logical)로 변환해라, 만약 이것을 미리 않았다면. 변환을 위해, 이처럼 코드를 쓸 수 있다:
data$response <- data$response == "survived"
실제로, 당신은 이것을 하는 것이 필요하지 않다. 비록 타입이 논리(logical) 응답은 이런 상황에서 표준이다, 만약 당신이 2-수준 펙터 또는 1-그리고-0 응답 또한 사용할 수 있기를 선호한다면. Earth는 상관하지 않는다.
(i) earth를 당신의 호출에서 glm=list(family=binomial))를 포함해라. 이것은 earth에게 응답 확률(response probabilities)을 추정는 모델을 만들라고 말한다.
예를 위해 4.1 절 (i)를 보라, 그리고 더 상세을 위해 그 장의 나머지도.

13.5 범주형 응답에서 earth 모델을 사용할 수 있나?
(Can I use earth with a categorical response?)

그렇다. 만약 당신의 응답이 2개의 범주만을 가지면 (이것은 이진이다) 위의 FAQ를 보세요.
만약 응답이 2개의 수준(level) 보다 더 가진다면, 응답이 정렬되지 않은 R factor인지 확실히 해라. 예로, 4.11 절의 (ii)를 보라, 그리고 더 상세를 위해 그 장의 나머지도.
내부 엔진에서 이것을 다루기 전에, earth는 응답을 다중 열(column)로 확장할 것이다(각 펙터 수준의 지시자 컬럼(indicator column)) 그리고 다중-응답 모델을 생성한다. 이것은 5장에 설명되었다.

13.6 단순한 조건에서 GCV란 무엇인가?
(What is a GCV, in simple terms?)

GCV는 MARS에서 중요하다 왜냐하면 가지치기 패스(pruning pass) 모델 하위집합을 추정하기 위해 GCV를 사용한다.
일반적인 조건에서, 모델을 검증할 때(MARS 모델에서는 불필요함) 우리는 일반화(generalization) 성능을 검증하기를 원한다, 그리고 그러므로 독립 데이터에서 에러를 측정하기를 원한다, i.e., 훈련 데이터가 아님. 종종 독립적인 데이터의 괜찮은 집합은 가질 수 없다 그리고 그러므로 우리는 교차-검증 또는 leave-one-out(나두고 온) 방법으로 해결한다. 그러나 그것은 다른 합병증이 나타나고 그리고 고통스럽게 속도가 느려질 것이다. 대안으로, 모델의 어떤 형태(form)에서 우리는 leave-one-out 검증에 의해 결정될 수 있는 에러를 근사화하는 식을 사용할 수 있다 - 이 근사화(approximation)는 GCV이다. 식은 모델의 유연도 계산을 유지하기 위해 훈련 RSS를 조정한다 (i.e., 증가).
요약은, GCV는 독립 데이터에서 측정 될 수 있는 RSS에 접근한다(경우의 수로 나누어진 RSS). 근사값이 좋지 않을 때 조차, 이것은 가지치기 동안 모델을 비교하기에 보통은 충분히 좋다.
earth 패키지에서 사용된 GRSq 측정은 원시 GCV를 표준화한다(standardizes), R2가 RSS를 표준화하는 같은 방법에서(FAQ 13.11)
GCV는 Craven 와 Wahba[3]에 의해 소개되었다, 그리고 Friedman 과 Silverman [7,9]에 의해 확장되었다. 7.10절 "Cross-Validation"을 보라, 그리고 Friedman MARS 논문[7]. GCV는 "일반화된 교차 검증(Generalized Cross Validation)"을 나타낸다, 아마도 용어의 오류가 있음. 왜냐하면 교차-검증은 실제 수행에서는 없다.

13.7 GCV가 그렇게 중요하다면, 왜 선형 모델을 사용하지 않습니까?
(If GCVs are so important, why don't linear models use them?)

과적합(overfitting)에 대해 우선 몇 마디. 과적합 모델은 훈련 데이터를 잘 적합하지만 그러나 새로운 데이터에서 좋은 예측을 주지는 않을 것이다. 이론은 생성된 모델은 시스템의 기본 구조를 훈련 데이터에서 담아낸다, 잡음 또한. 우리는 기본 구조와 잡음을 무시하는 모델을 원하다. 과적합 모델은 훈련 데이터의 잡음에 특화되어 모델이 만들어 진다 그리고 예를 들어 훈련 데이터에 너무 특화된다.
더 유연한 모델일수록, 훈련 데이터에 과적합되는 경향이 더 있다. 선형 모델은 제한이 있다. 보통 단지 몇개의 변수를 가짐 (즉. 교차점과 회귀 상관계수) 그리고 MARS 같은 더 유연한 모델처럼 과적합 되는 경향을 가지지 않아야 한다. 모델 생성에 사용되는 데이터에서 RSS는 보통 일반화 능력(generalization ability)의 적절한 측정이다 그리고 우리는 GCV는 필요하지 않다.
이것은 만약 우리가 선형 모델에서 자동 변수 선택을 한다면 더 이상 참이 아니다 (또는 만약 우리가 가능한 연관이 없는 변수를 다수 가진다면), 왜냐하면 변수 선택 과정은 모델의 유연성을 증가한다, 따라서 AIC - 말하면 drop1에서 사용된 것처럼. GCV, AIC, 그리고 친구들은 같은 끝을 의미한다. 모델 구축하는 동안 접근할 수 있는 어떤 정보에 의존함. 우리는 모델 선택의 목적을 위해 모델 일반화 성능(model generalization performance)을 추정하기 위해 이런 통계량의 하나를 이용한다.

13.8 어떻게 earth 모델 상관계수에 대한 p 값을 얻을 수 있나?
(How do I get p values for earth model coefficients?)

당신은 MARS 모델을 위해 p value에 의미를 가지지 말아야 한다. 만약 GRSq가 만족스러우면, 우리는 전체적으로 모델에서 이유가 되는 상관계수를 가진다, 그러나 우리는 고립 상태에서(in isolation) 모델 일부분에서의 상관관계 수준(evel)을 계산할 수 없다. 당신은 아래처럼 어떻게 할 수 있다고 생각할 수 있다:
earth.model <- earth(y~x)          # standard earth model
lm.model <- lm(y~earth.model$bx)   # linear regression on its basis matrix
summary(lm.model)                  # prints p values
이것은 실제로 p values을 출력할 것이다, 그러나 그들은 의미가 없다 (MARS 알고리즘이 작동한다는 확인하는 것을 제외하면). p 값 그리고 표준 에러는 작게 된다 (합리적인 데이터를 가정), 모든 조건은 중요하다고 나타남. 이것은 자기만족 예측이다: 만약 조건이 중요하지 않다면, MARS 알고리즘은 모델에서 그것들을 포함하지 않을 것이다.
summary.lm으로 출력된 요약에서 조건은 예비-정의(pre-defined)되었다고 가정한다. 이것은 조건 선택에서 불확실성을 무시한다, 그리고 p values가 출력되었을 때 그 불확실성을 줄이지 않는다.
또 다른 방법으로, 각 조건의 summary.lm에서 귀무 가설(null hypothesis)은 본질적으로 조건이 중요하지 않다는 것이다 - 그러나 MARS 알고리즘은 오로지 의미있는 조건을 선택한다, 그래서 summary.lm에서 반환된 p 값은 항상 작게 된다.

13.9 나의 예측에서 신뢰 구간을 얻을 수 있나?
(Can I get confidence intervals on my predictions?)

그렇다, 예측 구간은 earth 모델에서 접근할 수 있다. varmod.method 인수를 사용하라(Figure 21).
Figure 21: earth 모델에서의 예측 구간, 아래의 코드로 생성:
mod <- earth(O3~temp, data=ozone1,
             nfold=10, ncross=30,
             varmod.method="lm")

plotmo(mod, pt.col=1, level=.95)
그럴듯한 구간을 얻기 위해 약간의 작업이 요구된다. "Variance models in earth" 비네트 문서를 보세요. 나는 당신이 varmod.method="lm"를 가지고 시작하는 거라 추측하고 그리고 그것이 그렇듯한 결과를 준다고 알고 있다 - 모델을 그리고(plot) 그리고 잔차 그림에서 예측 경계를 확인해라.
어쨌든 earth의 상관계수(coefficients)로 신뢰 구간에 접근할 수 없음에 주의하라 (FAQ 13.8).

13.10 R2는 음수가 될 수 있나?
(Can R2 be negative?)

그렇다, R2(rsq)는 아래의 둘 모두 참으로 제공되면 때때로 음수가 될 수 있다:
(i) 검증 집합이 훈련 집합이 아니고 (예로, 교차-검증에서), 그리고,
(i) 우리가 R2의 일반정의를 사용
rsq = 1 - rss / tss
rss = sum((y - yhat)^2) 이 잔차-합-제곱(residual sum-of-squares) 이고 그리고 tss = sum((y - mean(y)^2)는 전체 제곱합(sum-of-squares)인 경우. 이것은 earth 코드에서 사용된 정의이다.
음수의 R2를 보이는 경우의 단순한 예는 교차점만 있는(intercept-only) 모델이다. 교차점만 있는 모델은 항상 상수만 예측한다, 훈련 데이터의 평균. 교차점만 있는(intercept-only) 모델은 검증 데이터에서 음수의 R2를 줄 것이다, 훈련 데이터와 검증 데이터가 같은 평균을 가지지 않는다면. 이것은 왜 이런가? 검증 데이터에서, 교차점만 있는(intercept-only) 모델은, 항상, 훈련 데이터의 평균을 예측한다. 그러므로 검증 데이터에서 잔차는 전체에서 더 크게 될 것이다 만약 우리가 검증 데이터의 평균을 예측하여 비교한다면. 이것은 검증 데이터에서 잔차 제곱합은 전체 제곱합보다 크게 될 수 있다고 말하는 다른 방법이다, 그리고 rsq = 1 - rss / tss는 음수가 될 것이다. 예는 41 페이지에서 Figure 19의 좌측에서 볼 수 있다 (분홍 선은 그림의 영역에서 0 아래에 있다).
R2를 정의하는 다른 방법이 실제로 더있다. 당신은 아래의 정의가 더 친숙할 수 있다
rsq = regression.sum.of.squares / tss
이것은 실제로 항상 음수가 아니다. 훈련 데이터에서 측정된 R2를 가지고, 2개의 정의는 선행 회귀에서는 동등하다(교차점을 가짐) 그리고 earth 모델에서도 같다.
"R-제곱"에서 "제곱"은(The "squared" in "R-Squared")은 이것은 비-음수 값을 함축한다는 것에서 오해가 있다. 아마도 우리는 다른 용어 "결정 계수(coe cient of determination)" 를 수용할 수 있다, 그러나 "R-제곱(R-Squared)"이 일반적이다.

13.11 GRSq는 음수가 될 수 있나?
(Can GRSq be negative?)

그렇다. 통계량 GRSq는 모델의 일반화 성능에 대한 earth의 추정값이다. 이것은 정의된다, R2와 유사하게, 이와 같이:
GRSq = 1 - GCV / GCV.null,
GCV.null는 교차점만 있는(intercept-only) 모델의 GCV인 경우.
음수의 GRSq는 심각하게 과변수화된 모델을(over-parameterized model) 가리킨다 - 일반화가 잘 되지 않은 모델, 비록 훈련 데이터에 잘 적합할 수 있더라도. earth 모델이 생성되는 동안, GRSq는 음수가 될 수 있다. 어쨌든, 모델의 가지치기 후에 음수가 아닌 GRSq를 가지고 마칠 것이다.
모델에 조건 추가는 훈련 데이터에서 R2가 항상 증가할 것이다 (수치의 정확성의 제한까지). 그러나 그 조건의 추가는 새로운 데이터에서 모델읜 추정된 예측 능력을 감소할 수 있다, 그리고 GCV는 그래서 감소한고, 그리고 그러므로 또한 GRSq. (우리는 대부분 어떤 earth 모델 선택 그래프에서 나중의 조건에서 발생함을 본다) GRSq는 종종 충분히 감소하고 그리고 이것은 결국 음수가 될 수 있다. 이 예에서(Figure 22) GRSq가 급강하 하는 것을 본라
fit <- earth(mpg~., data=mtcars, trace=4)
plot(fit, which=1, col.npreds=0, xlim=c(0,14),
     col.sel.grid="linen", legend.pos="bottomleft")
Figure 22: 음수의 GRSq

조건 3개 후에, 조건 추가는 모델의 추정된 예측 능력을 감소시킨다, 조건 7을 제외하고. 조건 14에서 GRSq는 음수가 된다.

훈련 데이터에서 R2는 earth가 조건을 추가함에 따라 증가한다(dashed line).
심한 경우에는, GRSq는 또한 -Inf로 놓일 수 있을 것이다, 다음의 FAQ에서 제공.

13.12 "종료 조건 : GRSq -Inf" 의미?
(Why does "Termination condition: GRSq -Inf" mean?)

그것은 특히 걱정할 일이 아니다. 그것은 순방향 패스(forward pass)가 조건 추가에서 중지되었다는 의미이다 왜냐하면 GRSq 그것이 계속하여 무의미하게 그렇게 나빠지지 않는다. 그것은 Termination condition: GRSq -10 (3장 iv) 과 비슷하다 GRSq는 -10 보다 훨씬 나빠진 점만 제외하고. 역방향 패스(backward pass) 후에, GRSq는 음수가 아닐 것이다.
일부 세부 사항. Earth는 모델을 생성하는 동안 GCV에 Inf로 설정한다 만약 변수의 효과적인 수가 관측값의 수 보다 큰 경우이면. 이런 조건 하에서, GCV는 leave-one-out RSS에 더이상 근접하지 않는다. 이것을 보려면, GCV를 위한 식을 고려해라
GCV = RSS / (n * (1 - nparams / n)^2))
n이 관측의 수인 경우. 식으로 부터 우리는 GCV는 증가하고 그리고 그다음 만약 nparams / n에 접근한다면 감소한다 그리고 그다음 모델에 조건이 추가되어 1을 넘는다. 이런 단순하지 않는 바람직하지 않는 행위를 방지하기 위해, 만약 nparams / n >= 1 이면 그러면 earth는 식을 이용하지 않는다 그러나 실제로 직접 Inf를 GCV에 설정한다.

13.13 조건의 기본 수 nk는 어떻게 계산되나?
(How is the default number of terms nk calculated?)

기본값 nk
nk = min(200, max(20, 2 * ncol(x))) + 1
즉: 이것은 조건의 수의 2배이다, 범위 20에서 200에 있도록 강제하고, 그리고 마지막에 교차점(intercept)을 위해 1을 추가한다.
20과 200의 수는 상당히 임의적이다. 하한값 20은 우리가 몇개의 예측자만 가지면 경우의 상황에서 합리적으로 보인다. 상한값 20은 순방향 패스(forward pass)에서 과도한 메모리 사용을 방지하게 돕는다. 전형적으로 우리가 200 조건에 도달하기 오래 전에 종료 조건의 하나에 도달할 것이다. 종료 조건은 3 장 "Termination conditions for the forward pass" 에서 설명되었다.

13.14 왜 nk보다 적은 조건을 얻는가, pmethod="none" 가질 때에도?
(Why do I get fewer terms than nk, even with pmethod="none"?)

순방향 패스(forward pass)에서 종료할 수 있는 몇가지 조건이 있습니다, 그리고 nk에 다달은 것은 단지 그들 중에 하나이다. 3 장 "Termination conditions for the forward pass" 보라. 다양한 종료 조건은 순방향 패스에서 생성된 실제 조건의 수는 큰 nk 보다 보통 작게 될 수 있음을 의미한다.
왜 종료 조건의 실제 수는 nk 보다 작을 수 있는지에 대해 다른 이유가 있다:
(i) 전방향 패스(forward pass)는 조건의 쌍 중에 하나의 부분을 버린다 만약 그것이 모델에 어떤것도 더해지지 않는다면 - 그러나 전방향 패스(forward pass)는 조건을 셈한다 그들이 짝으로 실제로 생성되는 것처럼. 이런 행동을 보기 위하여, trace=2 또는 더 큰 값으로 earth를 실행하라. 비록 earth는 2개의 조건을 보통 추가하지만 단지 하나만 때로는 추가된 경우에 Terms 열에 표시될 것이다.
(ii) 최종 단계에서(역방향 패스(backward pass) 바로 전), 전향향 패스(forward pass)는 선형으로 의존된 조건은 지운다, 만약 어떠한, 그래서 dirscuts 에서 모든 조건은 독립적이다. 만약 이것이 발생하면 그래서 추적은 Fixed rank deficient bx by removing 3 terms 같은 메세지를 얻어 가능하게 된다.
그리고 가지치기 패스(pruning pass)는 pmethod="none"을 하지 않으면 더 많은 조건이 통상 버려짐을 기억하라.

13.15 왜 내가 지정한 nprune보다 적은 조건을 가지나?
(Why do I get fewer terms than my specified nprune?)

가지치기 패스(pruning pass)는 nprune 또는 더 적은 조건을 가지는 가장 낮은 GCV를 가지고 모델을 선택한다. 그러므로 nprune 인수는 최종으로 가지친 모델에서 허용 가능한 조건의 최대 수를 지정한다.
당신은 penalty=-1를 지정하여 정확한 nprune 조건을 얻기 위하여 문제를 해결할 수 있다. 예:
earth(Volume ~ ., data=trees, trace=3, nprune=3, penalty=-1)
penalty의 특별한 값은 earth가 GCVRSS/nrow(x)로 설정하도록 한다. 그러므로 훈련 집합에서 RSS는 더 많은 조건에서 항상 감소한다, 가지치기 패스에서 조건의 최대 허용된 수를 선택할 것이다.

13.16 nk 또는 nprune를 가지고 모델 크기를 적게 잡아두는 것이 최선인가?
(Is it best to hold down model size with nk or nprune?)

만약 당신이 기본으로 생성된 모델보다 더 작은 모델을 원한다면. 그것은 순방향 패스에서 기저 함수의 큰 집합을 생성하기 위한 일반적으로 최선이다(큰 nk를 지정하여) 그리고 이것들은 역으로 가지친다(작은 nprune을 지정하여). 이것은 작은 nk를 지정하여 작은 모델을 직접적으로 만드는 것보다 일반적으로 더 좋다 - 가지치기 패스는 포함하고 있는 이용가능한 조건의 어떤 것을 선택할 수 있다, 순방향 패스가 진행에서 단지 하나의 조건을 볼 수 있는 경우에.

13.17 어느 예측자가 모델에서 사용되었는가?
(Which predictors are used in the model?)

아래의 함수는 모델에서 예측자의 목록을 제공할 것이다:
get.used.pred.names <- function(obj)    # obj is an earth object
{
    any1 <- function(x) any(x != 0)     # like any but no warning if x is double
    names(which(apply(obj$dirs[obj$selected.terms, , drop=FALSE], 2, any1)))
}

13.18 어느 예측자가 처음으로 모델에 추가되었는가?
(Which predictors were added to the model first?)

trace=2 또는 더 큰 값으로 순방향 패스(forward pass)에 추가된 조건을 볼 수 있다. 그러나 기억하라, 가지치기는 어떤 조건들을 보통 지워버릴 것이다. 또한 아래의 코드를 이용할 수 있다
summary(earth.model, decomp="none")
가지치기 후에 남아있는 조건을 리스트 함, 그들이 순방향 패스(forward pass)에서 추가된 순으로.
이것은 순방향 패스에서 추가되는 어떤 조건 또는 예측자의 순서는 그들의 연관 중요도를 지정하는데 필요하지 않다.

13.19 summary.earth는 x에 없는 이상한 이름을 가지고 리스트를 준다. 무엇을 주는 것인가?
(summary.earth lists predictors with weird names that aren't in x. What gives?)

아마도 당신의 x 메트릭에 펙터를 가진다, 그리고 earth는 contrasts를 적용한다. 5장의 "Factors"를 보라.

13.20 어떻게 does summary.earth는 조건을 (순서를) 정하나?
(How does summary.earth order terms?)

decomp="none"을 가질 경우, 조건은 순방향 패스에서 생성되며 정해진다.
기본값 decomp="anova"를 가질 경우, 조건은 아래의 순서가 정해진다:
(i) 조건은 첫째로 상호작용 도수에서 정해진다
(ii) 그러면 표준 조건 전에 선형 요소를 가지는 조건
(iii) 그러면 예측자에서 (입력 메트릭에서 열의 순서로)
(iv) 그러면 knot 값의 증가에서
(v) 그리고 마지막에, 조건의 짝에서 "predictor less than hinge"의 조건은 "predictor greater than hinge"의 조건 전에 놓인다 (그래서 예를 들면, h(16-Girth)는 h(Girth-16) 전에 있다)
재순서는 함수 reorder.earth로 한다.

13.21 어떻게 하나의 데이터 집합에서 훈련하고 그리고 다른 집합에서 검증하는가?
(How do I train on one set of data and test on another?)

아래의 예는 데이터의 80%에서 훈련하고 그리고 나머지 20%에서 검증하는 하나의 방법을 보여준다.
train.subset <- sort(sample(1:nrow(trees), .8 * nrow(trees)))
test.subset <- (1:nrow(trees))[-train.subset]

earth.model <- earth(Volume ~ ., data = trees[train.subset,])

# print R-Squared on the test data
print(summary(earth.model, newdata=trees[test.subset,]))

# manually calculate R-Squared on the test data (same as above call to summary)
yhat <- predict(earth.model, newdata = trees[test.subset,])
y <- trees$Volume[test.subset]
print(1 - sum((y - yhat)^2) / sum((y - mean(y))^2)) # print R-Squared
실제로 예에서 하나 보다 더 큰 데이터셋은 분할되어 사용될 것이다. 모델의 변화는 이런 작은 데이터에서 너무 높게 나온다 - 표본이 각 실행에서 다른 데이터셋으로 분할함에 따라 어떻게 모델이 변하는지 보기 위해 몇 회 실행해라.
또한, 검증 집합은 변수를 조정하기 위해 사용하지 않아야 함을 기억해라 왜냐하면 당신은 검증 집합을 최적화 할 것이다 (11.1 절). 대신 GCV를 이용해라, 변수-선택(parameter-selection) 집합을 분할해라, 또는 earth의 nfold 변수로 교차-검증과 같은 기술을 사용해라 (교차-검증은 5 또는 10 회 위 코드에서 진행을 반복한다, 매 회 다른 하위집합을 이용하여).

13.22 왜 plot.earth는 교차-검증 데이터를 보여주지 않는가?
(Why is plot.earth not showing the cross-validation data?)

earth 호출에 keepxy=TRUE를 이용해라 (nfold와 마찬가지로). 10.3 절을 보라.

13.23 어떻게 plot.earth 또는 plotmo에서 기존 페이지에 플롯을 추가하는가?
(How do I add a plot to an existing page with plot.earth or plotmo?)

do.par = FALSE를 사용해라, 그렇지 않으면 이러한 플롯팅 함수는 새로운 페이지에서 시작한다.

13.24 bagging MARS란 무엇인가?
(What about bagging MARS?)

caret 패지지[14]는 bagging earth를 위해 함수를 제공한다 (그리고 변수 선택을 위해). 우리의 개인적 경험은 bagging MARS는 더 나은 예측 능력을 가지는 모델을 주지 않는 것을 보았다 (아마도 왜냐하면 MARS 알고리즘은 데이터의 섭동이 존재에도 상당히 안정적이고, 그리고 bagging은 "불안정한" 모델에서 잘 동작한다). 당신의 경력이 다를 수 있다 (만약 그렇다면 우리는 관심이 있을 수 있다). 우리는 단지 몇 가지의 데이터셋으로 테스트 했다, 그러나 약간의 다른 접근을 시도했고, 변수의 무작위 집합은 다양성을 증가시키기 위한 순방향 단계에서 접근 가능한 earth의 수정된 버전의 사용을 포함 (random forests와 비슷).

13.25 왜 Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred 가 나오는가?
(Why do I get Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred?)

earth의 glm 인수를 사용했을 때 이런 경고를 단지 보게 될 것이다. earth의 문장에서 경고는 무시해도 안전할 수 있다. 모델 조건의 GLM 상관계수는 아마도 매우 클 것이다, 그러나 문제가 아니다 - 모델의 예측 능력은 손상되지 않는다.
경고는 glm.fit이 훈련 데이터에서 분류가 완전하게 나눠지는 모델을 생성할 때 문제가 된다. 완전한 적합은 보통 좋은 것으로 여겨진다, 경고를 유발할 수 있는 어떤 것은 아님. 어쨌든, 경고는 glm.fit 내부에서 수학으로 생성된 어떤 모델 통계량은 (t-values 같은) 모델에서 이후 추론에서 신뢰할 수 없기 때문에 문제가 된다. 그것은 earth 문장에서는 문제가 되지 않는다, 왜냐하면 earth는 이런한 통계량을 사용하지 않는다. (그리고, 항상, t-values는 경고가 문제가 될 때 조차 전혀 의미가 없다, 왜냐하면 glm.fit를 호출하기 전에 조건을 생성하기 위한 earth의 진행의 량 때문에, FAQ 13.8.)
경고 메세지는 교차-검증 동안 발생한 것에 더 친숙하다 (earth의 nfold 변수의 사용). 교차-검증에서 우리는 더 많이 찾고, 그리고 더 작게, 데이터셋, 그래서 완전하게 분리 가능한 집합의 기회를 더 선호한다. 만약 경고가 문제가 된다면, fold 모델의 조건에서 상관계수는 아마도 매우 크게 될 것이다, 그러나 그들은 어쨌든 최종 모델에서 사용되지 않는다. earth에서 계산된 교차-검증 통계량은(CVRsq 같은) 유효하게 남아았다.
2014 12월 추가 참고: Andrew Gelman 이러한 메세지가 주어진 경우의 예를 제공한다 왜냐하면 glm 알고리즘의 비-수렴 때문. 나는 이것이 실제로 드물다고 생각합니다.
http://andrewgelman.com/2011/05/04/whassup_with_gl.

13.26 왜 Error: XHAUST returned error code -999가 발생하는가?
(Why do I get Error: XHAUST returned error code -999?)

짧은 답변: 당신위 위에 메세지를 결코 볼 수 없다 (earth 버전 2.6-0에서 수정됨). 보게 된다면, 저희에게 알려 주세요.
한가지 해결 방법은 pmethod를 "exhaustive"에서 "backward"로 변경해야 한다.
또한 아래를 시도할 수 있다. 이 지침은 Exhaustive.tol의 기본 값이 당신의 데이터 셋에서 너무 크다는 가정에서 작업한다. 첫째로 earth의 도움말 페이지의 Arguments 절에서 Exhaustive.tol 인수의 설명을 읽어 보세요. 그다음 trace=1를 실행한다, 그러면 earth는 기저 메트릭 bx의 조건의 수의 역수를 출력한다. (여기서 조건의 수는 bx의 가장 작은 값의 가장 큰 비율이다) 그러면 Exhaustive.tol를 추력된 값(Exhaustive.tol=1e-8 같은 어떤 것) 보다 더 크게 설정한다, 그리고 다시 earth를 실행한다. 지금 earth는 위의 에러 메세지를 회피하는 것이 필요할 때 자동으로 pmethod를 "exhaustive"에서 "backward"로 변경한다.
이것은 결과 모델이 너무 좋게 되는 이런 조건 하에서 믿기 힘들다고 말할 수 있어야 한다. 데이터는 어지간한 예측 모델이 만들어 지는 것을 허용하지 않는다.
일부 세부 사항. 어떤 데이터는 일반적인 검사로 인해 미끄러져 earth의 기저 메트릭 bx에 공선관계(collinearity)를 유발한다. 이것는 leaps 루틴이 실패하게 유발한다. 일반적인 검사는:
(i) 기저 메트릭을 생성하는 동안, C 코드는 공선 조건을 제외하기 위한 체크를 수행한다(C 코드에서 (BX_TOLQR_TOL)
(ii) 기저 메트릭을 생성한 후에, C 코드는 어떤 남아있는 공선관계(collinear) 조건을 제거한다 (C 코드에서 RegressAndFix)
(iii) leaps 포트란 루틴 sing은 공선관계(collinearity)를 체크한다.
어떤 데이터는 이러한 검사 모두를 통과한다, 아마도 왜냐하면 우리는 수치 잡음 플로어(the numerical noise floor)에 가깝거나 그리고 수치적 반올림(numerical rounding)은 본질적으로 무작위 데이터를 변경한다. pmethod="exhaustive"일 때, earth는 bx의 SVD를 수행한다, 그리고 최후의 조치로 만약 조건의 수가 범위를 벗어나면(out-of-range) pmethod를 "exhaustive"에서 "backward"으로 강제 설정한다.

댓글 없음:

댓글 쓰기