跳到主要内容

机器学习分类

adaboost分类

把上一轮分错的个案加重,训练一串弱树桩,再按加权错误率给每棵树一个发言权,组合成强分类器。

更新日期 2026-08-29 机器学习

这篇能回答什么

AdaBoost 问的不是「第一根树桩准不准」,而是:把被分错的学生在下一轮变得更「吵」之后,弱分类器委员会能不能把三个年级拉开。每一轮只允许很浅的树(常是树桩),发言权 α_t 由该轮加权错误率决定——错得越少,这根树桩话越大。指数损失会把注意力推到难例上,所以标签填错时,它也会越学越盯着那些错行。

学生问卷教学运行用就读年级当三档金标准(表内 A/B/C),特征用数学学习兴趣、课堂专注、教学吸引力、家庭学习支持等量表。完整个案 189,三档大约 31% / 25% / 44%,没有哪一档压过一半太多。这种占用下,提升才有「难分年级」可加重;若像住房表那样六成同一档,第一轮树桩会先躺在多数类上。

什么时候不该用

年级标签里夹着明显乱填、或者量表有一批极端 1 分/5 分喷子,AdaBoost 会把噪声当难例追。更稳的票箱用随机森林分类。只要「兴趣每高 1 分,仍留在六年级的发生比」,用多项逻辑回归。年级是有序的且你相信平行优势比,才考虑有序逻辑回归,而不是把有序当名义去提升。

如何选择方法

提升与袋装的方向相反。袋装并行、平等投票;AdaBoost 串行改权,专门惩罚上一轮的错误。和逻辑回归比:两者都是加性模型,但逻辑回归加的是特征的 βx,AdaBoost 加的是整棵弱分类器乘以 α_t,从 α 反推「兴趣的优势比」没有定义。

  • adaboost分类:浅树 + 样本权重 + SAMME 多类组合。

  • 随机森林:并行袋装,对填错标签更钝。

  • GBDT:同样串行,但拟合的是损失的负梯度,不是指数损失加权重。

  • 多项逻辑回归:一次估计全部 logit 系数,给出 OR。

输入、输出与限制

输入

标签是名义定类(本案例为年级三档)。特征以李克特 1–5 与少量定类为主。编号、准标识符不要进。完整个案按分析列成表删除,所以 N=189 小于问卷全表 500。

  • 特征变量:最少 1 个,最多 30 个。

  • 标签变量:正好 1 个定类,水平 2–10。

输出

教学表是年级占用:项目写「adaboost分类」,三类频数与占比,外加合计 N。完整运行另有各轮加权错误、α_t 与训练/验证曲线。43.92% 是 C 档学生占比,不是提升后的命中率。

产品限制

  • 基学习器默认深度 1 的树桩,可选深度 2;再深就不再「弱」,提升会很快记住噪声。

  • 迭代默认 50,上限 200。加权错误率 ≥ 0.5 的轮次会被丢掉或提前停。

  • 多类采用 SAMME(离散),输出是加权投票,不是天然概率。

  • 有效行至少 30。

  • SPSS 没有 AdaBoost 菜单。不要拿「决策树 CRT 反复跑」冒充提升权重。

案例

研究问题。 教研组怀疑兴趣、专注、教学吸引力这些量表能否把五年级、四年级、六年级(教学记号 A/B/C)分开,而且特别在意那群「量表长得很像邻年级」的学生。他们不要一棵深树背下 47 个难例,而想看弱树桩在加重之后还认不认得这群人。

成表删除后剩下 189 人:A 59(31.22%)、B 47(24.87%)、C 83(43.92%)。最大档 43.92%,最小档仍有约四分之一。这种占用让指数损失有东西可追——B 档 47 人若总被树桩漏掉,下一轮权重会明显抬头。下载学生问卷,标签勾就读年级,特征勾兴趣、专注、教学吸引力、家庭支持。

下载教学示例表(学生问卷)

