第22章 最小二乘问题 2 2 .1 算法 最小二乘问题可用下式表达: .)(21)(21)(min222iiRxxFxFxfn 此类问题在实际应用中很常见,特别是进行数据拟合、非线性参数估计时。最小二乘问题的常见解法有Gauss-Newton 法和Levenberg-Marquardt 法。 1. Gauss-Newton 法 该法通过在每一次迭代中求解下列线性最小二乘问题来获得搜索方向kd 。 22)()(minkkkRxxFdxJn 搜索方向kd 可以用于一维搜索,以保证每一次迭代都使函数f(x)减小。 图22-1 演示了采用Gauss-Newton 法求解Rosenbrock 函数最小化问题的路径。该法只用了48 次迭代即完成计算。 Gauss-Newton 法 有 时 会 出 现 矩 阵 求 逆 的 困 难 或 出 现 假 收 敛 的 情 况 。 用Levenberg-Marquart 法可以解决此问题。 图 22-1 Guass-Newton 法的搜索路径 2. Levenberg-Marquart 法(又称阻尼最小二乘法) 该法用下式求搜索方向: ()()())()(kkkkTkxFxJdIxJxJ 式中k 为阻尼因子,它可以控制kd 的大小和方向。当k =0 时,即为Gauss-Newton 法。当k时, 趋于零向量,即为最速下降法。因此,只要给一个足够大的)()(,kkkkxFdxF就始终为 真。因此,即使是遇到影响Gauss-Newton 法有效性的病态二次项,也可以通过阻尼因子k 来进行控制。 因此,Levenberg-Marquart 法给出的是介于Gauss-Newton 法和最速下降法之间的搜索 方向。图22-2 是该法的演示,它用了90 次迭代运算,介于Gauss-Newton 法的48 次和最速下降法的1000 次之间。 图 22-2 Levenberg-Marquart 法的搜索路径 2 2 .2 线性最小二乘问题 利用左除(“ \”)算子可以求解线性最小二乘问题。 如果A 为平方矩阵,则除了算法不同,A\b 与 inv(A)*b 大致相当。如果A 是一个n 阶方阵,b 是一个具有n 个元素的列向量或具有多个此类列向量的矩阵,则X=A\b 为用高斯消元法得到的方程Ax=b 的解。如果A 奇异,则会给出警告消息。 如果A 不是方阵,则 x=A\b 为等式系统Ax=b(b 也可以是矩阵)的最小二乘意义上的解。 2 2 .3 非负线性最小二乘解的问题 22.3.1 基本数学原理 非负线性最小二乘届问题的数学模型为 021min22xdCxx 式中,矩阵C 和向量d 为目标函数的系数。独立变量向量x 要求非负。 22.3.2 有关函数介绍 用 1sqnonneg 函数求线性问题的非负最小二乘解。其调用格式为: x=...