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

如何在SAS中指定自定义分组实现交叉验证构建树模型

SAS 自定义交叉验证分组构建树模型实现方案

核心实现逻辑

SAS中做决策树、梯度提升树等树模型的官方过程步PROC HPSPLIT原生支持自定义交叉验证分组,无需使用默认的随机抽样分组逻辑,仅需提前在数据集中生成你自行指定的分组变量即可。

前置准备

你的输入数据集需要提前新增一列自定义分组变量,例如命名为cv_group,取值为1~k(k为你设定的交叉验证折数),每个观测的cv_group取值完全由你自行指定。

完整示例代码

基础实现(分类树场景)

/* 自定义k折交叉验证构建分类树 */
proc hpsplit data=你的数据集名 seed=123 plots=all;
    class 目标变量 分类自变量1 分类自变量2; /* 仅分类变量需要在此声明,连续变量不用加 */
    model 目标变量(event='目标事件取值') = 自变量1 自变量2 自变量3 ... 自变量n;
    /* 核心语句:指定自定义分组变量,SAS完全按照该变量取值划分交叉验证折数 */
    partition cvvar=cv_group;
    prune costcomplexity; /* 成本复杂度剪枝,可按需替换为其他剪枝规则 */
    output out=模型输出数据集 predicted=预测值变量名 prob=预测概率变量名;
run;

进阶:提取交叉验证性能指标

如果需要获取每折的模型效果指标(误分类率、准确率、AUC等),可以用ODS输出捕获对应结果:

/* 捕获交叉验证性能结果到数据集 */
ods output CrossValidatedFit=交叉验证性能数据集;
proc hpsplit data=你的数据集名 seed=123;
    class 目标变量 分类自变量1 分类自变量2;
    model 目标变量(event='目标事件取值') = 自变量列表;
    partition cvvar=cv_group;
    prune costcomplexity;
run;
ods output close;

/* 查看各折及平均性能指标 */
proc print data=交叉验证性能数据集;
run;

注意事项

  • 如果是构建回归树,仅需删除model语句中的event参数,将目标变量替换为连续型变量即可
  • 运行后查看结果中的「分区摘要」表,可以核对每折的观测数是否和你预设的分组完全一致,确认自定义分组生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:09:00