【问题标题】:R RandomForest: Proximity for new objectR RandomForest:新对象的接近度
【发布时间】:2012-01-22 03:57:23
【问题描述】:

我训练了一个随机森林:

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

当我想预测新对象的 y 时,我使用

y_pred <- predict(model, xnew)

如何根据现有的森林(模型)计算新对象 (xnew) 和训练集 (x) 之间的接近度? predict 函数中的邻近选项仅给出新对象 (xnew) 之间的邻近度。我可以在组合数据集(x 和 xnew)上再次运行 randomForest 无监督以获得近似值,但我认为必须有某种方法来避免再次构建森林,而是使用已经存在的森林。

谢谢! 基连

【问题讨论】:

    标签: r proximity random-forest


    【解决方案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
    

    因此,您可以从 10 个测试用例到全部 150 个测试用例。

    我认为,唯一的其他选择是在您的新案例 rbinded 上致电 predict 到原始培训案例。但这样一来,您就不需要在调用 randomForest 时预先准备好您的测试用例。

    在这种情况下,您需要在randomForest 调用中使用keep.forest = TRUE,当然在调用predict 时设置proximity = TRUE

    【讨论】:

    • 谢谢!致rbind 训练集的新案例对我来说效果很好。
    猜你喜欢
    • 2015-12-28
    • 1970-01-01
    • 2015-04-30
    • 2018-04-21
    • 1970-01-01
    • 2019-04-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多