首页/文章/ 详情

RSM算法系列详解一:Polynomial SVD

44分钟前浏览4

Polynomial SVD  - 多项式奇异值分解

01RSM 基础:什么是响应面

1.1 它解决什么问题

真实的 CFD 仿真跑一次动辄几小时:网格几百万,带湍流,还要等残差收敛。但优化往往要跑成千上万个设计——直接跑真实仿真,时间不可接受。

RSM(Response Surface Model,响应面模型)的思路:先跑少量真实设计(DOE,20~50 个),用这些点拟合出一个快速数学函数,然后用这个函数替代真实仿真做快速优化。

三阶段流程

① 采样:DOE 跑少量真实设计,得到训练数据(输入 x → 输出 y)

② 拟合:用这些点训练出一个数学函数 y = f(x)(这就是 Polynomial SVD 干的事)

③ 预测:新输入代入 f(x),毫秒级得到预测输出,可跑成千上万次优化

重要前提:RSM 是"近似",不是"精确"。预测值和真实值之间永远有差距(叫 prediction error / residual)。

记住这条:用 RSM 找到的最优设计,一定要用真实仿真验证一次。

1.2 modeFRONTIER RSM 家族全景

【Classical 经典统计】最简单、最省样本· Polynomial SVD · Stepwise Regression · Parametric Surfaces   

【Statistical 统计插值】要求穿过每个训练点· Kriging· Anisotropic Kriging· DACE Kriging· Gaussian Processes · Shepard (k-Nearest) · SS-ANOVA  

【Advanced 高级】 · RBF  · Neural Networks  · Evolutionary Design

Polynomial SVD 是 classical 类别中最简单、最省训练点、最适合"先摸清大致趋势" 的算法。

02Polynomial SVD 概览与名字拆解

2.1 名字拆开看,两个词各代表什么
词    
回答什么问题    
大白话    
Polynomial
用什么"形状"去逼近    
用多项式:直线、抛物线、S 形曲线……    
SVD
怎么"求解"    
用奇异值分解(Singular Value Decomposition)这个数学工具算系数    

全称 = Polynomial Singular Value Decomposition(多项式奇异值分解)。

2.2 它在干什么(核心一句话)

用一条多项式曲线,去"贴着"你 DOE 采样出来的一堆散点,让整体误差最小——然后这条曲线就能拿来快速预测新设计的输出。

三个关键指标:

  • approximating:(逼近型)—— 不是插值型

  • best fitting: 找"最贴合"的,不是"精确穿过"

  • minimizing squared error: 最小化平方误差(即最小二乘)

它的定位:Polynomial SVD 是"趋势探测器",不是"精密预测仪"。它帮你快速看清"响应是线性还是二次趋势、哪个输入影响大",而不是给你小数点后 6 位的精确预测。

03逼近型 vs 插值型(核心定位)

类型    
代表算法    
行为    
大白话    
Interpolating         插值型
Kriging,RBF,K-nearest    
曲面精确穿过每一个训练点    
"必须经过所有已知点"——像用一根线串起所有珠子    
Approximating      逼近型Polynomial SVD    
, Gaussian Processes, Neural Networks    
曲面不要求穿过训练点,只最小化整体误差    
"找一条最能代表所有点的趋势线"——允许每个点有偏差    
到底差在哪里?

插值型:训练点上误差 = 0,精度高,但可能过拟合(曲线为了穿过每个噪声点而疯狂摆动)。适合做高精度优化代理。

逼近型(Polynomial SVD):训练点上有"残差"(允许偏差),但整体趋势最贴合。抗噪声、可读性强、训练点少也能用。

一个罕见例外:当训练点数恰好等于"多项式阶数 + 1"(单输入变量时),解唯一,此时 Polynomial SVD 变成插值型。但这在实际工程中几乎不会发生(输入变量通常多于 1 个)。

