克里金模型,也叫克里金插值、Kriging模型,是一种基于地质统计学的插值方法,后来被广泛用作代理模型。简单说就是根据已知的样本点,用最优线性无偏估计来预测未知点的值,还能给出预测的不确定性。克里金模型因为插值精度高、能提供预测方差,在工程优化和可靠性分析中非常常用。在有限元分析中,克里金代理模型可以用来代替昂贵的有限元计算,大大提高效率。本文将介绍克里金模型的基本概念、原理、构建方法、应用场景和注意事项,帮助大家入门这门实用的代理建模技术。
一、克里金模型概述
1. 什么是克里金模型
克里金的基本概念。
什么是克里金:
- 是一种插值方法,也是一种代理模型
- 基于地质统计学,最早是用来估计矿藏分布的
- 由南非的矿业工程师Danie Krige提出,所以叫克里金
- 英文是Kriging,也叫高斯过程回归Gaussian Process Regression
- 是工程上很常用的一种代理模型
克里金的基本思想:
- 把要预测的函数看作是一个随机过程的实现
- 已知样本点的值
- 用最优线性无偏估计来预测未知点
- 不仅能给出预测值,还能给出预测的不确定性
- 也就是预测方差或者置信区间
克里金的特点:
- 是精确插值的,样本点上预测值等于真实值
- 可以给出预测的不确定性,也就是方差
- 适合中小规模的问题,样本数一般几十到几百
- 对光滑的函数拟合效果好
- 有很多变种,可以适应不同的问题
2. 为什么叫克里金
名字的由来。
名字的来源:
- 是以南非的矿业工程师Danie Krige的名字命名的
- 他最早在1951年的博士论文里提出了这个方法
- 用来估计金矿的储量
- 后来法国的数学家Georges Matheron发展了这套理论
- 形成了地质统计学这门学科
其他的名字:
- 也叫克里金插值
- 在机器学习里叫高斯过程回归
- 本质上是一回事,只是不同领域的叫法不同
- 都是基于核函数的线性预测方法
3. 克里金和其他代理模型的对比
各有各的特点。
和多项式响应面对比:
- 多项式响应面简单,适合低维弱非线性
- 克里金更灵活,非线性拟合能力更强
- 多项式是回归,克里金是插值
- 克里金能给不确定性,多项式一般不能
- 高维问题克里金更好一些
和径向基函数RBF对比:
- 都是插值型的代理模型
- 都能精确插值样本点
- 理论基础不太一样
- 克里金有更完善的统计解释
- 都很常用,效果差不多
和神经网络对比:
- 神经网络拟合能力更强,适合高维大样本
- 克里金中小样本表现好,理论更完善
- 克里金能给不确定性,神经网络一般不能
- 神经网络需要调的参数多
- 样本少的话克里金更稳
和支持向量机SVM对比:
- 都是核方法
- SVM更偏向分类,回归也能做
- 克里金更适合回归和插值
- 各有各的适用场景
4. 克里金的优点和缺点
优缺点总结。
优点:
- 插值精度高,样本点上精确
- 能给出预测的不确定性,也就是方差
- 有完善的统计理论基础
- 中小样本表现好
- 适合光滑的函数
- 参数相对好调
缺点:
- 样本多了计算量很大,是O(n³)的
- 高维问题效果会下降
- 不适合特别不光滑的函数
- 调参也需要一定经验
- 预测速度虽然比有限元快,但比简单模型慢一点
二、克里金模型的基本原理
1. 随机过程假设
克里金的理论基础。
基本假设:
- 把要建模的函数y(x)看作是一个随机过程的实现
- 这个随机过程有一定的统计性质
- 一般假设是平稳的,也就是均值和协方差不随位置变
- 或者是固有平稳的,增量的方差有限
普通克里金的假设:
- 随机过程的均值是常数,未知
- 协方差只和两点之间的距离有关
- 也就是协方差平稳
- 这是最常用的普通克里金的假设
简单克里金:
- 均值是已知的常数
- 比普通克里金少一个参数
- 但一般均值是不知道的,所以普通克里金更常用
2. 线性预测
怎么预测。
预测的形式:
- 未知点的预测值是已知样本点的线性组合
- ŷ(x) = Σ λi * y(xi)
- λi是权重系数
- 要找最优的权重
最优的标准:
- 无偏:预测的期望等于真实值的期望
- 方差最小:预测误差的方差最小
- 也就是最优线性无偏估计,BLUE
- 在这两个条件下求权重
3. 协方差函数和变异函数
很重要的概念。
协方差函数:
- 描述两个点之间的协方差
- 一般只和两点之间的距离有关
- 距离越近,协方差越大
- 距离远了,协方差趋近于0
变异函数:
- 也叫半方差函数
- 描述两点之间差值的方差的一半
- γ(h) = 0.5 * Var[y(x+h) - y(x)]
- 和协方差函数是对应的
- 地质统计学里更常用变异函数
常用的协方差函数/核函数:
- 高斯核:最常用的,最光滑
- 指数核:也常用,连续性差一点
- 三次样条核
- Matérn核:一族核,可以调节光滑度
- 还有很多其他的核函数
核函数的参数:
- 长度尺度:也叫相关长度,控制相关性的范围
- 每个维度可以有不同的长度尺度,各向异性
- 还有偏值、 sill、块金效应等参数
- 这些参数需要从样本中估计
4. 克里金方程组
怎么算权重。
普通克里金的方程组:
- 在无偏和最小方差的条件下
- 可以推导出一个线性方程组
- 解这个方程组就能得到权重
- 还有一个拉格朗日乘子
方程组的形式:
- 左边是样本点之间的协方差矩阵,加一行一列的1
- 右边是预测点和样本点的协方差,加一个1
- 解出来就是权重和拉格朗日乘子
- 然后加权求和就是预测值
预测方差:
- 克里金不仅能给预测值
- 还能算出预测的方差
- 也就是预测的不确定性
- 样本点上的方差是0,因为是精确插值
- 离样本越远,方差越大
5. 超参数估计
核函数的参数怎么来。
什么是超参数:
- 核函数里的那些参数,比如长度尺度
- 不是直接算出来的,需要估计
- 所以叫超参数
怎么估计:
- 常用的是极大似然估计MLE
- 也就是找让样本出现概率最大的参数
- 或者用交叉验证
- 还有贝叶斯方法等
极大似然估计:
- 假设样本服从多元正态分布
- 写出似然函数
- 找让似然最大的超参数
- 是一个优化问题
- 一般用梯度下降或者其他优化算法
注意事项:
- 超参数估计很重要,直接影响模型精度
- 可能会有局部最优
- 可以多试几个初始值
- 也可以用交叉验证来选
三、克里金模型的类型
1. 普通克里金
最常用的。
什么是普通克里金:
- 假设随机过程的均值是未知常数
- 是最常用的克里金类型
- 英文是Ordinary Kriging,简称OK
特点:
- 最简单最常用
- 假设均值是常数,未知
- 适用性广
- 一般先用这个试试
2. 简单克里金
均值已知的情况。
什么是简单克里金:
- 假设均值是已知的常数
- 比普通克里金少一个参数
- 英文是Simple Kriging,简称SK
什么时候用:
- 均值确实已知的时候
- 或者有先验知识知道均值
- 一般情况不知道均值,所以用得少
- 但理论分析有时候用
3. 泛克里金
有趋势的情况。
什么是泛克里金:
- 假设均值不是常数,是一个函数
- 一般是多项式趋势
- 英文是Universal Kriging,简称UK
特点:
- 可以处理有明显趋势的数据
- 比普通克里金更灵活
- 但参数也更多
- 适合有明显漂移的问题
4. 协同克里金
多个变量的情况。
什么是协同克里金:
- 不仅有主变量的样本
- 还有其他辅助变量的样本
- 利用辅助变量来提高主变量的预测精度
- 英文是Co-Kriging,简称CoK
什么时候用:
- 主变量的样本少,但辅助变量多
- 比如高精度模型样本少,低精度模型样本多
- 多保真建模常用
- 可以利用不同精度的信息
5. 其他类型
还有很多其他变种。
比如:
- 指示克里金:处理分类变量或者概率
- 概率克里金:估计超过阈值的概率
- 回归克里金:和回归结合
- 贝叶斯克里金:贝叶斯框架下的
- 等等,非常多
做代理模型的话:
- 一般普通克里金就够用了
- 有趋势的话用泛克里金
- 多保真的话用协同克里金
- 不用搞太复杂
四、克里金代理模型的构建步骤
1. 问题定义和数据准备
第一步。
明确问题:
- 输入变量是什么,有几个
- 输出是什么,单输出还是多输出
- 变量的范围是多少
- 精度要求多高
- 用来做什么,优化还是可靠性分析
数据收集:
- 需要训练数据,输入输出对
- 一般用高精度模型计算,比如有限元
- 样本点怎么选很重要
- 样本数量要合适
试验设计选样本:
- 怎么选样本点对结果影响很大
- 常用的有拉丁超立方抽样LHS
- 最优拉丁超立方
- 全因子、正交设计等
- 样本要均匀覆盖设计空间
样本数量:
- 克里金一般不需要特别多样本
- 几十个到几百个比较常见
- 太少了精度不够
- 太多了计算量大,而且可能过拟合
- 根据问题维度和复杂度来定
数据预处理:
- 输入一般要归一化
- 输出也可以标准化
- 可以加快超参数估计
- 提高数值稳定性
2. 选择核函数
选什么核。
常用的核函数:
- 高斯核:最常用的,最光滑
- 指数核:也常用,一阶连续
- Matérn核:可以调节光滑度,很灵活
- 三次样条核
- 等等
怎么选:
- 一般先试试高斯核,最常用
- 如果函数不是特别光滑,可以试试指数核或者Matérn
- 可以几个核都试试,看哪个效果好
- 高斯核一般是首选
各向同性还是各向异性:
- 各向同性:所有维度的长度尺度都一样
- 各向异性:每个维度有自己的长度尺度
- 一般各向异性更好,因为不同变量的影响尺度不一样
- 但参数更多,估计更难
- 维度多的话各向异性参数太多,可能不好估计
3. 超参数估计
找最优的参数。
估计方法:
- 极大似然估计MLE:最常用
- 限制极大似然REML:也常用,偏差小一点
- 交叉验证:也可以
- 贝叶斯方法:给出参数的分布
极大似然估计的过程:
- 写出对数似然函数
- 然后优化这个函数,找最大值
- 是一个无约束优化问题
- 一般用梯度下降、共轭梯度等
- 也可以用模式搜索等无梯度方法
注意事项:
- 可能有多个局部最优
- 最好多试几个初始点
- 优化的收敛性要注意
- 参数的范围要合理
- 可以加对数变换,让优化更容易
4. 模型评估
模型好不好。
怎么评估:
- 看预测精度
- 常用的指标有均方误差MSE、均方根误差RMSE、决定系数R²等
- 还要看预测方差合不合理
评估方法:
- 留一法交叉验证LOO:克里金有快速算法,很方便
- k折交叉验证
- 留出法:分训练集和测试集
- 等等
留一法交叉验证:
- 每次去掉一个样本,用剩下的预测这个点
- 看预测准不准
- 克里金有特殊的公式,可以快速计算,不用每次重新训练
- 很方便,样本不多的时候常用
常用的评估指标:
- R²决定系数:越接近1越好
- RMSE均方根误差:绝对误差
- MAE平均绝对误差
- 相对误差
- 等等
5. 模型优化和迭代
不好就改进。
如果精度不够怎么办:
- 增加样本点,特别是在误差大的地方加点
- 换核函数试试
- 调整超参数估计的方法
- 检查数据有没有问题
- 是不是变量范围太大了
- 等等
加点的策略:
- 可以用自适应加点
- 比如在预测方差大的地方加点
- 或者在误差大的地方加点
- 也可以用序贯设计的方法
- 一步步把模型建准
6. 模型使用
最后用起来。
怎么用:
- 训练好的模型保存下来
- 需要预测的时候输入x
- 就能得到预测值和预测方差
- 很快,比有限元快多了
注意事项:
- 注意不要外推太多,超出训练范围精度没保证
- 预测方差可以用来衡量可信度
- 重要的结果最好用高精度模型验证
- 可以结合优化算法、可靠性分析等使用
五、克里金在有限元中的应用
1. 快速优化设计
最常见的应用。
怎么用:
- 先用试验设计选一些样本点
- 每个样本点算一次有限元
- 用这些样本训练克里金代理模型
- 然后在代理模型上做优化
- 最后用有限元验证最优解
好处:
- 比直接用有限元优化快很多
- 可以用更高级的优化算法
- 可以做全局优化
- 大大缩短设计周期
为什么选克里金:
- 精度高,插值准确
- 能给预测方差,知道哪里不准
- 可以用加点的方法逐步提高精度
- 中小规模问题效果很好
2. 可靠性分析和不确定性量化
另一个大应用。
怎么用:
- 同样先建克里金代理模型
- 然后用代理模型做蒙特卡洛模拟
- 或者其他可靠性分析方法
- 算失效概率、可靠度这些
好处:
- 原来直接用有限元做蒙特卡洛根本算不动
- 有了代理模型就快多了
- 可以做大量的抽样
- 结果更准确
为什么克里金适合:
- 精度高,特别是尾部的精度对可靠性很重要
- 能给预测方差,可以做更高级的方法
- 比如主动学习可靠性分析
- 在失效边界附近加点,提高精度
主动学习可靠性分析:
- 是现在很火的方向
- 用克里金的学习函数来选加点的位置
- 一步步把失效边界附近的模型建准
- 用很少的样本就能得到准确的失效概率
- 效率特别高
3. 参数辨识和模型校准
反问题。
怎么用:
- 有试验数据,要校准模型参数
- 用克里金代替有限元
- 然后做优化或者贝叶斯推断
- 找最优的参数
好处:
- 反问题一般要算很多次正问题
- 有代理模型效率高很多
- 可以用更高级的参数辨识方法
- 结果更可靠
4. 多保真建模
不同精度的模型结合。
怎么用:
- 有高精度模型,准但慢,样本少
- 有低精度模型,快但不准,样本多
- 用协同克里金把它们结合起来
- 用少量高精度和大量低精度建代理模型
好处:
- 比纯高精度的样本多,精度更高
- 比纯低精度的准
- 充分利用不同精度的信息
- 性价比高
5. 其他应用
还有很多其他应用。
比如:
- 多目标优化
- 灵敏度分析
- 疲劳寿命快速预测
- 材料参数的反演
- 损伤识别
- 等等,应用非常广泛
六、常用的工具和库
1. Python相关的库
现在很流行。
常用的库:
- scikit-learn:机器学习库,有高斯过程,也就是克里金
- SMT:Surrogate Modeling Toolbox,专门做代理模型的,克里金功能很强
- OpenTURNS:不确定性和可靠性分析的,也有克里金
- PyKrige:专门做克里金插值的
- GPy:高斯过程的库
- 还有很多其他的
推荐:
- SMT专门做代理模型,克里金实现得很好,推荐
- OpenTURNS做可靠性分析很好
- scikit-learn的高斯过程也能用,更通用
- 根据需要选
2. MATLAB相关
工程界常用。
MATLAB的工具:
- 克里金工具箱DACE:很经典的克里金工具箱
- 统计和机器学习工具箱
- 很多人自己写的克里金代码
- 等等
DACE工具箱:
- 很经典的克里金MATLAB工具箱
- 很多人用
- 简单易用
- 工程界很流行
3. 商业软件
还有很多商业软件。
比如:
- ANSYS DesignXplorer:有响应面,也有克里金
- Isight:过程集成和优化,有各种代理模型
- modeFRONTIER:也是优化软件,有代理模型
- LS-OPT:专门做优化和可靠性的
- 等等,很多商业软件都有
4. 自己实现
也可以自己写。
自己写的好处:
- 更灵活,可以自定义
- 理解更深入
- 可以根据需要修改
注意事项:
- 数值稳定性要注意
- 矩阵分解可能会有问题
- 超参数优化要做好
- 可以先从简单的版本开始
七、总结
克里金模型是一种很常用的代理模型,基于地质统计学,具有插值精度高、能提供预测不确定性等优点,在工程优化、可靠性分析、参数辨识等方面都有广泛的应用。构建克里金模型需要经过数据准备、核函数选择、超参数估计、模型评估等步骤,虽然有一定的理论基础,但用起来并不复杂,中小规模的问题效果很好。
克里金代理模型的要点总结:
- 克里金是一种插值型代理模型,基于地质统计学,也叫高斯过程回归
- 特点是精确插值、能给出预测方差、中小样本表现好
- 原理是把函数看作随机过程,用最优线性无偏估计来预测
- 重要的组成部分:核函数、超参数、克里金方程组
- 常用类型:普通克里金、简单克里金、泛克里金、协同克里金等
- 构建步骤:数据准备、选核函数、超参数估计、模型评估、优化迭代
- 在有限元中用于优化设计、可靠性分析、参数辨识、多保真建模等
- 有很多成熟的工具和库,比如SMT、OpenTURNS、DACE等
给初学者的建议:
- 先理解基本概念,知道克里金是怎么回事,有什么特点
- 不用一开始就把所有理论都搞懂,先用起来
- 从简单的例子开始,比如一个简单的函数,先练手
- 核函数先从高斯核开始,最常用
- 样本点的选择很重要,要用好的试验设计
- 超参数估计很关键,注意局部最优的问题
- 模型评估要用交叉验证,不能只看训练误差
- 留一法交叉验证对克里金很方便,要会用
- 代理模型不要外推太多,超出训练范围精度没保证
- 重要的结果最好用高精度模型验证一下
- 可以先用现成的工具,比如SMT或者DACE,不用自己写
- 有兴趣再深入研究理论和各种变种
克里金代理模型是一个很强大也很实用的工具,掌握了之后可以大大提高工程仿真的效率,解决很多以前算不动的问题。它比多项式响应面更灵活,比神经网络更稳定,在中小规模的问题上表现非常好,是工程上很常用的一种代理模型。希望本文能帮助大家入门克里金代理模型。如果有相关的经验或者问题,欢迎在评论区交流讨论。
|