You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R randomForest预测recent_fall缺失major fall类别问题求解

问题原因排查

  1. 特征选择错误
    你将full_id(受试者唯一标识)加入了训练特征,该变量为每个样本独有,完全不具备泛化预测能力,还会严重干扰模型学习年龄、疾病、性别等有效特征和跌倒类别的关联,是首要需要删除的无效特征。
  2. nodesize参数设置不合理
    你设置nodesize = 0.01*nrow(pt_data_new),换算后节点最小样本量约为147,随机森林的分类节点要求样本量大于该值才会继续分裂,占比仅19%的major fall样本根本无法形成独立分类节点,模型会自动倾向于预测占比更高的类别来降低整体误差。
  3. 类别不平衡未做处理
    三类标签分布差距较大,major fall占比最低,模型默认以整体准确率为优化目标,会主动牺牲小类的识别率,最终导致没有样本被判定为major fall。从你提供的混淆矩阵也能看出,major fall的分类误差高达87%,模型本身对该类的识别能力极差。

具体解决步骤

  • 修正特征列表,删除无意义的id类特征
    修改模型公式,去掉full_id:
    fall.formula <- recent_fall ~ age + gender + dx
    
  • 调整nodesize为合理值
    分类任务默认nodesize为1,你的数据集可以设为1~10之间的数值,不要按样本比例设置:
    fall.model <- randomForest(formula=fall.formula,
                 data=pt_data_new,
                 ntree = 500,
                 mtry = 2, # 总特征仅3个,mtry设为2更合理
                 nodesize = 5
                 )
    
  • 处理类别不平衡问题
    给小类设置更高的分类权重,通过classwt参数实现,权重可按类别占比的反比设置:
    # 计算各类别权重,占比越低权重越高
    class_weights <- c(
      "major fall" = 1/0.19,
      "minor fall" = 1/0.36,
      "no fall" = 1/0.46
    )
    # 训练时加入权重参数
    fall.model <- randomForest(formula=fall.formula,
                 data=pt_data_new,
                 ntree = 500,
                 mtry = 2,
                 nodesize = 5,
                 classwt = class_weights
                 )
    
  • 调整预测阈值(可选)
    如果加权重后还是很少有major fall的预测结果,可以放弃默认的多数投票规则,输出预测概率后手动调低major fall的判定阈值:
    # 输出各类别的预测概率
    pred_proba <- predict(fall.model, newdata=fall_test_new, type="prob")
    # 手动调整阈值,比如major fall概率大于0.2就判定为该类
    Fall.Prediction <- ifelse(pred_proba[,"major fall"] >= 0.2, "major fall",
                       ifelse(pred_proba[,"minor fall"] >= 0.5, "minor fall", "no fall"))
    # 转成和原标签一致的因子类型
    Fall.Prediction <- factor(Fall.Prediction, levels = levels(pt_data_new$recent_fall))
    

内容的提问来源于stack exchange,提问作者Nick Mirante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:36:03