2014-01-20 6 views
0

GBM 분류 모델에 맞게 캐럿의 기차 기능을 사용하는 경우 predictFunction 함수는 확률 임계 값을 확률 임계 값 0.5에 따라 요인으로 변환합니다.캐럿 패키지로 GBM 분류

 out <- ifelse(gbmProb >= .5, modelFit$obsLevels[1], modelFit$obsLevels[2]) 
     ## to correspond to gbmClasses definition above 

사용자가 ROC 곡선 (AUROC)에서 면적을 최대화하려고하는 경우이 변환이시기 상조로 보입니다. 감도와 특이성이 단일 확률 임계 값에 해당하기 때문에 (따라서 요인 예측이 필요함) gbmPredict의 원시 확률 출력을 사용하여 AUROC를 계산하는 것이 좋습니다. 내 경험상, 나는 분류 모델의 교정에 대해 거의 신경 쓰지 않았다. 모델이 '1'대 '0'을 예측하는 확률 임계 값에 관계없이 가능한 가장 유익한 모델을 원합니다. AUROC 계산에 원시 확률을 적용 할 수 있습니까? 어떤 요약 함수가 사용 되더라도 이미 이진 (binary) 된 예측을 전달하므로 까다로울 수 있습니다.

답변

4

"since whatever summary function is used gets passed predictions that are already binary"

확실히 그렇지 않습니다.

ROC 곡선을 계산하는 데 클래스를 사용할 수 없습니다 (그렇게하지 않는 한). 아래 참고 사항을 참조하십시오.

train은 클래스를 요인 (예상하는 내부 코드 사용) 및/또는 클래스 확률로 예측할 수 있습니다.

예를 들어, 클래스 확률을 계산하고 ROC 곡선 아래의 영역을 얻기 위해 그들을 사용이 코드 : 당신이 classProbs = TRUE 비트를 생략하면

library(caret) 
library(mlbench) 
data(Sonar) 

ctrl <- trainControl(method = "cv", 
        summaryFunction = twoClassSummary, 
        classProbs = TRUE) 
set.seed(1) 
gbmTune <- train(Class ~ ., data = Sonar, 
       method = "gbm", 
       metric = "ROC", 
       verbose = FALSE,      
       trControl = ctrl) 

사실, 당신은 오류가 발생합니다 :

train()'s use of ROC codes requires class probabilities. See the classProbs option of trainControl()

최대

+0

감사합니다, 맥스. 나는 요인 예측과 계급 확률 모두가 요약 함수의'data' 인수에 포함되어 있고, 이것이 _full_ AUROC와 0.5- 임계 감도/특이성을 계산할 수 있다는 것을 깨닫지 못했습니다. – user3215964

+0

다른 세부 사항 ... 클래스 확률이 다른 열 (클래스마다 하나씩)로 추가되므로 클래스가 유효한 "R"이름 (예 :' "0"',' "1"''등)인지 확인하십시오. 또한 [여기] (http://appliedpredictivemodeling.com/blog/2013/8/15/equivocal-zones)는 도움이 될 수있는 클래스 확률 값을 기반으로 클래스를 재정의하는 예제입니다. – topepo