R RandomForest: близость к новому объекту

Я обучил случайный лес:

model <- randomForest(x, y, proximity=TRUE)

Когда я хочу предсказать y для новых объектов, я использую

y_pred <- predict(model, xnew)

Как я могу рассчитать близость между новыми объектами (xnew) и обучающим набором (x) на основе уже существующего леса (модели)? Опция близости в функции прогноза дает только близости новых объектов (xnew). Я мог бы снова запустить randomForest без присмотра на комбинированном наборе данных (x и xnew), чтобы получить близость, но я думаю, что должен быть какой-то способ избежать повторного строительства леса и вместо этого использовать уже существующий.

Спасибо! Килиан


person Kilian    schedule 16.12.2011    source источник


Ответы (1)


Я считаю, что вы хотите указать свои тестовые наблюдения в самом вызове randomForest, примерно так:

set.seed(71)
ind <- sample(1:150,140,replace = FALSE)
train <- iris[ind,]
test <- iris[-ind,]

iris.rf1 <- randomForest(x = train[,1:4],
                         y = train[,5],
                         xtest = test[,1:4],
                         ytest = test[,5], 
                         importance=TRUE,
                         proximity=TRUE)

dim(iris.rf1$test$prox)
[1]  10 150

Таким образом, вы можете приблизиться от десяти тестовых случаев ко всем 150.

Я думаю, единственный другой вариант - вызвать predict в вашем новом случае rbind в соответствии с исходными учебными случаями. Но в этом случае вам не нужно заранее готовить тестовые примеры с вызовом randomForest.

В этом случае вы захотите использовать keep.forest = TRUE в вызове randomForest и, конечно, установить proximity = TRUE при вызове predict.

person joran    schedule 16.12.2011
comment
Спасибо! Для rbind новый футляр к обучающей выборке у меня работает хорошо. - person Kilian; 20.12.2011