news 2026/9/2 6:45:29

Kriging代理模型原理与MATLAB实现:从高斯过程到工程优化应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kriging代理模型原理与MATLAB实现:从高斯过程到工程优化应用

简介:本资源是一套面向工程优化、代理建模与空间统计学习者的Kriging代理模型MATLAB实现工具包,适用于高年级本科生、研究生及科研人员开展不确定性建模、响应面分析与黑箱函数近似等任务。压缩包共28个文件,包含20个核心MATLAB脚本(如kriging_dace_rsm_f*.m)、3个说明类txt文件(含实验设计参数配置)、2份PDF文档(含DACE工具箱原理与ASPECTS OF THE MATLAB TOOLBOX DACE详解)、1个bdf格式readme及1个mat数据文件,整体大小仅1.88MB,轻量易用。已有1976人下载学习,资源结构清晰,覆盖从均匀实验设计(DOE_uniform_*.txt)到Kriging建模(kriging_dace系列)、RSM对比及误差评估的完整流程,配套注释充分、模块解耦明确,可直接运行复现典型测试函数(f1–f4)的代理建模效果,是掌握Kriging原理与MATLAB工程实践的高价值入门与进阶素材。

1. 项目概述:从“黑箱”到“白盒”,Kriging代理模型的工程价值

在工程优化、仿真分析和实验设计中,我们常常会遇到一个令人头疼的问题:目标系统的计算成本太高。比如,一个复杂的有限元仿真,跑一次可能需要几个小时甚至几天;一次物理实验,从准备到完成,耗费的时间和金钱更是可观。直接在这些“昂贵”的模型或实验上进行优化、参数扫描或不确定性分析,几乎是不可行的。这就好比你想在一座地形极其复杂的山里找到最高点,但每走一步都要付出巨大的体力,显然不能漫山遍野地瞎逛。这时候,我们就需要一个高效的“向导”——代理模型。

Kriging模型,正是这个“向导”家族中的明星成员。它不是一个简单的拟合工具,而是一个基于统计学习理论的、具备预测不确定性量化能力的空间插值模型。简单来说,Kriging不仅能告诉你“在某个没测过的点,预测值大概是多少”,还能告诉你“这个预测值有多大的不确定性”。这个特性,让它成为了基于序列采样的高效全局优化(如Efficient Global Optimization, EGO)和基于可靠性的设计等领域的核心工具。

你提供的项目标题“Kriging.rar_Kriging代理_Kriging模型_kriging matlab_matlab代理模型”,以及相关的热词,清晰地指向了一个核心需求:如何在MATLAB环境中,从零开始搭建、训练并应用一个Kriging代理模型,以替代昂贵的原始仿真或实验过程。这个压缩包很可能包含了实现Kriging的核心MATLAB代码、示例数据,或许还有著名的DACE(Design and Analysis of Computer Experiments)工具箱的某个版本。无论你是从事机械设计、航空航天、汽车工程,还是化学工艺、金融建模,只要面临“计算贵、采样难”的困境,掌握Kriging都将为你打开一扇高效分析的大门。

2. Kriging模型的核心原理:不仅仅是“插值”

在深入代码之前,我们必须理解Kriging模型的“灵魂”。很多人把它当作一种高级的曲线拟合,这低估了它的能力。Kriging模型将未知函数视为一个高斯随机过程(Gaussian Process, GP)的实现。这个观点是理解其一切特性的基础。

2.1 模型的基本形式

Kriging模型假设我们想要逼近的昂贵函数 ( y(\mathbf{x}) ) 可以表示为: [ y(\mathbf{x}) = \mu(\mathbf{x}) + Z(\mathbf{x}) ] 其中:

  • ( \mu(\mathbf{x}) ) 是确定性部分,通常是一个回归模型,比如常数、线性或多项式。它描述了响应值的全局趋势。在普通Kriging中,通常取为常数 ( \beta )。
  • ( Z(\mathbf{x}) ) 是一个均值为零、协方差不为零的静态随机过程。它描述了偏离全局趋势的局部偏差,并且具有空间相关性:两个输入点 ( \mathbf{x}^{(i)} ) 和 ( \mathbf{x}^{(j)} ) 越接近,它们的随机偏差 ( Z(\mathbf{x}^{(i)}) ) 和 ( Z(\mathbf{x}^{(j)}) ) 就越可能相似。