在 StatsX 中操作

  1. 步骤 1 · 载入学生问卷

    工作表选「有效样本数据」。单文件不超过 20 MB。厌学多选题那几列先不要全部塞进特征,除非你打算解释稀疏 0/1。

  2. 步骤 2 · 核对接力年级是不是三档

    画像里就读年级应能数出多个水平。本页占用按三档阅读;若你过滤掉一个年级,权重更新会按剩下的类重来。

  3. 步骤 3 · 搜索 adaboost 分类

    目录里回归与分类是分开的。本页预测的是年级名义类,不是兴趣均分。

  4. 步骤 4 · 年级进标签,量表进特征

    标签:就读年级。特征:数学学习兴趣、课堂专注情况、教学吸引力、家庭学习支持。迭代先用默认 50。

  5. 步骤 5 · 看权重有没有把小班抬起来

    先对 59+47+83=189。然后看训练曲线:若某一轮加权错误冲过 0.5,后面的树不应再进委员会。B 档人数最少,检查它有没有在后半程被反复点名。

工作台上传学生问卷
导入学生问卷,工作表为有效样本数据。
列画像查看就读年级水平
确认年级为定类,兴趣等列为低基数定量。
目录中选择 adaboost 分类
选定「adaboost分类」,不要选回归版。
为 AdaBoost 指定年级标签与量表特征
标签挂就读年级,特征挂兴趣与专注后运行。

如何阅读输出

这张表是标签直方图,是提升的起点。189 名完整个案里,三个年级分别 59、47、83 人。没有哪一档压过一半太多,委员会才有「难分年级」可加重。把 43.92% 写成 AdaBoost 准确率,等于把先验抄进了结果节。

adaboost分类结果表
项目类别统计量取值
adaboost分类类别 A频数59
adaboost分类类别 B频数47
adaboost分类类别 C频数83
adaboost分类合计有效样本 N189
adaboost分类类别 A占比(%)31.22
adaboost分类类别 B占比(%)24.87
adaboost分类类别 C占比(%)43.92

左右滑动可查看完整表格

教学示例表在 StatsX 工作台中的计算结果口径。

adaboost 的年级占用表
工作台 59 / 47 / 83 应与上表一致。
三个年级占用构成图
柱高是学生人数先验;提升是否成功要看后轮有没有把短柱对应的学生找回。

分类语言:先验接近(31 / 25 / 44),多数类基线只有 43.92%,比住房六成主导档苛刻——瞎猜 C 不再那么好看。指数损失会把总被分错的 B 档学生(47 人)越加越重;若标签里混了「五年级误填六年级」,后半程 α_t 会为这几行发颤。读洞察时找的是「难例有没有被抬起」,不是柱子谁最高。

理论与公式

初始化每条权重 w_i=1/N。第 t 轮在当前权重上拟合弱分类器 h_t,计算加权错误率 ε_t。SAMME 把多类修正写进发言权:

分错的行乘 e^{α_t} 再归一化。最终预测是各轮 h_t 的加权投票。K=3 时,ε_t 必须明显低于随机猜(约 2/3)才配得上正的 α_t;若某轮 ε_t≥1/2,该轮没有信息,产品会丢掉它。

指数损失对远离边界的错分指数放大,这与逻辑回归的对数损失不同:后者对概率 0.01 与 0.0001 的惩罚差是有限的。所以 AdaBoost 更「恨」难例,也更怕贴错的年级。过拟合表现为:训练加权错误被压到近 0,验证错误从某一轮开始抬头——应停在抬头之前,而不是加满 200 轮。

注意事项

  • N=189 是成表删除后的完整个案,不能拿 500 去对占用。

  • SAMME 的输出是投票分数,不宜直接当校准概率画 ROC,除非另做标定。

  • 树桩太弱时,五十轮也学不会面积式的深交互;这时应改 GBDT 或加深到 2,而不是盲加轮数。

  • 标签噪声会被当成难例。先用频数扫年级×极端量表格子。

  • 与逻辑回归的 β 不能换算。α_t 是整棵树桩的话权,不是「兴趣」的斜率。

  • SPSS 无对等过程。和 sklearn AdaBoostClassifier(algorithm="SAMME") 对齐轮数、树深与随机种子。

常见问题

参考文献

  • Freund, Y., Schapire, R. E. A decision-theoretic generalization of on-line learning and an application to boosting[J]. Journal of Computer and System Sciences, 1997, 55(1): 119–139.

  • Zhu, J., Zou, H., Rosset, S., Hastie, T. Multi-class AdaBoost[J]. Statistics and Its Interface, 2009, 2(3): 349–360.

  • Schapire, R. E., Freund, Y. Boosting: Foundations and Algorithms[M]. MIT Press, 2012.