Algorithm 如何找到一个可以通过编程近似于另一个blackbox函数的函数?
我有两个功能Algorithm 如何找到一个可以通过编程近似于另一个blackbox函数的函数?,algorithm,math,estimation,black-box,stochastic-process,Algorithm,Math,Estimation,Black Box,Stochastic Process,我有两个功能 m1 = f1(w, s) m2 = f2(w, s) f1()和f2()都是黑框。给定w和s,我可以得到m1和m2 现在,我需要设计或找到一个函数g,这样 m2' = g(m1) 此外,m2和m2'之间的差异必须最小化 w和s都是随机过程 如何找到这样的函数g()?这属于什么知识领域 假设您可以调用f1、f2任意次数-这可以使用回归来解决 设置训练集:(w_1,s_1,m2_1),…,(w_n,s_n,m2_n) 将集合“转换”为g的参数: (m1_1,m2_
m1 = f1(w, s)
m2 = f2(w, s)
f1()和f2()都是黑框。给定w和s,我可以得到m1和m2
现在,我需要设计或找到一个函数g,这样
m2' = g(m1)
此外,m2和m2'之间的差异必须最小化
w和s都是随机过程
如何找到这样的函数
g()
?这属于什么知识领域 假设您可以调用f1、f2任意次数-这可以使用回归来解决
- 设置训练集:
(w_1,s_1,m2_1),…,(w_n,s_n,m2_n)
- 将集合“转换”为g的参数:
(m1_1,m2_1),…,(m1_n,m2_n)
- 创建“基本函数”。例如,对于
“修改”训练集的3级多项式将
很容易将其推广到任何 多项式或任何其他集合基函数的阶数(1,m1_1,m1_1^2,m1_1^3,m2_1),…
- 现在你有了一个问题,可以通过使用
假设您可以调用f1、f2任意次数-这可以使用回归来解决
- 设置训练集:
(w_1,s_1,m2_1),…,(w_n,s_n,m2_n)
- 将集合“转换”为g的参数:
(m1_1,m2_1),…,(m1_n,m2_n)
- 创建“基本函数”。例如,对于
“修改”训练集的3级多项式将
很容易将其推广到任何 多项式或任何其他集合基函数的阶数(1,m1_1,m1_1^2,m1_1^3,m2_1),…
- 现在你有了一个问题,可以通过使用
这类问题在统计或反问题等领域都有研究。这里有一种从理论上解决问题的方法(从反问题的角度): 首先,很明显,在一般情况下,函数g可能不存在。然而,如果你(假设)对w和s的统计量有所了解,那么你可以(尝试)计算的是后验概率密度p(m2 | m1),它可以用来计算给定m1的m2的估计量,例如,最大后验概率估计 后验密度可使用Bayes公式计算: p(m2 | m1)=(\int p(m1,m2 | w,s)p(w,s)dw ds)/(\int p(m1 | w,s)dw ds) 在这种情况下,这可能(理论上)很难应用,因为一些涉及的幻象概率密度是奇异的。进行数值计算的最佳方法取决于您可以对w和s的统计数据(例如高斯)以及函数f1、f2(例如平滑)进行的其他假设。没有银弹
amit的OLS解决方案可能是一个很好的起点。只要确保从w和s的正确分布中取样即可。这类问题是在统计或反问题等领域研究的。这里有一种从理论上解决问题的方法(从反问题的角度): 首先,很明显,在一般情况下,函数g可能不存在。然而,如果你(假设)对w和s的统计量有所了解,那么你可以(尝试)计算的是后验概率密度p(m2 | m1),它可以用来计算给定m1的m2的估计量,例如,最大后验概率估计 后验密度可使用Bayes公式计算: p(m2 | m1)=(\int p(m1,m2 | w,s)p(w,s)dw ds)/(\int p(m1 | w,s)dw ds) 在这种情况下,这可能(理论上)很难应用,因为一些涉及的幻象概率密度是奇异的。进行数值计算的最佳方法取决于您可以对w和s的统计数据(例如高斯)以及函数f1、f2(例如平滑)进行的其他假设。没有银弹
amit的OLS解决方案可能是一个很好的起点。只需确保从w和s的正确分布中取样即可。我认为这属于on。你有例子吗?你能从点(w,s)的抽样中产生成对(m1,m2)的散点图吗?如果该图不接近曲线,那么就没有希望找到g。如果该图看起来不像一个函数的图,例如,在同一个m1上有多个m2值,那么找到g也很复杂。如果它看起来不错,多项式回归可能已经给出了足够的g。听起来与回归问题有关。你能多次调用f1、f2吗?这个问题似乎离题了,因为它是关于数学的,而不是关于编程。仅仅因为程序可以解决某个问题,并不意味着它就是一个编程问题。你问的是解决这个问题所需的数学背景,而不是关于实现的任何具体编程问题。我相信这属于。你有例子吗?你能从点(w,s)的抽样中产生成对(m1,m2)的散点图吗?如果该图不接近曲线,那么就没有希望找到g。如果该图看起来不像一个函数的图,例如,在同一个m1上有多个m2值,那么找到g也很复杂。如果它看起来不错,多项式回归可能已经给出了足够的g。听起来与回归问题有关。你能多次调用f1,f2吗?这个问题似乎离题了,因为它是关于数学的,而不是关于编程的。只是因为有些事情是可以通过一个函数来解决的
%example functions
f = @(w,s) w.^2 + s.^3 -1;
g = @(w,s) s.^2 - w + 2;
%random points for sampling
w = rand(1,100);
s = rand(1,100);
%the data
m1 = f(w,s)';
m2 = g(w,s)';
%changing dimension:
d = 5;
points = size(m1,1);
A = ones(points,d);
for jj=1:d
A(:,jj) = (m1.^(jj-1))';
end
%OLS:
theta = pinv(A'*A)*A'*m2;
%new point:
w = rand(1,1);
s = rand(1,1);
m1 = f(w,s);
%estimate the new point:
A = ones(1,d);
for jj=1:d
A(:,jj) = (m1.^(jj-1))';
end
%the estimation:
estimated = A*theta
%the real value:
g(w,s)