【问题标题】:Random forest survival analysis crashes随机森林生存分析崩溃
【发布时间】:2018-11-28 16:37:23
【问题描述】:

我正在尝试在包含 59 个变量的 6500 条记录数据帧上运行 RFSRC:

rfsrc_test <- rfsrc(Surv(TIME, DIED) ~ ., data=test, nsplit=10, na.action = "na.impute")

当我在 1500 条记录上运行它时,它似乎工作,但在整个数据集上崩溃。
它在没有任何特定错误的情况下使 R 崩溃 - 有时它会给出“异常处理错误”。
任何想法如何调试这个?我在没有任何运气的情况下浏览了数据库中的奇怪行。

【问题讨论】:

    标签: r random-forest survival-analysis


    【解决方案1】:

    我们不知道每条记录的大小,也不知道变量的复杂性。

    当我遇到 RAM 开销时,我也遇到过类似的情况。 R 不是为海量数据集设计的。并行处理将解决此问题,但 R 不是为此而设计的,下一个建议是购买更多 RAM。

    我的方法是减少变量的数量,直到您可以处理 6500 条记录(以确保它只是数据集的大小)。然后我会预先筛选每个变量的适合度,例如GLM 并使用解释大量数据并最小化残差的变量。然后我会在减少的变量数量上重新运行生存分析。

    【讨论】:

    • 谢谢。所以每条记录包含59个变量(11个数字,其余是分类),最后2个是时间(数字)和死亡(逻辑)。所以我想到了内存——所以我把它放在我的电脑上,它的内存是笔记本电脑的两倍——没有帮助....
    • RAM 瓶颈的典型标志是计算逐渐减慢,直到崩溃或停止。如果它迅速崩溃,这可能不是答案。仅仅将 RAM 翻倍可能还不够。但是,如果您可以处理更多记录,例如2500 而不是 1500 它表明 RAM 是问题
    【解决方案2】:

    您可以检查的一件事是时间变量 - 存在多少个不同的值?生存森林会为每个节点保存一个累积风险函数。如果数据集中唯一时间点的数量大于 CHFS 的数量,那么 CHFS 也会变大。必须对我的时间变量进行舍入,这大大减少了运行时间。

    【讨论】:

    • 哦,哇,我不知道。它是 1 到 3000 天之间的任何数字……所以几乎有 2000-3000 种不同的选择……我应该把这些都装箱吗?它不会完全摆脱 SRC 的痛苦吗?
    • 是的,我会考虑对时间变量进行分箱。这取决于您需要的精度。如果您预测 2100 天而不是 2093 天,这有关系吗?
    猜你喜欢
    • 1970-01-01
    • 2015-07-09
    • 2017-01-22
    • 2018-02-05
    • 2019-04-23
    • 2019-09-05
    • 2013-09-22
    • 2018-02-18
    • 1970-01-01
    相关资源
    最近更新 更多