我正在运行一个随机森林模型,该模型所产生的结果从统计角度来看对我来说绝对是毫无意义的,因此我坚信必须在randomForest上出现代码错误包。
至少在模型的此迭代中,预测的/左侧变量是具有3个可能结果的政党ID:民主党,独立,共和党。我运行模型,得到结果,很好。在这一点上,我并不是很在意结果本身,而是在我进行小的修改时会发生什么。
然后我尝试运行它(不包括独立版),那时候事情以我发现神秘的方式出现问题。具体来说,它几乎失去了预测任何的所有功能,并将几乎所有的观察结果标记为属于同一类(民主人士)。
“好的,独立意见中包含的信息对预测很重要。”这是我的第一个想法,尽管我无法为自己的生活弄清楚为什么会如此,因为该模型非常难以识别独立人士。
奇怪的是,对该假设进行了简单的检验,证明它不是正确的。如果我删除一个方ID为Independent(独立)的观察值(样本数量略多于4000个观察值,因此1个观察值是舍入误差),则模型运行良好。因此,即使从“独立”结果类别中出于所有意图和目的完全不了解任何内容,该模型仍会按预期运行。只有真正删除了“独立”类别之后,事情才出现问题。
此外,只是想避开一个潜在的建议:它似乎并非某种程度上是创建新的LHS变量的结果。如果我改为在删除独立变量之后使用party_id_3_cat降低级别,并使用相同的LHS变量,则会得到相同的结果。
据我所料,“没有独立”版本(以下称为“ two_cat”)和“只有一个独立”版本(以下称为“ leave_one”)的结果应几乎相同,因为它们具有几乎相同的数据。但是,这两个模型产生的实际结果完全不同。我已经绞尽脑汁,无法想象为什么会这样。有谁知道关于randomForest包的信息(或一般来说,关于随机森林模型的信息,尽管可能性似乎较小),可以解释这种现象?如果重要的话,LHS和RHS变量都是因子变量。
谢谢!
代码:
load("three_cat.Rda")
two_cat<-subset(three_cat,party_id_3_cat!="2. Independents")
leave_one_in<-subset(three_cat,party_id_3_cat!="2. Independents"|case_id=="30")
two_cat$party_id_2_cat<-as.factor(ifelse(two_cat$party_id_3_cat=="1. Democrats (including leaners)","Dem","Rep"))
rf_three_cat <- randomForest(party_id_3_cat~[RHS VARS},
data=three_cat,
ntree=200,mtry=4,
type="classification",
importance=TRUE,confusion=TRUE)
rf_leave_one <-randomForest(party_id_3_cat~[RHS VARS],
data=leave_one_in,
ntree=200,mtry=4,
type="classification",
importance=TRUE,confusion=TRUE)
rf_two_cat <-randomForest(party_id_2_cat~[RHS VARS],
data=two_cat,
ntree=200,mtry=4,
type="classification",
importance=TRUE,confusion=TRUE)
rf_three_cat$confusion
rf_leave_one$confusion
rf_two_cat$confusion
结果:
> rf_three_cat$confusion
1. Democrats (including leaners) 2. Independents 3. Republicans (including leaners) class.error
1. Democrats (including leaners) 1150 3 668 0.3684789
2. Independents 296 4 231 0.9924670
3. Republicans (including leaners) 600 9 1055 0.3773234
> rf_leave_one$confusion
1. Democrats (including leaners) 2. Independents 3. Republicans (including leaners) class.error
1. Democrats (including leaners) 1080 0 741 0.4069193
2. Independents 0 0 1 1.0000000
3. Republicans (including leaners) 517 0 1097 0.3203222
> rf_two_cat$confusion
Dem Rep class.error
Dem 1776 45 0.0247117
Rep 1581 33 0.9795539