我正在运行一个随机森林模型,它产生的结果从统计角度来看对我来说完全没有意义,因此我确信有些东西mustrandomForest 包的代码出现错误。
至少在模型的本次迭代中,预测/左侧变量是具有 3 种可能结果的政党 ID:民主党、独立党、共和党。我运行模型,得到结果,很好。在这一点上,我并不是非常关心结果本身,而是当我进行小修改时会发生什么。
然后我尝试在排除独立人士的情况下运行它,而这就是事情以我觉得神秘的方式出错的时候。具体来说,它失去了几乎所有的预测能力anything,和标签几乎all观察结果属于同一阶级(民主党)。
“好吧,好吧,独立观察中包含的信息对于预测很重要。”这是我的第一个想法,尽管我一生都无法弄清楚为什么这是真的,因为该模型在识别独立个体方面非常糟糕。
奇怪的是,对该假设的简单检验证明它是not真的。如果我删除除一个党 ID 为 Independent 的观察值之外的所有观察值(样本量总计略多于 4000 个观察值,因此 1 个观察值是舍入误差),则模型表现良好。因此,即使出于所有意图和目的绝对没有从“独立”结果类别中学习任何内容,模型也会按预期运行。只有当独立类别被真正删除后,事情才会出错。
另外,只是为了阻止一个潜在的建议:它似乎不是创建新的 LHS 变量的结果。如果我在删除独立变量后只是在 party_id_3_cat 上降低级别并使用相同的 LHS 变量,则会产生相同的结果。
据我想象,“无独立”版本(下面称为“two_cat”)和“只有一个独立”版本(下面的“leave_one”)的结果应该几乎相同,因为它们具有几乎相同的数据。然而这两个模型产生的实际结果是戏剧性地不同的。我绞尽脑汁也无法想象为什么会是这样。有谁知道有关 randomForest 包(或一般的随机森林模型,尽管这似乎不太可能)的任何信息可以解释这种行为?如果它很重要,则 LHS 和 RHS 变量都是因子变量。
提前致谢!
Code:
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
Results:
> 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