2014-11-22 5 views
0

나는 predict()가 완전한 경우에만 예측을 생성한다는 것을 알아 챘습니다. 나는 다음과 같은 전처리 옵션에 medianImpute을 포함했다 :사전 처리 전제 R 캐럿 및 예측

train(outcome ~ ., 
     data = df, 
     method = "rf", 
     tuneLength = 5, 
     preProcess = c("YeoJohnson", "center", "scale", "medianImpute"), 
     metric = 'ROC', 
     trControl = train_ctrl) 
} 

이 나는 ​​세트를 훈련하기 전에 누락 된 값에 전가을 일을해야한다는 것을 의미합니까? 그렇지 않은 경우 테스트 세트의 모든 사례에 대한 예측을 만들 수 없습니다. 나는 Kuhn 박사의 책에서 교차 검증 과정에서 사전 처리가 이루어져야한다고 읽었습니다 ... 감사합니다!

답변

4

medianImpute을 사용하는 경우, 시험 세트를 medianImpute으로 전가하더라도 결과가 잘못되었을지라도 훈련 세트 전에 확실히 발생해야합니다.

예로서 다음과 같은 극단적 인 경우 가라 : 당신은 1 내지 100의 숫자 constists이 50 % 테스트 세트로 설정 한 데이터를 50 분할의 극단적 인 경우를 생각해 하나의 독립 변수 X가

을 % 훈련 세트, , 시험 세트에 1 ~ 50의 숫자, 훈련 세트에 51 ~ 100의 숫자가 있음.

> median(1:50) #test set median 
[1] 25.5 
> median(51:100) #training set median 
[1] 75.5 

코드 (캐럿 기차 기능)를 사용하면 훈련 세트의 누락 된 값이 75.5로 바뀝니다. 테스트 세트에서 누락 된 값이 25.5

  • 로 대체 될 수 있기 때문에 수동으로 누락 된 값을 대체 할 수

    1. 당신은 테스트 세트에 동일한 방법 (medianImpute)을 사용할 수 없습니다 :이 세 가지 주요 문제를 야기한다 75.5의 값이 테스트 세트의 최대 값보다 훨씬 높기 때문에 75.5로 설정하면 극적으로 왜곡됩니다.
    2. 캐럿 패키지의 함수 열차는 모델 (튜닝)에 가장 적합한 매개 변수를 찾으려고 시도합니다. 전체 데이터 세트의 중앙값 (누락 된 데이터를 입력하기위한 올바른 값)이 50.5 일 때 누락 된 값을 75.5로 바꾸면 모델을 잘못된 매개 변수 값으로 조정합니다.

    그러므로 가장 좋은 방법은 누락 된 데이터 을 처리하기 전에 훈련 세트를 생성하는 것입니다.

    희망이 도움이됩니다.

  • +0

    감사합니다. Lyzander. 그것은 medianImpute를 사용할 때 많은 의미가 있습니다. – user2300643

    +0

    변환에도 적용됩니까? – user2300643

    +0

    변환에 따라 다릅니다. 변환이 예를 들어 평균 및 분산을 기반으로하는 경우 예. – LyzandeR