2017-12-04 19 views
2

h2o가 교차 유효성 검사 및 유효성 검사 데이터 집합과 함께 작동하는 방법과 혼동하지 않도록 노력하고 있습니다. 난 그냥 설명하는 데 사용되는 말씨에 혼란 얻고 확신이 gbm_no_val_frame 초기 정지에 대한 검증 프레임 사용은 무엇교차 유효성 검사 및 조기 중지

library(mlbench) 
    library(h2o) 

data(Sonar) 
dfh2o = as.h2o(Sonar) 
splits=h2o.splitFrame(dfh2o) 

train = splits[[1]] 
valid = splits[[2]] 

gbm_no_val_frame <- h2o.gbm(x = colnames(df), y = "Class", training_frame = train, 
         nfolds = 5, seed = 1234, ntrees = 4000, stopping_rounds = 5) 


gbm_val_frame <- h2o.gbm(x = colnames(df), y = "Class", training_frame = train, validation_frame = valid, 
        nfolds = 5, seed = 1234, ntrees = 4000, stopping_rounds = 5)    

    h2o.flow() ### to see the validation frame stopping under models. 
  1. ? 어떻게 초과 피팅 (overfitting)을 방지하기 위해 이것이 멈 춥니 까?

  2. 나는 gbm_val_frame의 작동 방식을 이해하고 있다고 생각합니다. 훈련 된 배/최종 모델이 '유효한'프레임에 부딪 힐 때 점수가 좋아지지 않을 때 오버 피팅을 멈 춥니 다.

그냥 내가 여기있는 모든 의심을 제거 할 ..

답변

1

어떻게 초기 여기 정확히 작업을 중지합니까?

귀하의 가정은 정확합니다. 조기 정지는 각 CV 모델 및 최종 모델에 대해 사용됩니다. 내가 여기 validation_set을 제거하면

, ...

당신은 당신의 예에서 설정 한 검증 데이터를 지정하지 않습니다. 대신 nfolds을 설정하여 교차 유효성 검사를 요청하고 있습니다. 당신이 nfolds를 제거하고 validation_frame를 지정하지 않으면

, 그것은 훈련 초기 중지해야 정지시 평가하기 위해 설정 데이터에 점수를 사용합니다. GBM을 사용함에 따라, 이는 실제로 일찍 멈추지 않을 것임을 의미합니다. GBM은 각 추가 트리를 추가 한 후에 항상 향상됩니다.

그래, 항상 validation_frame 또는 nfolds을 지정하십시오.

gbm_no_val_frame 코드 EDIT BASED ON

업데이트 : 5 폴드마다, 상기 데이터의 1/5는 검증 프레임으로서 사용된다. 최종 모델은 모든 데이터를 사용하여 작성되었습니다. 조기 정지 만 간접적으로 만 사용합니다 : ntrees의 값을 무시하고 대신 5 개의 CV 모델이 사용한 트리의 평균 수를 사용합니다. (출처 : 제 책의 p.102 맨 위, GBM FAQ에도 있습니다.)

두 번째 질문에 대해서는 the FAQ을 읽었을 때 위의 내용이 여전히 얼마나 빨리 멈추는지를 보여줍니다. 유효성 검사 집합은 추가 통계를 제공하기 위해서만 사용됩니다.

(GBM의 경우 나는 진도가 확률 적이며 소음이 많을 수있는 깊은 학습을 위해 각 접이식의 조기 정지 지점이 상당히 다를 수 있으며 조기 정지를 결정하는 데 덜 유용하다는 것을 알았습니다. 최종 모델이므로 일반적으로 nfolds을 사용하지 않고 validation_frame을 사용하십시오.

+0

죄송합니다 - validation_frame을 제거했지만 nfolds를 유지하면 의미가 있습니다. 여전히 같은 거래요? – runningbirds

+0

@runningbirds 우리는 교차 목적으로 이야기하고 있을지 모르지만 현재 코드에서 validation_frame을 사용하지 않습니다. 일반적으로 nfolds 또는 validation_frame을 사용해야하며 기타를 지정하지 않는 것이 좋습니다. 일반적으로 nfolds와 validation_frame을 모두 사용하면 중복됩니다. –

+0

대런 쿡 - 내 말을 잘 못 알아 듣겠다. 내게 3 분을 준다. – runningbirds