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

R语言rpart等模型用于脆弱家庭数据集青少年GPA预测相关问题

脆弱家庭挑战赛数据集GPA预测问题解答

1. 算法选择说明

你可以根据研究目的和模型需求从三类算法中选择,选择rpart的合理依据如下:

  • 符合你的研究定位:你核心需求是探究哪些个体/家庭因子会影响青少年GPA,rpart(单棵回归树)可解释性极强,每一条分裂规则都可以直观对应到变量对GPA的影响逻辑,完全不需要分析黑箱模型的间接特征重要性,非常适合因果探索类研究
  • 适配你的数据规模:你的数据集只有4898条样本、14个输入特征,维度很小,rpart不会出现严重欠拟合,反而可以快速输出清晰的变量作用规律
  • 上手成本极低:不需要复杂调参就能得到稳定结果,非常适合机器学习初学者完成初期数据探索

如果后续你只追求GPA的预测精度,不要求输出可解释的变量影响逻辑,可以切换为随机森林(集成多棵决策树降低单棵树的方差,精度比单棵树高),如果对精度要求更高再换XGBoost即可。


2. 现有操作问题与核心概念解答

现有步骤错误点

你当前的操作存在2个核心错误:

  1. 不应该在测试集上训练rpart模型,测试集绝对不能参与任何模型拟合过程
  2. 预测代码里的数据集名称ffc.final1_train和你之前定义的final_train不一致,运行会报错

训练集/测试集拆分的作用

拆分的核心目的是评估模型的泛化能力:训练集用来拟合模型参数,测试集是完全未参与模型训练的「未知数据」,用来模拟模型落地后遇到新数据的真实表现,避免模型只在训练数据上表现好(过拟合)、在真实场景下效果大幅下降的问题。

两个树模型的选择与结果解读

你在测试集上训练的树模型完全没有实用价值,直接删除即可:所有模型训练只能在训练集上完成,测试集仅可用来评估模型效果。训练集拟合出的单棵树就是你可以用来分析影响因子的最终模型,越靠近树根的分裂变量对GPA的影响越大,每个叶节点的数值就是对应特征组合下的预测GPA均值。


3. 正确分步操作指引

步骤1:加载依赖包

library(tidyverse)
library(tidymodels)
library(rpart)
library(rpart.plot)

步骤2:构建分析数据集(你当前步骤正确)

final <- ffc %>% select(Gender, PPVT, WJ10, Grit, Self-control, Attention, Externalization, Anxiety, Depression, PCG_Income, PCG_Education, Teen_Mom, PCG_Exp, School_connectedness, GPA)

步骤3:拆分训练集和测试集(补充随机种子保证结果可复现)

set.seed(123) # 固定随机种子,每次运行拆分结果一致,方便复现结论
final_split <- initial_split(final, prop = .7)
final_train <- training(final_split)
final_test  <- testing(final_split)

步骤4:仅在训练集上拟合模型

gpa_model <- rpart(GPA ~., method = "anova", data = final_train, control=rpart.control(cp = 0.2, minsplit = 5, minbucket = 5, maxdepth = 10))

步骤5:可视化决策树

rpart.plot(gpa_model, type = 3, digits = 3, fallen.leaves = TRUE)

步骤6:分别在训练集、测试集做预测

pred_train <- predict(gpa_model, final_train)
pred_test <- predict(gpa_model, final_test)

步骤7:计算MAE评估模型效果

MAE <- function(actual, predicted) {
  mean(abs(actual - predicted))
}
# 训练集MAE
MAE(final_train$GPA, pred_train)
# 测试集MAE
MAE(final_test$GPA, pred_test)

步骤8:结果解读

  • 输入变量的重要性可以通过gpa_model$variable.importance查看,数值越大的变量对GPA的预测能力越强
  • 如果测试集MAE和训练集MAE差距小于10%,说明模型泛化能力较好;如果测试集MAE远大于训练集,说明模型过拟合,可以调大cp值或者减小maxdepth降低模型复杂度
  • 决策树图的每一条分支对应变量的取值规则,叶节点的数值就是该特征分组下人群的平均预测GPA

内容的提问来源于stack exchange,提问作者Tannya Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:09:02