2014-10-05 1 views
0

У меня есть data.frame TC, с 17744 наблюдениями из 13 переменных. Последней переменной является цель: a Factor w/ 2 levels "0", "1".randomForest не предсказывал серийные образцы

я:

n.col <- ncol(TC) 

x.train.or <- TC[1:12000, -n.col] 
y.train.or <- TC[1:12000, n.col] 
x.test.or <- TC[12000:17000, -n.col] 
y.test.or <- TC[12000:17000, n.col] 
rf.or <- randomForest(y=y.train.or, x=x.train.or, ntree=500, mtry=5, 
         importance=TRUE, keep.forest=TRUE, 
         na.action=na.roughfix, replace=FALSE) 
pr.or <- predict(rf.or, x.test.or) 
table(y.test.or, pr.or, dnn=c("Actual", "Predicted")) 

#  Predicted 
# Actual 0  1 
#  0 2424 780 
#  1 1056 741 

Очень плохой результат.

Затем я повторить модель фитинга со случайной выборки:

set.seed <- 123 
t.t <- holdout(TC[, n.col], ratio=3/5, mode = "random") 
x.train.r <- TC[t.t$tr, - (n.col)] 
y.train.r <- TC[t.t$tr, (n.col)] 
x.test.r <- TC[t.t$ts, - (n.col)] 
rf.r <- randomForest(y=y.train.r, x=x.train.r, ntree=500, mtry=5, 
        importance=TRUE, keep.forest=TRUE,  
        na.action=na.roughfix, replace=FALSE) 
pr.r <- predict(rf.r, x.test.r) 
table(y.test.r, pr.r, dnn=c("Actual", "Predicted")) 

#   Predicted 
# Actual 0  1 
# 0   4274 215 
# 1   353 2257 

Очень хороший результат, но зависит от способа формирования выборки с одним набором данных. Проблема, которую я решаю, предполагает только серийный образец.

Пожалуйста, помогите!

Ответ на вопросы: (1) Конечно, я:

library(randomForest) 
library(rminer) 

(3) Повторяю с:

n.col   <- ncol(TC) 
x.train.or  <- TC[1:12000, -n.col] 
y.train.or  <- TC[1:12000, n.col] 
x.test.or  <- TC[12001:17000, -n.col] 
y.test.or  <- TC[12001:17000, n.col] 

и получать тот же самый ужасный результат

 Predicted 
Actual 0 1 
    0 2413 790 
    1 1049 748 

(4) В этом может быть проблема? Некоторые переменные случайны на [1: 17000], но не случайны в [1: 100] (у меня не было прав на рисунки).

Что делать в этом случае?

+0

Что ваш вопрос? Несколько комментариев: (1), пожалуйста, включайте вызовы 'library' (например,' library (randomForest) 'и' library (rminer) '). (2) Вы не указали код для того, как вы создали 'y.test.r' (хотя очевидно, что он должен быть создан. (3) Я предполагаю, что вы не намеревались включить в ваш тестовый набор данных общ 12000 с вы включаете его в свой набор тренировок. (4) Порядок строк 'TC', вероятно, не является случайным (т. е. связь между' y' и 'x' для первого 12000 obs не является показателем этого для следующего 5000 obs). – jbaums

+0

Я исправляю вопрос – faa1947

ответ

0

Во-первых, это будет немного сложно ответить, не зная состояния данных. Иногда вы можете включить свой тестовый набор в свой набор поездов, если наблюдения повторяются каким-то образом.

Одним из лучших способов подтверждения ваших результатов является использование какой-либо техники перекрестной проверки, учитывающей, что вы полностью разделяете свой тест и набор поездов. Ниже приведено хорошее видео, чтобы посмотреть на это.

http://vimeo.com/75432414