这个协方差结构由相关函数(Correlation Function)来定义。最常用的是高斯相关函数: [ R(\mathbf{x}^{(i)}, \mathbf{x}^{(j)}; \boldsymbol{\theta}) = \exp\left(-\sum_{k=1}^{d} \theta_k |x_k^{(i)} - x_k^{(j)}|^{p_k}\right) ] 这里,( d ) 是输入变量的维度,( \boldsymbol{\theta} = [\theta_1, \theta_2, ..., \theta_d] ) 是相关长度参数(或称超参数),它控制着函数在每个维度上的“平滑度”。( \theta_k ) 越大,在该维度上函数变化越剧烈;( p_k ) 通常取2(高斯型)或固定为2,决定了相关性的衰减速度。

2.2 预测与不确定性量化

给定一组已知的样本点(训练集)( \mathbf{X} = [\mathbf{x}^{(1)}, ..., \mathbf{x}^{(n)}]^T ) 及其响应值 ( \mathbf{y} = [y^{(1)}, ..., y^{(n)}]^T ),Kriging的核心任务是对任意新点 ( \mathbf{x}^* ) 做出预测。

  1. 预测值(条件均值):在已知训练数据的条件下,新点响应值的最佳线性无偏估计(BLUP)为: [ \hat{y}(\mathbf{x}^*) = \hat{\mu} + \mathbf{r}^T\mathbf{R}^{-1}(\mathbf{y} - \mathbf{1}\hat{\mu}) ] 其中,( \mathbf{R} ) 是 ( n \times n ) 的训练样本点之间的相关矩阵,( \mathbf{r} ) 是 ( n \times 1 ) 的新点与所有训练点之间的相关向量,( \mathbf{1} ) 是全1列向量,( \hat{\mu} ) 是全局趋势的估计值。

    这个公式非常直观:预测值 = 全局趋势估计 + 一个修正项。修正项是训练点响应值偏离全局趋势的加权和,权重 ( \mathbf{r}^T\mathbf{R}^{-1} ) 体现了新点与所有训练点的空间相关性。离新点越近的训练点,其权重越大。

  2. 预测方差(条件方差):这是Kriging区别于普通回归模型的精髓。它量化了预测的不确定性: [ \hat{s}^2(\mathbf{x}^*) = \hat{\sigma}^2 \left[ 1 - \mathbf{r}^T\mathbf{R}^{-1}\mathbf{r} + \frac{(1-\mathbf{1}^T\mathbf{R}^{-1}\mathbf{r})^2}{\mathbf{1}^T\mathbf{R}^{-1}\mathbf{1}} \right] ] 其中,( \hat{\sigma}^2 ) 是过程方差的最大似然估计。

    预测方差在训练样本点处为零(因为我们已知精确值),在远离所有训练点的区域会增大。这完美刻画了“已知越多,不确定性越小”的认知过程。

2.3 超参数估计:模型训练的本质

模型中的超参数 ( \boldsymbol{\theta} ) 和过程方差 ( \sigma^2 ) 不是预设的,而是需要通过训练数据“学习”得到。通常采用最大似然估计(MLE)方法。我们最大化给定超参数下,观测到训练数据 ( \mathbf{y} ) 的概率(似然函数)。在实际操作中,更常用的是最小化负对数似然函数: [ \min_{\boldsymbol{\theta}, \mu, \sigma^2} \left[ n \ln(\hat{\sigma}^2) + \ln(|\mathbf{R}|) \right] ] 其中,( |\mathbf{R}| ) 是相关矩阵的行列式。优化这个关于 ( \boldsymbol{\theta} ) 的函数,就是Kriging模型“训练”或“拟合”的过程。这个过程通常需要使用无约束优化算法(如fmincon, fminunc)。

注意:超参数 ( \boldsymbol{\theta} ) 的优化是一个非凸问题,可能存在多个局部最优解。不同的初始值可能导致不同的结果,进而影响模型的预测性能。在实践中,通常建议从多个初始点开始优化,或使用全局优化算法进行初步搜索。

3. 在MATLAB中构建Kriging模型:从理论到代码

