用于求解无约束最优化问题的方法可以分为解析法和直接法两大类。解析法在构造迭代公式的过程中往往使用了泰勒展开来作近似或者推导,因此迭代步骤中含有梯度∇f(x)∇f(x)或黑塞(Hessian)矩阵∇2f(x)∇2f(x),在问题的解析形态较好的情况下使用往往能获得比较快的收敛速度。而直接法则从物理角度思考如何递推,不会用到梯度或者黑塞矩阵,它对问题的解析形态几乎没有要求,只要能计算出函数值即可。当然,它的收敛速度往往难于保证。
解析法:
1.梯度下降:
https://www.cnblogs.com/pinard/p/5970503.html
最快的方法走向山下
2.牛顿法:
泰勒展开式:https://www.zhihu.com/question/25627482/answer/313088784
用多项式拟合复杂曲线,起点相同,各阶导数相同来复刻复杂曲线。
牛顿法:https://blog.csdn.net/linolzhang/article/details/60151623
求极值点就是求函数一阶导等于0,用二次泰勒展开求导,规划下一个点怎么走!!
拟牛顿法 只需要用到一阶导数,不需要计算Hessian矩阵 以及逆矩阵,因此能够更快收敛
3.最小二乘法:
适用于线性拟合,通过求导为0来实现解析解。
最小二乘法需要计算XTXXTX的逆矩阵,有可能它的逆矩阵不存在,这样就没有办法直接用最小二乘法了,此时梯度下降法仍然可以使用。当然,我们可以通过对样本数据进行整理,去掉冗余特征。让XTXXTX的行列式不为0,然后继续使用最小二乘法。
第二,当样本特征n非常的大的时候,计算XTXXTX的逆矩阵是一个非常耗时的工作(nxn的矩阵求逆),甚至不可行。此时以梯度下降为代表的迭代法仍然可以使用。那这个n到底多大就不适合最小二乘法呢?如果你没有很多的分布式大数据计算资源,建议超过10000个特征就用迭代法吧。或者通过主成分分析降低特征的维度后再用最小二乘法。
第三,如果拟合函数不是线性的,这时无法使用最小二乘法,需要通过一些技巧转化为线性才能使用,此时梯度下降仍然可以用。
第四,讲一些特殊情况。当样本量m很少,小于特征数n的时候,这时拟合方程是欠定的,常用的优化方法都无法去拟合数据。当样本量m等于特征数n的时候,用方程组求解就可以了。当m大于n时,拟合方程是超定的,也就是我们常用与最小二乘法的场景了。
总结:
梯度下降法和最小二乘法相比,梯度下降法需要选择步长,而最小二乘法不需要。梯度下降法是迭代求解,最小二乘法是计算解析解。如果样本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有优势,计算速度很快。但是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的梯度下降法比较有优势。
梯度下降法和牛顿法/拟牛顿法相比,两者都是迭代求解,不过梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。相对而言,使用牛顿法/拟牛顿法收敛更快。但是每次迭代的时间比梯度下降法长。
直接法:
1.坐标轮换法
把含有n个变量的优化问题轮换转为单变量的优化问题,即每次沿某一个坐标轴进行一维搜索的问题
https://www.jianshu.com/p/4b651bb3c01a