2017-04-04 3 views
2

Caret에서는 indexindexOut 옵션을 사용하여 train에서 사용자 정의 교육 및 유효성 검증 세트를 설정할 수 있지만 유효 모델에 적용된 모델을 적용하고 성능을 측정하면 매우 상이한 모델 자체에 의해 제공 :caret 및 사용자 정의 유효성 검사가 indexOut으로 설정되면 이상한 결과가 발생합니다.

library(caret) 
library(Metrics) 

set.seed(123) 
index_on <- 1:16 
index_out <- 17:32 
fit <- train(mpg~wt+qsec, 
      mtcars, 
      method = "glm", 
      metric = "RMSE", 
      trControl = trainControl(method="cv", 
             index = list(index_on), 
             indexOut = list(index_out)) 
      ) 
fit$results$RMSE 
rmse(mtcars[index_out, "mpg"], predict(fit, mtcars[index_out,])) 

는이 열차 개체로부터 획득 또는 계산된다 때의 성능에 대해 다른 값을 생성하는 참조 직접 예측할 수 같이

[1] 3.612743

[1] 3.079445

이것은 버그입니까? 내가 여기서 뭔가 놓친거야?

답변

1

나는 조사되었으며, 그 내부에 기차가 바로 예상 모델을 계산하고 그 모델과 성능을 계산하지만, 대신 다른 모델을 반환 것 같습니다. 모든 데이터 ("인덱스"데이터뿐만 아니라)를 얻은 것입니다.

set.seed(123) 
fit_3 <- train(mpg~wt+qsec, 
      data=mtcars, 
      method = "glm", 
      metric = "RMSE", 
      trControl = trainControl(method="none") 
) 

rmse(mtcars[index_out, "mpg"], predict(fit_3, mtcars[index_out,])) 

생산 :

[1]이 지난 현재의 caret 버전을 사용하고 3.079445

(caret_6.0-75을에서

이 코드 것을 알 수 있습니다 순간).

https://github.com/topepo/caret/issues/348

: 나는 이미 열려있는 버그가 발견했을 때 이는하지만이 꽤 분명 나는 그것을보고 가고 있었다