预处理共轭梯度法对系数矩阵作预处理,以加速迭代收敛速度。 这个预处理共轭梯度算法,适用的环境是“正定的大型稀疏矩阵”,并且系数矩阵的条件数(最大最小特征值之比)很大的情况。 一般在机器学习中,我目前接触的问题中其实并不太会用到这个预处理共轭梯度算法,标准的共轭梯度算法就足以处理大多数的问题了。 共轭梯度...
运算结果: 因为预处理的共轭梯度法的适用环境: “正定的大型稀疏矩阵”,并且矩阵的条件数(最大最小特征值之比)很大的情况。 因此,这里给出的使用lanczos算法进行的预处理共轭梯度算法并没有比共轭梯度法有运算速度上的提升。
可以看到上面代码中的预处理共轭梯度法其实就是使用Jacobi方法的,主要体现: lambda x: x / np.diag(A) 1. 由于预处理共轭梯度法比共轭梯度法的优势在于对稀疏的系数矩阵且系数矩阵的条件数(最大最小特征值之比)很大的情况,因此上面的Jacobi方法的预处理共轭梯度法并没有明显的优势。