GBDT梯度提升分类
这个方法是做什么的
梯度提升树:一棵一棵地往上加树,每一棵新树都去拟合当前模型还没解释掉的那部分(分类任务里是对数几率上的负梯度),加满 100 棵后把所有树的输出相加再转成类别概率。它与随机森林的差别不只是顺序还是平行——随机森林让每棵树都尽量长成一个完整的分类器再平均,梯度提升让每棵树只做一点微小的修正,靠 0.1 的学习率反复逼近。因变量是定类列,自变量可含定量与定类,定类列在管线内独热编码;报告不给系数,也不给任何自变量的 p 值。
报告共五张卡:卡① 建模设置与八项体检,卡② 分层 5 折交叉验证主结果与无信息率检验,卡③ 四张效果图,卡④ 逐类别指标、效应量区间与置换重要性,卡⑤ 论文表述。本模块在卡① 会多印一行别处没有的东西:“超参数·最大深度 | 3”。这个 3 是默认值,也是它区别于同族提升树的关键——每棵树最多切三刀、最多长出 8 片叶子,一棵树里最多只能让三个自变量同时参与判断。同族的「XGBoost分类」与「LightGBM分类」这一项默认是 6,随机森林则是“不限”。表4 上那些数字好不好,多半先由这一行决定,而报告只把数字印出来、不解释它。
需要准备什么数据
- 放入因变量Y:不限
- 放入自变量X:至少 1 个
数据要求
- 数据表至少 30 行。
- 单列缺失率不超过 20%。
- 不接受取值全都一样的列(零方差列没有可分析的变异)。
- 「放入因变量Y」的类别数需在 2~20 之间。
- 「放入因变量Y」的每一组至少 5 个样本。
以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。
什么时候用它
- 类别之间的边界是曲的、还带条件(“高投入 + 小面积”才达标),需要模型自己把这些组合切出来
- 样本量在几百到几万之间,愿意用多一点训练时间换更贴合的边界
- 自变量既有定量又有定类,且不想为了满足分布假设去做变换
- 需要一个与随机森林口径一致的强基线,用来判断“结论换个算法还成不成立”
前提:因变量是定类列,2~20 个类别、每类至少 5 例;整表至少 30 行,含缺失的整行剔除,缺失比例超过 20% 的列不要放进来。还有一条经验准则写在卡① 表3 第一行:样本量与独热后特征维数的比值应达到“每个特征至少 10 例”。逐轮拟合残差的机制在小样本上格外容易把噪声也拟合进去,所以样本越少,越要以表4 的交叉验证列而不是留出测试集列下结论。
什么时候不要用它
- 因变量是连续数值:用「GBDT梯度提升回归」。
- 要报告每个自变量的效应方向与显著性:本模块没有系数表;二分类结局用「逻辑回归」,结局有序用「有序逻辑回归」。
- 样本上万、特征上百,训练等不起:本模块每个节点要在全部特征上逐个候选切点比较,改用把特征分箱后按直方图找切点的「LightGBM分类」。
- 自变量之间高度共线,而你要据表8 排变量重要性:相关变量会互相分走贡献,排序不可靠;先用「VIF共线性诊断」看清结构再决定留哪几个。
- 观测之间不独立(同一对象多期、机构内嵌套):交叉验证会把同一个体拆到训练折与验证折两边,成绩虚高;用「面板模型」或「混合模型」。
- 你要的是“这几个指标整体上能不能区分各组”的统计检验:本模块给不出这种整体显著性,用「线性判别分析」的 Wilks' Λ。
容易误读的地方
- 同一张表里两个几乎相同的数,被贴上了不同的量级标签。 卡④ 表7 里 Cohen's κ=0.5000 判为“中等(moderate)”,紧挨着的 Matthews 相关系数 MCC=0.5003 判为“强”。两个数只差 0.0003,标签却不同,原因是两套分级标准不同:κ 用 Landis & Koch,“较强”要到 0.61;MCC 这一列以 0.5 为“强”的切点。把这两个词并排抄进结论会显得自相矛盾。报数值和区间,不要报形容词。
- 95%CI 是五折之间的区间,不是“换一批人”的区间。 表4 里 Accuracy 的折间标准差 0.0846,95%CI 是 [0.6449, 0.8551],宽度超过 0.2。这个区间由 5 个折的均值与标准差按 t 分布算出(自由度只有 4,临界值 2.776),它回答的是“重新分一次折,这个均值会挪多少”。模型换到另一批人身上还能不能有 0.75,这份报告一个字都没回答——卡⑤ 的外推提示也明说了这属于内部验证。
- 卡③ 的混淆矩阵不是留出测试集的混淆矩阵。 四张图的标题都写着“交叉验证折外预测,n=240”,图注也逐字说明“不是训练集回代结果”。所以拿混淆矩阵的对角线(本次 180/240)去和表4 最右列的留出测试集成绩对账,永远对不上——那一列只有 48 例。这两处口径都对,但它们回答的不是同一个问题。
- 留出测试集那一列的五个数恰好相同,是巧合,不是“互相印证”。 本次测试集 24∶24 共 48 例、判对 36 例,准确率、平衡准确率、精确率、召回率、F1 五项恰好全部落到 0.7500,κ 与 MCC 都落到 0.5000,和交叉验证均值那一列看上去分毫不差。数字相等只说明这一次的划分很对称,不能当作“两种口径互相验证”——它们连样本量都不是一回事(240 对 48)。
- 调轮数之前先想清楚它和学习率是一对。 卡① 的方法学说明写着“学习率越小通常需要越多的弱学习器”。把 100 轮加到 300 而不动 0.1 的学习率,模型会继续往训练数据上贴;把学习率调到 0.01 而不加轮数,则是把模型硬生生压回欠拟合。每改一次都要回到表4 看交叉验证均值有没有真的涨,而且要意识到:在同一份数据上反复调参再挑最好的那次,挑出来的数字本身已经偏乐观——卡⑤ 最后一条提示写着“若在同一数据上反复调参并挑选最优结果,交叉验证性能会被乐观偏倚”。
报告里有什么
- 输出结果一:数据概览与前提检验
- 输出结果二:交叉验证性能主结果表
- 输出结果三:分类效果可视化
- 输出结果四:效应量与事后分析
- 输出结果五:结论与学术表述
卡③ 全部基于交叉验证折外预测绘制:混淆矩阵与曲线所用的预测都来自模型未见过该样本的那一折,不是训练集回代结果。