1

给定矩阵形式的输入输出函数:

|y1|   =  |p1  p2|   |x1|     |p5| 
|y2|    = |p3  p4| * |x2|  +  |p6|

p1−p6参数。我想使用高斯牛顿法最小化最小二乘误差。假设我们有 100 个测量值。我的问题是关于残差向量的计算和大小。

|r1|   |y1|  ( |p1  p2|   |x1|   |p5| )
|r2| = |y2| -( |p3  p4| ∗ |x2| + |p6| )

r i = 输出 - f(输入,参数)

错误 = 总和 (r i 2 )

为了计算误差最小的参数,我们有:

p i+1 =p i + Δ

Δ= (J T *J) -1 * J T * r i

我认为每个的大小如下:

输入向量(x):100x2

输出向量(y):100x2

剩余(r):100x2

雅可比 (J) : 100x6

参数(pi):6x1(六个参数)

如您所见,Δ 的大小将是 6x2,这似乎与p_i+1 现在我的残差向量计算过程是否正确?如果是,我该如何计算参数的向量?如果不是,正确的答案是什么?

另一件事是关于参数矩阵的计算方式J(雅可比)。

太感谢了。

4

1 回答 1

2

Delta 向量与参数向量的大小相同。

实际上,在这种情况下,无需进行完整的最小二乘即可求解参数。不幸的是,我无法在网上找到参考资料,因此我试图解释该方法:

我们想找到一个矩阵 M 和一个向量 t,使得给定 N 个点 Y[] 和 N 个点 X[],误差 S 尽可能小,其中

S = Sum{ i | (Y[i]-M*X[i]-t)'*(Y[i]-M*X[i]-t)}

(' 是转置)。

演习是:

a/ 计算 Y[] 的平均 Y^ 并从每个 Y[i] 中减去它,得到 y[i]

b/ 计算 X[] 的平均 X^ 并从每个 X[i] 中减去它,得到 x[i]

c/ 计算矩阵

A = Sum{ i | y[i]*x[i]'} 

C = Sum{ i | x[i]*x[i]'}

d/ 如果 C 不可逆(这意味着所有的 X[] 都在一条线上)你有点卡住了,或者至少这个方法失败了;否则计算

M = A*inverse(C)

e/ 最后,计算

t = Y^-M*X^

为什么这行得通?

首先,如果我们认为 M 是固定的,那么很容易看出使 S 最小化的 t 只是 Y[i]-M*X[i] 的平均值;所以我们在求 M 时也可以使用这个 t。将 t 代入 S 的公式中,我们得到

S = Sum{ i | (y[i]-M*x[i])'*(y[i]-M*x[i])}

现在让 Tr() 表示将矩阵映射到其迹线(对角元素之和)的函数。一个非常有用的技巧是对于向量 v 我们有

v'*v = Tr( v'*v) = Tr( v*v')

将此应用于 S,并扩展产品,我们得到

S = Sum{ i | y[i]'*y[i]} - Tr( A*M') - Tr( M*A') + Tr( M*C*M')

如果 C 是可逆的,我们可以完成平方并得到 (这里 D = inverse(C))

S = Sum{ i | y[i]'*y[i]} - Tr( A*D*A') + Tr( (M-A*D)*C*(M-A*D)'}

前两项不依赖于 M;第三个永远不会是负数,可以通过选择 M=A*D 使其为零。

于 2012-10-29T17:54:19.873 回答