什么时候用它
情况    
结论    
响应函数简单 平滑(单调、单峰)    
✅ 最佳,多项式完全够    
刚做完 DOE,想快速看趋势    
✅ 合适,训练快、公式可读    
训练点很少(几十个)    
✅ 优势,SVD 小样本也稳    
响应高度非线性、多峰、剧烈震荡    
❌ 不行,多项式描述不了    
需要高精度预测做优化    
❌ 换 Kriging/RBF    

04多项式阶数与项数爆炸

4.1 阶数决定"形状的丰富度"
阶数    
形状    
能描述什么    
1(线性)    
直线    
单调增 / 单调减    
2(二次)    
抛物线    
单峰(先增后减)    
3(三次)    
S 形    
更复杂的起伏    
4.2 大坑:多变量时项数爆炸
输入变量数    
阶数    
展开项数    
1 个    
2 阶    
3 项    
2 个    
2 阶    
6 项(含交叉项 x·y)    
2 个    
3 阶    
10 项    
6 个3 阶84 项

d 阶、n 个输入变量的项数 = C(n+d, d) = (n+d)! / (n! × d!)

记住这个公式:项数 = 需要的最少训练点数。 6 个变量选 3 阶,你至少得有 84 个 DOE 设计,否则根本不够解这个方程组。

行本不够时会怎样:训练点不足时,modeFRONTIER 自动逐级降阶并在 Function Log 警告。看到警告 "degree lowered",说明你训练点不够。

如果刚上手

从 2 阶(二次) 开始试。二次已经能拟合抛物线趋势,对大多数工程问题足够。不要一开始就选 4 阶,容易因训练点不足而降阶。

05最小二乘法(Least Squares)

5.1 它在解决什么问题

你有一堆训练点,想找一条直线(或曲线)去"代表"这些点。但点不在一条直线上,没有哪条直线能同时穿过所有点。所以问题变成:找一条"最接近"所有点的线——关键是怎么定义"最接近"。

5.2 三个词拆开看
词    
含义    
残差 residual
每个点的"实际值 − 预测值"(竖直距离,有正有负)    
平方 squares
把每个残差平方。因为残差有正有负,直接相加会互相抵消(+39 和 −39 相加=0,假象),平方后全为正    
最小 least
找一组系数,让所有点残差的平方和尽可能小    

一句话:最小二乘 = 调整拟合线,让“所有点误差的平方之和”最小。

5.3 数字例子

3 个训练点,想拟合直线 y = a·x + b:

点    
x(进口流速 m/s)    
真实 y(压降 Pa)    
A    
10    
50    
B    
20    
90    
C    
30    
140    

猜第一条线 y = 4.5·x:

点    
预测 y    
残差    
残差²    
A    
45    
+5    
25    
B    
90    
0    
0    
C    
135    
+5    
25    

平方和 = 25 + 0 + 25 = 50

猜第二条线 y = 4.8·x − 2:

点    
预测 y    
残差    
残差²    
A    
46    
+4    
16    
B    
94    
−4    
16    
C    
142    
−2    
4    

平方和 = 16 + 16 + 4 = 36,比 50 小 → 这条线"更好"。

最小二乘就是自动地找让平方和最小的那条线——不需要你手工试。而 SVD 就是那个"自动求解"的数学工具,它又快又稳地解出最优系数。上述例子里只有三个点、2条线,看着简陋,但整个最小二乘说到底就是这一件事:找一组让平方和最小的系数。

为什么用 SVD? 拟合多项式本质是解"超定线性方程组"(方程数 > 未知系数数),无精确解。SVD 是解这种方程组数值上最稳定的方法,矩阵接近奇异时也能给出可靠解。

06训练指标(拟合度判断)

6.1 误差类(越小越好)
指标    
中文    
含义    
RSS
残差平方和    
所有残差平方加起来——就是最小二乘要最小化的那个量本身    
Mean absolute error
平均绝对误差    
残差绝对值的平均,"平均每个点偏多远"    
Mean relative error
平均相对误差    
残差占真实值的比例,"平均偏了百分之几"    
Mean normalized error
平均归一化误差    
残差占输出全范围的比例,多输出量纲拉平后比较    
6.2 拟合度类(越接近 1 越好)

R²(R-squared,决定系数) 是最重要的一个,回答"模型解释了数据波动的百分之多少"。

