R RandomForest: близость для нового объекта - PullRequest
2 голосов
/ 16 декабря 2011

Я натренировал случайный лес:

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

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

y_pred <- predict(model, xnew)

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

Спасибо! Kilian

1 Ответ

5 голосов
/ 16 декабря 2011

Я полагаю, что вы хотите указать свои тестовые наблюдения в самом вызове 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.

...