理解了原理,我们来看如何在MATLAB中实现它。你提到的“DACE”是一个经典的Kriging实现工具箱,很多开源代码都受其影响。下面,我将以一个自包含的、易于理解的实现流程来拆解,这比直接使用黑箱工具箱更能让你掌握精髓。

3.1 实验设计:高质量数据的起点

在训练模型前,首先要获取训练数据。如何用最少的样本点尽可能好地覆盖设计空间?这就是实验设计(Design of Experiments, DOE)要解决的问题。对于计算机实验(确定性仿真),拉丁超立方采样(Latin Hypercube Sampling, LHS)是最常用且有效的方法之一。

function X = lhsdesign_custom(n, d, bounds) % 生成改进的拉丁超立方样本 % n: 样本数 % d: 维度 % bounds: d x 2 矩阵,每行是[min, max] X = zeros(n, d); for i = 1:d % 1. 将[0,1]区间分为n等份 segment = (0:1/n:1-1/n)'; % 2. 在每个小区间内随机取点 points = segment + rand(n, 1)/n; % 3. 随机打乱顺序 X(:, i) = points(randperm(n)); end % 4. 缩放到实际边界 for i = 1:d X(:, i) = bounds(i, 1) + X(:, i) * (bounds(i, 2) - bounds(i, 1)); end end

为什么用LHS?与完全随机采样相比,LHS能保证每个输入维度的边缘分布都是均匀的,避免了样本点在某些维度上“扎堆”或出现大范围空白,从而用更少的点获得对设计空间更好的投影特性。

样本数n取多少?一个经验法则是 ( n = 10 \times d )。对于非线性程度高的函数,可能需要更多。可以先从一个基础数量开始,后续可以通过序列采样(如EGO)来补充。

3.2 核心函数实现

我们构建几个核心函数来实现Kriging。

1. 相关矩阵计算函数

function R = corr_matrix(X, theta, type) % 计算样本点之间的相关矩阵 % X: n x d 矩阵,n个样本,d维 % theta: 1 x d 向量,相关长度参数 % type: 相关函数类型,如 'gauss' [n, d] = size(X); R = ones(n, n); % 初始化 if strcmp(type, 'gauss') for i = 1:n for j = i+1:n % 计算欧氏距离(加权后) dist_sq = sum(theta .* (X(i,:) - X(j,:)).^2); R(i, j) = exp(-dist_sq); R(j, i) = R(i, j); % 对称矩阵 end end else error('Unsupported correlation type.'); end end

2. Kriging预测函数

