2017-05-07 13 views
0

나는 여러 클래스 분류를 위해 조정 된 임의의 포리스트 모델을 구축 중입니다. 다음 결과를 얻었습니다 교육 정확도 (AUC) : 0.9921996 테스트 정확도 (AUC) : 0.992237664 이 웹 사이트에서 이와 관련된 질문을 보았습니다. 일반적인 대답은 데이터 집합이 작아야한다는 것입니다. 모델은 운이 있어요하지만 내 경우에 나는 약 300K 훈련 데이터 포인트와 100,000 테스트 데이터 포인트 이 또한 내 클래스가 모델이 큰 시험 데이터에 잘 맞게하는교육 정확도 이상의 테스트 정확도

> summary(train$Bucket) 
     0 1 TO 30 121 TO 150 151 TO 180 181 TO 365 31 TO 60 366 TO 540 541 TO 730 61 TO 90 
    166034  32922  4168  4070  15268  23092  8794  6927  22559 
    730 + 91 TO 120 
    20311  11222 
> summary(test$Bucket) 
     0 1 TO 30 121 TO 150 151 TO 180 181 TO 365 31 TO 60 366 TO 540 541 TO 730 61 TO 90 
    55344  10974  1389  1356  5090  7698  2932  2309  7520 
    730 + 91 TO 120 
     6770  3741 

그것이 가능 균형이 잘 있나요? 내 모델이 정말로 잘 맞는 지 확인하기 위해 무언가를 할 수 있다면 대답 해주세요.

내 전체 코드

split = sample.split(Book2$Bucket,SplitRatio =0.75) 
train = subset(Book2,split==T) 
test = subset(Book2,split==F) 
traintask <- makeClassifTask(data = train,target = "Bucket") 
rf <- makeLearner("classif.randomForest") 

params <- makeParamSet(makeIntegerParam("mtry",lower = 2,upper = 10),makeIntegerParam("nodesize",lower = 10,upper = 50)) 

#set validation strategy 
rdesc <- makeResampleDesc("CV",iters=5L) 

#set optimization technique 
ctrl <- makeTuneControlRandom(maxit = 5L) 

#start tuning 

tune <- tuneParams(learner = rf ,task = traintask ,resampling = rdesc ,measures = list(acc) ,par.set = params ,control = ctrl ,show.info = T) 

rf.tree <- setHyperPars(rf, par.vals = tune$x) 
tune$y 

r<- train(rf.tree, traintask) 
getLearnerModel(r) 

testtask <- makeClassifTask(data = test,target = "Bucket") 

rfpred <- predict(r, testtask) 
performance(rfpred, measures = list(mmce, acc)) 

답변

0

차이는 일정한 통계적인 오차 (결과의 차이)는 아무 문제 없다 주문 1E-4이다. 걱정할 것이 없다. 이것은 말 그대로 차이가 100,000 개 중 약 0.0001 * 100,000 = 10 개 샘플 ... 10 개 샘플이라는 것을 의미합니다.

+0

답변 해 주셔서 감사합니다. 이 질문에 대한 다른 질문이 있습니다. 네가 도울 수 있다면 정말 고마워. 교육 데이터와 함께 테스트 데이터를 조작하는 것이 좋은 방법인지 알고 싶었습니다. 희소 한 사건으로 인해 특이 치를 제거하거나 요인 수준을 수정한다는 것을 조작하는 것으로 –