我有两个功能
m1 = f1(w, s)
m2 = f2(w, s)
f1()和f2()都是黑盒子。给定w和s,我可以得到m1和m2。
现在,我需要设计或找到一个函数g,例如
m2' = g(m1)
此外,m2和m2'之间的差异必须最小化。
w和s都是随机过程。
如何找到这样的函数g()
?这属于哪个知识领域?
答案 0 :(得分:3)
假设您可以根据需要多次调用f1,f2 - 这可以使用回归来解决。
(w_1,s_1,m2_1),...,(w_n,s_n,m2_n)
。(m1_1,m2_1),...,(m1_n,m2_n)
。(1,m1_1,m1_1^2,m1_1^3,m2_1), ...
很容易将它概括为任何
多项式或任何其他设定基函数。但是,请注意,对于某些函数,计算可能无法找到合适的好模型,因为当您将维度从2(w,s)减少到1时会丢失数据( M1)。
Matlab代码快照(功能选择不当):
%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)
答案 1 :(得分:1)
在统计或反问题等领域研究了这类问题。这是从理论上解决问题的一种方法(从反问题的角度来看):
首先,很明显,在一般情况下,函数g可能不存在。但是,你可以(尝试)计算,假设你(假设)了解w和s的统计信息,那么后验概率密度 p(m2 | m1),然后可以用于计算给定m1的m2的估计量,例如最大后验估计值。
可以使用贝叶斯公式计算后验密度:
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的正确分布中进行采样。