function [y_pred, mse] = kriging_predict(x_new, X, y, theta, beta, sigma2, R_inv) % 对新点进行预测 % x_new: 1 x d 新点 % X, y: 训练数据 % theta, beta, sigma2: 训练好的模型参数 % R_inv: 预计算好的相关矩阵的逆,提高效率 [n, d] = size(X); % 计算新点与所有训练点的相关向量 r r = zeros(n, 1); for i = 1:n dist_sq = sum(theta .* (x_new - X(i,:)).^2); r(i) = exp(-dist_sq); end % 预测值 f = ones(n, 1); y_pred = beta + r' * R_inv * (y - beta * f); % 预测均方误差(即方差) u = (f' * R_inv * r - 1) / (f' * R_inv * f); mse = sigma2 * (1 - r' * R_inv * r + u^2 * (f' * R_inv * f)); % mse 可能由于数值误差出现极小负值,将其置零 mse = max(0, mse); end

3. 模型训练函数(最大似然估计)这是最核心也是最耗时的部分。

function [theta_opt, beta_opt, sigma2_opt, R_inv] = fit_kriging(X, y, theta0) % 拟合Kriging模型参数 % X, y: 训练数据 % theta0: 超参数初始猜测值 [n, d] = size(X); f = ones(n, 1); % 普通Kriging,全局趋势为常数 % 定义需要最小化的负对数似然函数 neg_log_likelihood = @(theta_vec) compute_nll(theta_vec, X, y, f); % 设置优化选项和边界 lb = 1e-5 * ones(1, d); % theta 必须为正 ub = 100 * ones(1, d); options = optimoptions('fmincon', 'Display', 'iter', 'Algorithm', 'interior-point'); % 调用优化器 [theta_opt, nll_min] = fmincon(neg_log_likelihood, theta0, [], [], [], [], lb, ub, [], options); % 根据最优theta,计算最终的beta, sigma2和R_inv R_opt = corr_matrix(X, theta_opt, 'gauss'); R_inv = inv(R_opt); beta_opt = (f' * R_inv * y) / (f' * R_inv * f); sigma2_opt = (y - beta_opt*f)' * R_inv * (y - beta_opt*f) / n; % 嵌套的负对数似然计算函数 function nll = compute_nll(theta_vec, X, y, f) R = corr_matrix(X, theta_vec, 'gauss'); % 防止矩阵接近奇异 [U, S, V] = svd(R); s = diag(S); tol = n * eps(max(s)); rank_R = sum(s > tol); if rank_R < n nll = 1e10; % 赋予一个很大的惩罚值 return; end R_inv_temp = inv(R); beta_temp = (f' * R_inv_temp * y) / (f' * R_inv_temp * f); sigma2_temp = (y - beta_temp*f)' * R_inv_temp * (y - beta_temp*f) / n; % 负对数似然(忽略常数项) nll = n * log(sigma2_temp) + log(det(R)); end end

3.3 一个完整的端到端示例

假设我们想用一个Kriging模型来近似一个已知的测试函数(例如六峰的Branin函数),以验证我们的代码。

%% 1. 定义测试函数和设计空间 branin = @(x1,x2) (x2 - 5.1/(4*pi^2)*x1.^2 + 5/pi*x1 - 6).^2 + 10*(1-1/(8*pi))*cos(x1) + 10; bounds = [-5, 10; 0, 15]; % x1范围[-5,10], x2范围[0,15] %% 2. 实验设计(生成训练数据) n_train = 20; X_train = lhsdesign_custom(n_train, 2, bounds); y_train = zeros(n_train, 1); for i = 1:n_train y_train(i) = branin(X_train(i,1), X_train(i,2)); end %% 3. 训练Kriging模型 theta0 = [1, 1]; % 初始猜测值 [theta_opt, beta_opt, sigma2_opt, R_inv] = fit_kriging(X_train, y_train, theta0); fprintf('训练完成。最优theta: [%.4f, %.4f], beta: %.4f, sigma^2: %.4f\n', ... theta_opt(1), theta_opt(2), beta_opt, sigma2_opt); %% 4. 生成测试网格进行预测 [x1_test, x2_test] = meshgrid(linspace(-5,10,50), linspace(0,15,50)); X_test = [x1_test(:), x2_test(:)]; n_test = size(X_test, 1); y_pred = zeros(n_test, 1); y_mse = zeros(n_test, 1); for i = 1:n_test [y_pred(i), y_mse(i)] = kriging_predict(X_test(i,:), X_train, y_train, ... theta_opt, beta_opt, sigma2_opt, R_inv); end y_pred_grid = reshape(y_pred, size(x1_test)); y_mse_grid = reshape(y_mse, size(x1_test)); %% 5. 计算真实值并评估误差 y_true_grid = branin(x1_test, x2_test); abs_error_grid = abs(y_pred_grid - y_true_grid); mse_test = mean(abs_error_grid(:).^2); fprintf('在测试网格上的均方误差(MSE): %.6f\n', mse_test); %% 6. 可视化 figure('Position', [100,100,1200,400]); % 子图1: 真实函数 subplot(1,3,1); contourf(x1_test, x2_test, y_true_grid, 20); colorbar; hold on; scatter(X_train(:,1), X_train(:,2), 50, 'r', 'filled'); title('真实 Branin 函数 & 训练样本点'); xlabel('x1'); ylabel('x2'); % 子图2: Kriging预测 subplot(1,3,2); contourf(x1_test, x2_test, y_pred_grid, 20); colorbar; title('Kriging 预测曲面'); xlabel('x1'); ylabel('x2'); % 子图3: 预测标准差(不确定性) subplot(1,3,3); contourf(x1_test, x2_test, sqrt(y_mse_grid), 20); colorbar; hold on; scatter(X_train(:,1), X_train(:,2), 30, 'w', 'filled'); title('预测标准差(不确定性)'); xlabel('x1'); ylabel('x2');

运行这段代码,你将看到三张图:真实的Branin函数曲面、Kriging预测的曲面、以及预测的标准差图。理想情况下,预测曲面应与真实曲面非常接近,而标准差图会清晰显示:在训练样本点(红色/白色点)附近,不确定性几乎为零;在远离样本点的区域,不确定性逐渐增大。

4. 高级话题与工程实践要点

掌握了基础实现后,在实际工程应用中,你会遇到更多挑战。以下是几个关键的高级话题和避坑指南。

4.1 相关函数的选择与超参数初始化

我们之前使用了高斯相关函数,它假设响应曲面无限可微,非常光滑。但对于有突变或折痕的函数,它可能过度平滑。其他选择包括:

  • 指数相关函数exp(-theta * |d|),产生连续但不可微的预测,适合不那么光滑的响应。
  • Matern相关函数:一个族,通过参数v控制光滑度,高斯函数是v→∞时的特例,更灵活。

超参数θ的初始化至关重要。一个糟糕的初始值可能导致优化陷入局部最优或失败。一个实用的启发式方法是:

% 基于设计空间大小和样本距离的粗略估计 for k = 1:d range_k = bounds(k,2) - bounds(k,1); dists = pdist(X_train(:,k)); theta0(k) = 1 / (0.5 * mean(dists)); % 一个经验起点 end

也可以使用更鲁棒的方法,如将θ的优化转化为对模型交叉验证误差的优化。

4.2 数值稳定性:相关矩阵的病态问题

当两个样本点非常接近时,相关矩阵R中对应的行/列会几乎相同,导致矩阵接近奇异(行列式接近0),求逆时会产生巨大的数值误差。这在优化似然函数和进行预测时都是灾难性的。

解决方案:

  1. 添加一个“ nugget ”项:这是最常用且有效的方法。修改相关函数为R_ij = exp(-theta*dist^2) + eta * delta_ij,其中delta_ij是Kronecker delta函数(i=j时为1,否则为0),eta是一个很小的正数(如1e-6到1e-10)。这相当于在随机过程Z(x)中引入一个微小的、空间不相关的白噪声,能显著改善矩阵条件数。
    R(i,i) = 1 + nugget; % 对角线元素增加 nugget
  2. 使用Cholesky分解代替直接求逆:在计算R^{-1} * vector时,解线性方程组R * z = vector比直接计算逆矩阵更稳定。利用R是对称正定的特性,进行Cholesky分解R = L * L',然后通过前代和回代求解。
    L = chol(R, 'lower'); % Cholesky分解 z = L' \ (L \ vector); % 等价于 R \ vector,但更稳定
  3. 在优化中处理奇异矩阵:如我们在fit_kriging函数中所做,在计算似然时检查矩阵的秩或条件数,如果接近奇异,则返回一个很大的惩罚值,引导优化器离开这个区域。

4.3 序列采样与高效全局优化

Kriging模型的真正威力在于其与序列采样策略的结合,尤其是高效全局优化。EGO算法的核心思想是:利用Kriging提供的预测和不确定性,定义一个“采集函数”来平衡“利用”(在预测值好的地方搜索)和“探索”(在不确定性高的地方搜索)。最常用的采集函数是期望改进(Expected Improvement, EI)。

对于一个最小化问题,在点x处的改进量定义为I(x) = max(0, y_min - Y(x)),其中y_min是目前观察到的最佳函数值,Y(x)x处的随机预测(服从正态分布N(y_pred(x), s^2(x)))。期望改进就是I(x)的期望值: [ EI(\mathbf{x}) = (y_{min} - \hat{y}(\mathbf{x})) \Phi(Z) + \hat{s}(\mathbf{x}) \phi(Z) ] 其中 ( Z = (y_{min} - \hat{y}(\mathbf{x})) / \hat{s}(\mathbf{x}) ),( \Phi ) 和 ( \phi ) 分别是标准正态分布的累积分布函数和概率密度函数。

EGO迭代步骤:

  1. 用初始DOE(如LHS)采样,运行昂贵模型,得到初始数据集。
  2. 基于当前数据拟合Kriging模型。
  3. 在整个设计空间内优化EI函数,找到使EI最大的点x_new
  4. x_new处运行昂贵模型,得到y_new
  5. (x_new, y_new)加入数据集。
  6. 重复步骤2-5,直到达到迭代次数或EI值小于某个阈值。

实现EI优化时,由于EI函数是多峰的,通常需要结合全局优化算法(如遗传算法、粒子群算法)和局部优化算法。

4.4 高维问题与计算复杂度

Kriging的计算复杂度主要来自相关矩阵R的求逆或分解,其复杂度为 ( O(n^3) ),其中n是样本数。当样本数超过几千时,训练和预测会变得非常缓慢。对于高维问题(d很大),还存在“维度灾难”,需要更多的样本点才能填充空间。

应对策略:

  1. 稀疏近似:使用局部Kriging或稀疏协方差矩阵近似技术。
  2. 降维:在构建代理模型前,使用主成分分析或主动子空间等方法降低输入维度。
  3. 并行计算:超参数优化和EI优化通常可以并行化。MATLAB的并行计算工具箱(parfor)可以加速这些过程。
  4. 专用工具箱:对于大规模问题,可以考虑使用GPy(Python)或GPstuff(MATLAB)等更专业的工具箱,它们实现了更高效的算法。

5. 常见问题排查与调试心得

在实际使用自编或第三方Kriging代码时,你可能会遇到以下典型问题:

问题1:训练时优化失败,提示“矩阵接近奇异或缩放错误”。

  • 原因:样本点中有距离非常近的点,或者相关长度参数theta优化到了极小的值,导致相关矩阵R的对角优势不明显。
  • 排查
    1. 检查训练数据X,是否有重复或极其接近的点?使用pdist(X)查看最小距离。
    2. 检查theta的优化边界(lb)。如果下界设得太小(如0),优化器可能会尝试极小的theta,使得R几乎变成单位阵(所有点间相关性都极弱),此时似然函数对theta不敏感,优化可能失败。将lb设置为一个小的正数(如1e-5)。
    3. 强制添加 nugget 效应。这是最有效的解决方法。在计算相关矩阵时,在对角线上添加一个小的正则化项(如1e-8)。

问题2:预测结果出现不合理的震荡或“过拟合”训练点。

  • 原因:相关长度参数theta过大。theta越大,相关性随距离衰减越快,模型会变得非常“局部化”,在训练点之间产生剧烈的波动。
  • 排查
    1. 可视化预测曲面和标准差曲面。如果曲面在训练点之间像针一样上下穿刺,且标准差曲面在非样本区异常高,很可能是theta过大。
    2. 检查优化得到的theta值。它们是否远大于设计空间尺度的倒数?例如,对于范围是[0,1]的变量,合理的theta通常在0.1到10之间。如果达到100或1000,就可能有问题。
    3. 尝试不同的相关函数。对于非光滑响应,高斯函数可能不合适,可尝试Matern函数(如v=3/2或5/2)。

问题3:模型对训练数据拟合得很好,但对新数据的预测误差很大。

  • 原因:样本点不足或分布不合理,未能捕捉到函数的主要特征;或者存在“过拟合”,模型记住了训练数据的噪声(尽管计算机实验通常无噪声,但数值误差或代理模型的结构误差可被视为噪声)。
  • 排查
    1. 交叉验证:使用留一法(LOO)或k折交叉验证。计算每个样本点被移除时,模型在该点预测的误差。如果交叉验证误差远大于训练误差,就是过拟合。
    2. 增加样本点:特别是在预测误差大的区域,通过序列采样(如EGO)增加新点。
    3. 检查是否真的需要 nugget:对于确定性计算机实验,理论上不应添加 nugget。但如果模型结构(如回归项选择不当)无法完美拟合真实函数,添加一个小的 nugget 可以起到正则化作用,提高泛化能力。

问题4:计算速度太慢,尤其是样本数n较大时。

  • 原因:相关矩阵求逆的 ( O(n^3) ) 复杂度占主导。
  • 优化
    1. 预计算与缓存:在序列采样中,每次新增一个样本点,完全重新拟合模型和求逆R效率低下。可以使用秩1更新公式来快速更新R^{-1}
    2. 使用Cholesky分解:如前所述,在需要多次求解R\b时,分解一次,多次回代,效率更高。
    3. 降采样:如果数据太多,可以考虑使用一个具有代表性的子集来训练模型,或者采用局部近似方法。
    4. 转向更高效的工具箱:如fitrgp(MATLAB自带的回归GP函数,R2015b以上)对于中小规模问题已经做了很多优化。

一个重要的调试习惯:可视化!可视化!可视化!

  • 永远不要只看数字指标。将训练样本点、预测曲面、真实曲面(如果已知)、预测不确定性曲面画在一起。
  • 画出一维或二维的切片图,对比预测值与真实值。
  • 画出超参数优化过程中的似然函数变化曲线,观察优化是否收敛。
  • 这些图形能给你最直观的反馈,帮助你快速定位模型是欠拟合、过拟合还是其他问题。

最后,Kriging代理模型是一个强大而灵活的工具,但其效果严重依赖于超参数的选择、相关函数的假设以及样本点的质量。它不是一个“即插即用”的黑箱。理解其背后的统计原理,仔细进行模型验证和诊断,结合具体的工程问题进行调整,你才能让它真正成为替代昂贵仿真、加速设计优化的利器。从一个小规模的、已知真实函数的测试案例开始(就像上面的Branin函数),逐步验证你的代码流程,然后再应用到复杂的实际问题上,这是最稳妥的学习路径。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 6:44:29

《重返未来:1999》挑战4-3通关攻略:机制解析与阵容搭配

这类游戏关卡攻略&#xff0c;最值得先看的不是通关阵容&#xff0c;而是关卡机制和核心解法。很多人卡在《重返未来&#xff1a;1999》的“聚合浪潮”活动“重返切洛梅”试炼场挑战4-3&#xff0c;往往是因为没搞懂这关的“锁血”机制和伤害类型要求&#xff0c;一上来就硬打&…

作者头像 李华
网站建设 2026/9/2 6:43:48

Python数据采集与分析实战:构建B站用户行为分析系统

简介&#xff1a;本资源是一套完整的本科毕业设计项目——基于Python的B站用户行为分析系统&#xff0c;面向计算机、数据科学及相关专业本科生&#xff0c;解决视频平台用户与UP主行为数据可视化分析的实际问题。压缩包共582个文件&#xff0c;约46.95MB&#xff0c;涵盖核心P…

作者头像 李华
网站建设 2026/9/2 6:39:36

钢轨打磨车无动力回送列车发车作业全流程解析

凌晨的南平站&#xff0c;一股萧瑟的冷风扫过站台。轨道线上&#xff0c;一台喷涂着“和谐CDC-16”标识的钢轨打磨车静静地停在股道上&#xff0c;等待编入回送列车。对于车站值班员来说&#xff0c;这只是一个普通的发车作业&#xff1b;但对于押车人员和技术整备人员来说&…

作者头像 李华
网站建设 2026/9/2 6:39:02

开源CFD框架BASILISK指南:自适应网格与VOF多相流仿真实践

简介&#xff1a;BASILISK 是一款面向蛋白质结构研究与生物信息学领域的开源侧链构象分析工具&#xff0c;其核心思路是用概率模型描述氨基酸侧链在连续χ角空间中的构象&#xff0c;而不是依赖传统旋转异构体库的离散近似&#xff0c;适合需要精细化侧链建模的科研人员与计算化…

作者头像 李华
网站建设 2026/9/2 6:38:23

TMS 8.5.1 与 Delphi 10.3 组件安装编译及 WEB Core 实战指南

简介&#xff1a;TMS 8.5.1 for Delphi XE10.3 Rio 是一套面向 Delphi 开发者的商业级组件套件&#xff0c;适配 Embarcadero Delphi XE10.3 环境&#xff0c;覆盖 Windows、macOS、iOS 与 Android 等多平台开发&#xff0c;适合需要快速构建用户界面、数据交互、报表图表与网格…

作者头像 李华
网站建设 2026/9/2 6:37:37

安全继电器工作原理与接线实战:从急停、安全门到光幕的完整指南

在工业自动化、机械设备安全控制等领域&#xff0c;安全继电器是保障人员和设备安全的最后一道“硬”防线。很多工程师在初次接触时&#xff0c;常被其复杂的接线图和多组触点搞得一头雾水&#xff0c;网上资料也多是零散的原理图&#xff0c;缺乏从原理到实操的系统讲解。本文…

作者头像 李华