我一直在研究一个需要从randomForest挖掘各个树预测的项目。我有一个randomForest对象,我在新数据上使用了预测方法来创建包含单个树预测以及整体森林预测的对象。
我发现有些情况下,定义拆分的值与数据的值相同。在这种情况下,算法应该选择左女儿继续,但在这些情况下,它选择了正确的女儿。换句话说,data_value< = split_value的测试返回FALSE而不是TRUE。
# rf2 is a RandomForest object
# get the 56th tree out of the RandomForest
> t56 <- getTree(rf2,k=56,labelVar=T)
# find the value of the split point for node 448
> t56[448,"split point"]
[1] 5.53
> t56[448,"split point"] == 5.53
[1] FALSE
> t56[448,"split point"] >5.53
[1] FALSE
> t56[448,"split point"] <5.53
[1] TRUE
> t56[448,"split point"] <5.529999999999999
[1] FALSE
> t56[448,"split point"] <5.5299999999999999
[1] TRUE
# value of the data used to make the split
> dat[,"V1"]
[1] 5.53
> dat[,"V1"]<= t56[448,"split point"]
[1] FALSE
有没有人见过这样的东西?
由于
进一步调查:
> options(digits=15)
> t56[448,"split point"]
[1] 5.53
在R-Studio查看器中还验证了t56对象的分割点值为5.53000000000000e + 00。
如果有其他方式表明价值不完全是5.53,我对此非常感兴趣。