2014-04-09 5 views
1

나는 Max Khun의 Applied Predictive Modeling 책을 따라 가면서 어떻게 캐럿이 작동 하는지를 배우려하고 있지만, 캐럿의 혼란 (Confusion) 매트릭스 기능이 어떻게 작동 하는지를 이해할 수 없었다. 캐럿의 기차와 혼란 매트릭스 함수

내가 트레이닝 데이터 세트 훈련 (훈련 [풀셋가), glmnet 사용하여 8190 행 및 1073 열을 갖는 다음과 같이

glmnGrid <- expand.grid(alpha = c(0, .1, .2, .4, .6, .8, 1), 
        lambda = seq(.01, .2, length = 40)) 

ctrl <- trainControl(method = "cv", 
       number = 10, 
       summaryFunction = twoClassSummary, 
       classProbs = TRUE, 
       index = list(TrainSet = pre2008), 
       savePredictions = TRUE) 

glmnFit <- train(x = training[,fullSet], 
      y = training$Class, 
      method = "glmnet", 
      tuneGrid = glmnGrid, 
      preProc = c("center", "scale"), 
      metric = "ROC", 
      trControl = ctrl) 

을 그리고, I는 착용감의 혼란 매트릭스 인쇄 : 나는

   Reference 
Prediction  successful unsuccessful 
    successful   507   208 
    unsuccessful   63   779 

그러나 : 나는 혼란 행렬을 바라 보았다

glmnetCM <- confusionMatrix(glmnFit, norm = "none") 

, 나는 다음과 같은 결과를 얻었다 caret의 confusionMatrix.train 문서가 "모델을 튜닝하기 위해 열차를 사용할 때, 혼란 행렬 항목에 대한 혼란 행렬 셀 항목을 추적합니다 (1757 = 507 + 208 + 63 + 779). hold-out 샘플. " 훈련 데이터 세트에 8190 개의 행이 있고 10 배의 CV를 사용했기 때문에 혼란 행렬은 819 데이터 포인트 (819 = 8190/10)를 기반으로해야한다고 생각했습니다.

분명히 나는 ​​캐럿의 trainControl 또는 기차가 어떻게 작동하는지 완전히 이해하지 못합니다. 누군가 내가 잘못 이해 한 것을 설명 할 수 있습니까?

도움을 주셔서 대단히 감사드립니다.

이영진

답변

1

문제는 제어 매개 변수에 있습니다. method = "cv"number = 10을 사용하고 있지만 index 인수를 통해 모델에 맞는 정확한 리샘플링을 지정하고 있습니다. 이 자료가 the book의 보조금 데이터라고 가정합니다. 12 장에서는 데이터 분할 스키마를 설명하며 pre2008 벡터는 8,190 개의 샘플 중 6,633 개가 학습에 사용됨을 나타냅니다. 즉 1557 모델 튜닝 중에 왼쪽 잎 : 비 pre2008 샘플에

> dim(training) 
[1] 8190 1785 
> length(pre2008) 
[1] 6633 
> 8190-6633 
[1] 1557 

예측은 표에 무엇을보고 있습니다.

ctrl <- trainControl(method = "LGOCV", 
        summaryFunction = twoClassSummary, 
        classProbs = TRUE, 
        index = list(TrainSet = pre2008)) 

당신이 10 배 CV를 수행 할 경우, index 인수 제거 : 우리가 무엇을 재현하려는 경우, 페이지 (312)는 올바른 구문을 가지고있다.

tl; dr 제어 기능에는 10 배 CV가 있지만 index 인수에는 1,557 개 샘플 중 하나를 사용해야한다고 나와 있습니다.

최대