randomForest 包在删除一个预测类时的奇怪行为

2024-05-18

我正在运行一个随机森林模型,它产生的结果从统计角度来看对我来说完全没有意义,因此我确信有些东西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

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

randomForest 包在删除一个预测类时的奇怪行为 的相关文章

  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 使用 purrr 迭代替换数据帧列中的字符串

    我想用purrr使用以下命令在数据框列上迭代运行多个字符串替换gsub 功能 这是示例数据框 df lt data frame Year 2019 Text c rep a aa 5 rep a bb 3 rep a cc 2 gt df
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • twitterR 和 ROAuth R 软件包安装

    我在安装 CRAN 上的 twitteR 和 RAOuth 软件包时遇到一些问题 我尝试了几种不同的方法 在 Windows 下使用源代码 在 Ubuntu 下使用 RStudio 我尝试了以下命令 sudo apt get install
  • 使用 R 选择第一个非 NA 值

    df lt data frame ID c 1 1 1 2 3 3 3 test c NA 5 5 6 4 NA 7 3 NA 10 9 我想创建一个名为 value 的变量 它是每个单独 ID 测试的第一个非 NA 值 对于只有NA的个体
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • 如何在 R 中匹配多个 ggplot2 图中的调色板?

    自从被问到这个问题以来已经有一段时间了 但我知道一个事实 我很快就会提取新数据 我想弄清楚如何用这种技术来绘制它 看起来评论和答案中的人知道如何做到这一点 但我无法完全弄清楚所给我的内容 还有人想尝试一下吗 我正在尝试使用具有多个级别的因子
  • 为什么 R 更新后 sim_slopes() 中会出现此错误?

    我正在尝试使用 交互 包来创建简单斜率的约翰逊 尼曼图 但是 当尝试运行 sim slopes 函数时 出现以下错误 直到我将R更新到4 2 2 我才没有遇到这个问题 我使用的是 macOS Ventura 13 1 Error class
  • ggplot2:如何标记事件发生的日期

    我想从第二个情节中获取第一个情节的信息 第二张图表示事件发生的天数 它看起来更宽 因为它没有图例 但它是相同的时间尺度 我选择在第一个图中手动分配颜色 I would like to overlay the second plot dots
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • R:如何获取该月的周数

    我是 R 新手 我想要该日期所属月份的周数 通过使用以下代码 gt CurrentDate lt Sys Date gt Week Number lt format CurrentDate format U gt Week Number 3
  • ROC曲线和libsvm

    给定一条 ROC 曲线plotroc m see here http www csie ntu edu tw cjlin libsvmtools roc curve for binary svm 理论问题 如何选择要使用的最佳阈值 编程问题
  • 如何使用 SparkR 1.6.0 写入 JDBC 源?

    使用 SparkR 1 6 0 我可以使用以下代码从 JDBC 源读取数据 jdbc url lt jdbc mysql localhost 3306 dashboard user
  • 以编程方式将字符串宽度值插入到 sprintf() 中

    我正在尝试以编程方式将字符串宽度值插入到sprintf 格式 期望的结果是 sprintf 20s hello 1 hello 但我想插入20在同一通话中即时进行 因此它可以是任何号码 我努力了 sprintf ds 20 hello 1
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • Shiny:动态数据框构建; renderUI、观察、reactiveValues

    我认为如何使用 Shiny 的 renderUI 功能动态子集数据的问题经常出现 但我很难理解何时使用 renderUI 带有 uiOutput 而不是其他功能 包括观察 反应 反应值甚至条件面板 我想构建一个完全交互式的数据框架 其中每个
  • 麦当劳 omega:R 中的警告

    我正在计算几种不同尺度的欧米茄 并在 R 中使用不同的 omega 函数获取不同比例的不同警告消息 我的问题是如何解释这些警告以及报告检索到的 omega 统计数据是否安全 当我使用 从 alpha 到 omega 内部一致性估计普遍问题的
  • 如何将plot中的单变量列表图表转换为ggplot2格式?

    我正在搜索 但仍然找不到一个非常简单的问题的答案 我们如何使用 R 中的 ggplot2 生成一个变量的简单线图 我正在分析时间序列数据 并且想要对图表进行更复杂的操作 我认为如果我使用 ggplot2 代替会更好plot It works

随机推荐