上次已经对 Polynomial SVD 做过详细解释——经典的多项式响应面算法。但它有一个众所周知的痛点:项数爆炸。
6 个变量、3 阶多项式,就是 84 项。这些项里大量是"凑数"的,对输出几乎没有贡献,全留着既浪费宝贵的训练点,又容易过拟合。Polynomial SVD 的解法是让工程师在 Term Selection 里手动勾掉没用的项,但这要求我们对问题非常了解,而且项一多,手动挑选本身就是一场灾难。
今天的主角 Stepwise Regression(逐步回归),就是把这个"手动勾选"的过程彻底自动化的算法,如果说 Polynomial SVD 是手动挡,那 Stepwise 就是它的自动挡。
"Stepwise Regression is an efficient and simple RSM algorithm: fully based on polynomial regression, it automatically adds and removes different polynomial terms from the model in a stepwise manner, relieving the user from the cumbersome tasks of manually tailoring a model to the problem at hand."
—— Technical Report 2014-003(Rigoni, 2014)
你只需要选定"算法类型 + 判断标准",它自己逐项尝试,自动找出又精简又准的最优模型。这篇推文把 Stepwise 的完整知识体系一次讲透。
理解 Stepwise,必须先理解它的底层约束——边际性原理(Marginality Principle):
一句话:如果一个高阶项进了模型,它的所有"低阶组成部分"也必须在模型里。低阶项是高阶项的"地基"。
以两个变量 x₁、x₂ 为例:
反过来读:你想删掉 x₁(线性项)?不行——除非先把 x₁²、x₁·x₂ 这些"依赖 x₁"的高阶项先删光。
🏢 类比:盖楼
x₁² 是二楼,x₁ 是一楼,常数 1 是地基。你不能抽掉一楼却留着二楼,二楼会塌。同理,你不能删掉 x₁ 却保留 x₁²。
为什么要这么严格?三个理由:
统计可解释性:
大幅减少候选模型数量:
变量平移不变性:
| Forward | ||
| Backward | ||
| Stepwise |
👥 类比:团队管理
Forward 像招聘——从空团队开始,每次招一个最能干的人;Backward 像裁员——从满员团队开始,每次裁一个最没用的人;Stepwise 双向则像先裁员再补招。
每一轮的迭代过程:从"当前最优模型"出发,① 枚举所有"只加/删一个项(且遵守边际性)"能得到的候选模型 → ② 逐个训练、按你选的准则打分 → ③ 挑最好的作为新的当前模型 → ④ 重复,直到没有项能再改进(或达到最大迭代次数)。
加哪个项、删哪个项,谁说了算?Stepwise 提供四种判定标准,技术报告明确按能力从弱到强排列:
| Adjusted R² | ||
| AIC | ||
| BIC | ||
| F-test | 最强 |
前三者做的是同一件事:在"拟合好(RSS 小)"和"别太复杂(项少)"之间找平衡。区别只在惩罚强度——BIC 对复杂度的惩罚比 AIC 更狠。
F-test 的特殊性:它是成对比较(比较"加这个项之前 vs 之后"有没有显著变好),不是给全局打分。因为它本质是统计假设检验,所以最"严谨",但需要你额外设置显著性水平。
选了 F-test 作为标准,会出现两个额外参数:
⚠️ 官方铁律:删项的显著性水平必须大于加项的,设反了直接报错。原因:加项要"严格"(证明它真有用),删项要"宽松"(证明它真没用)——这是统计上的保守策略,防止模型来回震荡。
📎 细节要点:两个显著性水平,仅当 Algorithm type 选 Stepwise(双向)时成立。如果你用的是 Forward,面板上只会有 adding 水平(它只加项);用的是 Backward,则只会有 removing 水平(它只删项)。
p-value 是什么?一句话:在"假设这事本来没有"的前提下,观察到当前这么极端结果的概率。越小,说明结果越"不可能是巧合"。
🎲 骰 子例子
原假设 H₀:骰 子是公平的(默认"没异常")。结果你连续掷出 5 个 6。如果骰 子真公平,出现"5 个 6"这么极端结果的概率是 p = (1/6)⁵ ≈ 0.00013——这就是 p-value。p 值极小 → "公平骰 子几乎不可能出这种事" → 骰 子八成有问题 → 拒绝原假设。
最容易错的地方:p-value 不是"原假设成立的概率"。它是:先假定原假设成立,然后看数据有多离谱。数据越离谱,p 值越小,越有理由推翻原假设。
显著性水平 α 是什么?它是预先定好的"门槛",用来判断 p-value 算不算"够小",最常用 α = 0.05:
α 越小 = 门槛越严 = 越保守。α = 0.01 比 α = 0.05 更难"证明有事"。
很多人在这里绕晕:加项和删项的 p-value 判断,方向是不是相反的?记住一个核心心法:
加项和删项的原假设 H₀ 始终相同,都是"这项没用",不要换。p 值含义也不变(p 小 = 有用,p 大 = 没用),区别只在最后的动作方向。
| 加项 | |||
| 删项 |
⚠️ 常见错误:给删项换一个不同的原假设(比如"假设删除项有效果")会导致逻辑混乱。正确做法:原假设永远"这项没用"。加项 = "证明有用才加"(要 p 小);删项 = "证明没用才删"(要 p 大)。
📌 记忆口诀
加项要"证据充分才信它有用"(p 小);删项要"证据充分才信它没用"(p 大)。加项像录取(要高分),删项像开除(要铁证)。
Stepwise 不是"一次性把所有项都定好",而是"每轮只动一个项,慢慢逼近最优"。"stepwise"这个词本身就是"一步步"的意思。
⛰️ 类比:雾中爬山
雾大看不到山顶,你每走一步看看哪个方向更高、往那边挪一步,重复直到四面都比自己低。Stepwise 同理——每轮只试"加/删 1 个项",选最好的,一步步贪心逼近。
为什么必须"一轮只动一个项"?因为项一多(比如 84 项),"该留哪些、该删哪些"的组合是天文数字,没法一次算完。一次动一个项,每步只需比较有限的候选,简单高效。停止条件有两个,满足任一即停:
| A. 收敛 | |
| B. 达到最大迭代次数 |
为什么可能不收敛?两种情况:① 收敛慢(项多,加了删、删了加来回磨);② 震荡(尤其 F-test,几个差不多好的模型间来回跳)。达到上限就停,哪怕结果不是最优的。
核心结论:在 Design Space 手动训练的场景里,Stepwise 的"刹车"只有一个——Maximum number of polynomial SVD trainings(最大迭代轮数,达到即停)。
一个经典疑问:"每轮动一个项,不也就增加一个候选吗,怎么是几个候选?"这里混淆了两个不同的"一"——"一次动一个项"说的是每个候选的变化幅度;"几个候选"说的是候选的数量。
具体例子:Forward selection,当前模型含 3 项(1, x₁, x₂),还剩 81 项可加。这一轮是把 81 个项分别加进去试:
每个候选都只加了 1 个项(变化幅度 +1),但"加哪一个"有 81 种选择,所以候选有 81 个。为什么一次不多加几个?因为候选数会爆炸:
所以 Stepwise 刻意"一次只动一个项",把候选数压到线性量级,避免指数爆炸。
一句话记住:Stepwise Regression = Polynomial SVD + 自动选项 + 边际性约束。不用在项里手动挑,它自己按你指定的标准找出"又精简又准"的多项式模型。
Stepwise Regression 在 modeFRONTIER 的 RSM 家族中属于"经典但实用"的一档:它不改变多项式回归的本质,却用边际性约束 + 贪心搜索 + 统计判据三件套,把模型选择这件最折磨人的事自动化了。下次面对一堆设计变量、不知道该保留哪些项时,不妨试试这个"自动挡"。
更多算法内容,持续更新中...