2 回答
TA贡献1825条经验 获得超4个赞
为了简化描述,我将假设点由复数表示。
您的问题可以这样表述:
我们有n+1 个点,任意设置为 (0,0) 的点和 n *unknown" 点,你有m 个嘈杂的观察结果,m比n大(很多) 。
观察对应于对点i和j之间差异的(轻微)错误估计:
Y[k] = X[i] - X[j]
那么,关系集可以表示为:
Y = A X + N
其中X是未知点的向量,向量Y对应于观测值,A是定义观测值的矩阵,N代表观测值的误差。
第一种方法是 LS(最小二乘)方法。
通过使用 Moore-Penrose 伪逆,我们可以通过以下方式获得 LS 估计:
X1 = (A^H A)^(-1) A^H Y
其中 A^H 是A的 Hermitian 转置。由于此处A是实数,因此它对应于A的转置。这种估计最小化
min norm of (AX - AX1)
另一种方法是假设N是方差为 s2 的加性高斯噪声。我们可以通过以下方式获得 MMSE/Wiener 估计:
X2 = (A^H A + s2 I)^(-1) A^H Y
其中 I 是大小为n的单位矩阵。这个估计最小化:
min E (norm (X2 - X)) = min MSE (Mean Square error)
其中E(.)
代表统计平均值(期望)。这是一种随机方法(我们最小化期望),与 LS 方法相反。
有时,我们不能假设噪声是高斯分布的,或者我们不知道方差。此外,根据矩阵 A 的奇异值,LS 估计可能看起来并不完全稳定。因此,有时会使用第三种方法:
X2 = (A^H A + lambda I)^(-1) A^H Y
其中 lambda 是一个(小的)松弛系数,以避免 LS 方法可能出现的不稳定性。
注意:如果矩阵求逆过于复杂,而且观察误差很小,当然可以使用迭代方法来改进估计。
TA贡献1806条经验 获得超5个赞
我不知道这个问题的名字,但是https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html可以找到最小化平方和的解决方案错误。
您已经将第一个点固定在原点。您可以坚持认为第二个点位于 x 轴上。然后导致像这样的点列表:(0, 0), (0, y1), (x2, y2), (x3, y3), ..., (xn, yn)
。现在您只需编写一个函数来获取[y1, x2, y2, x3, yx, ..., xn, yn]
并返回误差平方和。优化它。该BFGS
方法可能是一个不错的选择。
添加回答
举报