Adjusted R²(调整后 R²):惩罚多余项,防止"加项就变好"的假象,始终 ≤ R²。

6.3 AIC / BIC(相对指标)

只在"比较多个模型"时有意义,绝对数值无意义。规则:越小越好。

常见疑问

普通训练误差指的是最小二乘的误差吗?

解答

其实就是同一个东西。 最小二乘在后台拼命最小化的量 = RSS(残差平方和),它就是"训练误差"的本体。Function Log 里那一整组指标(MAE、MRE、MNE 等)都是基于同一个"残差"算出来的,只是口径不同:RSS 用"平方和",MAE 用"绝对值平均",MRE 用"占真实值的比例"。

07R² / Adjusted R² / AIC / BIC 深度解析

7.1 R² 的公式(就这一个,吃透它)

R² = 1 − RSS / TSS

量    
全称    
含义    
TSS
Total Sum of Squares 总平方和    
每个点到平均值横线的距离平方之和 = 数据天生的分散度    
RSS
Residual Sum of Squares 残差平方和    
每个点到拟合线的距离平方之和 = 模型没解释掉的    

R² 的含义:1 − (剩下的 ÷ 总的) = "模型解释掉的那部分占了多少比例"。

7.2 数字例子

4 个训练点:真实 y = [50, 90, 140],平均值 ȳ = 93.3。

TSS(每个点到平均值的距离平方):(50−93.3)² + (90−93.3)² + (140−93.3)² ≈ 1875 + 11 + 2178 = 4064

RSS(拟合线预测 [46, 94, 142],每个点到拟合线的距离平方):(50−46)² + (90−94)² + (140−142)² = 16 + 16 + 4 = 36

R² = 1 − 36/4064 = 1 − 0.0089 = 0.991

读作:模型解释了数据 99.1% 的波动,只剩 0.9% 没解释。 几乎完美。

7.3 R² 的典型值
R² 值    
含义    
好坏    
= 1    
拟合线精确穿过所有点    
完美(但警惕过拟合)    
= 0.9    
解释了 90% 的波动    
很好    
= 0    
跟"直接用平均值瞎猜"一样烂    
废了    
负数    
比瞎猜还差(极少见)    
彻底失败    
7.4 Adjusted R²:为什么要有"调整版"

R² 有个致命弱点:你往模型里多加一项(哪怕这项是纯噪声、毫无用处),R² 都会只增不减。

  • R²:加项 → 一定涨(被"无用项"骗)

  • Adjusted R²:加项 → 只有真有用才涨;加无用项反而跌

实用结论:想比较"2 阶 vs 3 阶多项式哪个更好"时,看 Adjusted R²,别看 R²。Adjusted R² 总是 ≤ R²。

7.5 AIC / BIC:只能在"比较"时用
指标    
奖励什么    
惩罚什么    
规则    
AIC
拟合好(RSS 小)    
模型复杂(项多)    
越小越好    
BIC
拟合好(RSS 小)    
模型复杂(惩罚比 AIC 更狠)    
越小越好    
类比

R² 是"考试分数"(绝对高低);AIC/BIC 是"性价比"(既要分数高,又要别堆无用的项)。两个模型对比时,选 AIC/BIC 更小的那个。

7.6 四个指标串起来
指标    
它回答什么    
怎么判断    
RSS
模型还剩多少误差没解释    
越小越好(最小二乘的目标)    
R²
模型解释了百分之多少的波动    
越接近 1 越好    
Adjusted R²
加项是不是真的有用    
越接近 1 越好,比较模型用它    
AIC/BIC
哪个模型"性价比"最高    
越小越好,只用于模型间比较    

但这里有个陷阱:R² 高 ≠ 模型一定好。一个 5 阶多项式硬拟合 5 个点,R² 能到 1,但曲线会疯狂摆动、预测新点一塌糊涂。这就是过拟合。所以别只看 R²,要配合留一误差一起看。

08留一法误差(Leave-One-Out, LOO)

8.1 它在担心什么

