优化算法的比较,选择
来源:互联网 发布:vscode spring boot 编辑:程序博客网 时间:2024/06/05 05:53
来源知乎:http://www.zhihu.com/question/20822481
梯度和最小二乘的区别:
1.本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对dependent variables算出出一个一般性的估值函数。然后对给定新数据的dependent variables进行估算。
2.目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为:其中为第i组数据的independent variable,为第i组数据的dependent variable,为系数向量。
不同
1.实现方法和结果不同:最小二乘法是直接对求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个,然后向下降最快的方向调整,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。
最小二乘法的目标:求误差的最小平方和,对应有两种:线性和非线性。线性最小二乘的解是closed-form即,而非线性最小二乘没有closed-form,通常用迭代法求解。
迭代法,即在每一步update未知量逐渐逼近解,可以用于各种各样的问题(包括最小二乘),比如求的不是误差的最小平方和而是最小立方和。
梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。高斯-牛顿法是另一种经常用于求解非线性最小二乘的迭代法(一定程度上可视为标准非线性最小二乘求解方法)。
还有一种叫做Levenberg-Marquardt的迭代法用于求解非线性最小二乘问题,就结合了梯度下降和高斯-牛顿法。
所以如果把最小二乘看做是优化问题的话,那么梯度下降是求解方法的一种,是求解线性最小二乘的一种,高斯-牛顿法和Levenberg-Marquardt则能用于求解非线性最小二乘。
具体可参考维基百科(Least squares, Gradient descent, Gauss-Newton algorithm, Levenberg-Marquardt algorithm)
1.当目标函数是凸函数时,梯度下降法的解释全局最优解。一般情况下,其解不保证是全局最优解。
2.当目标函数不是凸函数时,可以将目标函数近似转化成凸函数。
或者用一些智能优化算法例如模拟退火,以一定的概率跳出局部极值,但是这些算法都不保证能找到最小值。
- 优化算法的比较,选择
- 选择排序的优化算法
- 神经网络的优化算法选择
- 排序算法的比较与选择
- 使用森林优化算法的特征选择
- 比较常用的算法优化小技巧
- 主要排序算法的比较及其优化
- 【算法优化】比较器的使用
- java 冒泡算法和选择算法的比较
- 选择排序优化算法
- 神经网络优化算法选择
- 优化算法比较
- 常见的八大排序算法的比较和选择依据
- 选择,插入,交换,冒泡,希尔排序算法的效率比较
- 选择 插入 快速 冒泡排序算法的比较
- 各种内部排序算法的比较和选择
- 基本排序算法(冒泡、选择、插入)的效率比较
- JM模式选择算法优化的代码实现I
- 取消京津冀手机漫游费更像文字游戏
- 我为什么选择 iBatis 而不是 Hibernate(对于正在选型的人的建议)
- Android Studio之新建Studio项目
- Hdu 2066 一个人的旅行(dijkstra算法)
- Web.xml配置详解之context-param
- 优化算法的比较,选择
- hive优化
- 【@property的特性】
- Hibernate单向关联1-N
- 【暑期基础2】O HDU 2040 亲和数
- iOS绘图API的使用
- spring配置中mappingResources和mappingLocations
- mysql左连和右连
- hdoj 5289 Assignment 【RMQ + 二分查找区间最优长度】