本篇是对本人之前写的线性回归方法实现的改良版本。
梯度下降法理解
数学原理请移步相关搜索。
梯度下降法的总体思想,是按照连续函数的一阶微分的集合方向(梯度方向)进行不断递减,取极限到该店的梯度为<0>为止。(这里要注意一点,梯度方向是该点处下降最快的方向)
在迭代求解的过程中,通过计算该点处的梯度值乘上步长,进行不断的迭代寻找梯度为<0>时候的值。
梯度下降法在目前算是比较常用的迭代求解方法。下表为几种常见迭代方法比较:
梯度下降法:
优势:只要求函数一阶可微,函数收敛性较强,对初始点位置不敏感,实现简单直观。
缺点:收敛速度慢,而且步长也不好确定。
牛顿法:
优势:二阶收敛,比梯度下降法收敛更快。
缺点:hessian矩阵计算量较大,对初值敏感,可能导致函数不收敛。
高斯牛顿法:
优势:同样二次收敛,相比牛顿法,不需要计算hessian矩阵。
缺点:同样对初值敏感,可能导致函数不收敛或者收敛速