2015-02-21 1 views
2

Я фитинг случайного леса, и я разделить мои данные в обучающем набор и тестовый набор, используя следующий код:Что делать xtest = и ytest = делать в алгоритме randomForest в R?

train <- sample(1:nrow(Boston), (nrow(Boston))/2)) EDIT: здесь, поезд, очевидно, только индекс и, таким образом, набор тестов следующим образом:

testB <- Boston[-train,]; head(test); length(test) Имя переменной ответа является medy, и это четырнадцатая колонка.

У меня также есть следующий код для моего случайного леса (на самом деле я расфасовка здесь, потому что общее число переменных в моем наборе данных является 13):

bag.boston1 <- randomForest(medv~., data=Boston, subset=train, mtry=13, importance=TRUE, ytest=testB$medv, xtest=)

Является ли мой аргументом для ytest = вариант правильный? Я так считаю, что это всего лишь переменная ответа в наборе тестовых данных.

Также, какой аргумент следует использовать для параметра xtest =?

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

`x <- testB` 

x[14] <- NULL # because the 14th column is the response variable 

bag.boston1 <- randomForest(medv~., data=Boston, subset=train, mtry=13, 
         importance=TRUE, ytest=testB$medv, xtest=x) 

ответ

2

из документации randomForest:

Если xtest дается, предсказание тестового набора производится «на месте», как деревья растут. Если также указывается ytest, а do.trace - некоторое положительное целое число, то для каждого дерева do.trace напечатана ошибка тестового набора. Результаты для набора тестов возвращаются в тестовом компоненте полученного объекта randomForest. Для классификации компонент голосов (для учебных или тестовых наборов данных) содержит голоса, полученные для классов. Если norm.votes=TRUE, то дана дробь, которая может быть принята как предсказанная вероятность для классов.

можно понять, отсюда только передавая переменный отклик на ytest аргумент, ничего не меняет в том, как randomForest работе.

Если вы хотите функцию randomForest, чтобы делать прогнозы «на месте», т.е. когда деревья выращиваются, вы должны пройти тестовые данные без переменной предсказания с xtest аргумента, как это:

bag.boston1 <- randomForest(medv~., data=Boston, subset=train, mtry=13, importance=TRUE, 
          xtest=subset(testB, select=-medv)) 

Прогнозирование результаты могут быть доступны через: bag.boston1$test$predicted

Поскольку вы также переменный отклик для тестовых данных в этом случае, вы можете передать его с помощью ytest переменных:

bag.boston2 <- randomForest(medv~., data=Boston, subset=train, mtry=13, importance=TRUE, 
          xtest=subset(testB, select=-medv), ytest=testB$medv) 

В этом случае наряду с предсказаниями мы также получаем некоторые дополнительные значения. Они равны mse для среднеквадратической ошибки и rsq для r-квадратов, как для каждого из деревьев, выращенных в случае regression. И для classification, они: err.rate, т.е.частота ошибок теста для каждого дерева, confusion для матрицы путаницы и votes, дающая подсчет голосов (или нормализованный подсчет голосов) для каждого из выходных классов.

Все указанные значения могут быть получены с использованием: bag.boston2$test