核心问题:普通训练误差是"作弊"的——你用全部点拟合出模型,又拿同一批点去测误差,当然看起来很好(因为模型"见过"这些点,可能只是死记硬背,而非真的掌握了趋势)。留一法就是为了戳穿这种假象。说白了,留一法就是防作弊:不允许模型拿自己做过的题来考试。

8.2 步骤(用 8 个训练点举例)

① 扣下点 A,用剩下 7 个点重新拟合一条线

② 用这条线去预测点 A(A 没参与拟合,是"没见过的"),算出误差 e₁

③ 放回 A,扣下点 B,用剩下 7 个点再拟合,预测 B,得 e₂

④ ……重复 8 次,每个点都被扣过、被预测过一次

⑤ 把 e₁ 到 e₈ 取平均 = 平均留一误差(mean LOO error)

8.3 怎么读这个值
情况    
含义    
留一误差 ≈ 训练误差    
(都不大)    
模型好,既拟合了数据,又真的掌握了趋势 ✅    
留一误差 >> 训练误差    
(留一误差很大)    
模型过拟合——靠死记硬背,一预测新点就露馅 ❌    

注意:LOO 计算很费时间(每扣一个点就重新拟合一次,8 个点拟合 8 次,5000 个点就是 5000 次)。所以它是可选项,不是默认开。而且只有部分算法支持 LOO——好在 Polynomial SVD 支持。

8.4 三概念关系(串联记忆)
概念    
角色    
大白话    
最小二乘
造模型的方法    
调整拟合线让平方误差最小    
训练指标
看模型贴不贴数据    
R² 越接近 1 越好    
留一误差
看模型会不会只会背题    
用"没见过的点"测试泛化能力    

一句话总结:最小二乘是造模型的方法,训练指标是看模型贴不贴数据,留一误差是看模型会不会只会背题、不会做新题。

09配置参数与训练数据选项

9.1 四个配置参数
参数    
层级    
说明    
Polynomial degree
Basic    
多项式阶数,越高形状越丰富但需更多训练点。小白从 2 阶开始    
Variable normalization
Advanced    
强烈建议开。把量纲差异大的变量缩放到同范围,避免大数值变量淹没小变量,防止数值不稳定
Term selection
Advanced    
手动勾掉不重要的项,做"精简模型"。训练点不够时尤其有用    
Compute leave-one-out errors
Advanced    
留一交叉验证,评估泛化能力,输出 mean LOO error    
Variable normalization 为什么重要

假设两个输入:x1 范围 [0, 30](进口流速 m/s),x2 范围 [0, 0.01](无量纲系数)。直接拟合,大数值变量会主导拟合过程,小数值变量的影响被淹没。归一化把所有变量缩放到相似范围(如 [0,1]),每个变量公平贡献。

Term selection 的双重好处
  1. 训练点不足时,去掉不重要的项,剩余项训练更准确
  2. 避免不重要项"稀释"重要项的效果
9.2 训练数据选项
  • Training set

     三种来源:表中全部设计 / 预先标记的设计 / 未标记的设计  
  • 训练集上限:5,000 个设计
  • Exclude error designs

    :默认自动排除含错误的设计(可关闭)  
  • Remove repeated designs

    :去重训练  

10Function Log 完整判读

训练完成后,Function Log 会输出多项式公式、每项系数及统计量,以及一组性能指标。以下是初学者最该关注的几个:

指标    
怎么看    
目标    
R² / Adjusted R²
0~1    
越接近 1 越好    
Mean absolute / relative / normalized error
与输出同单位或百分比    
越小越好    
RSS(残差平方和)
绝对数值    
越小越好    
AIC / BIC
相对指标    
越小越好(模型间比较)    

以上就是 Polynomial SVD 的完整纲要。

下一篇打算写Stepwise Regression——它就是 Polynomial SVD 的“自动档”,把手动勾项这件事交给算法自己判断。



来源:艾迪捷
非线性湍流UM爆炸曲面
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-10-22
最近编辑:44分钟前
艾迪捷
MBD CAE解决方案专家
获赞 23粉丝 47文章 634课程 4
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