线性回归原理(一)+https://developer.aliyun.com/article/1544053?spm=a2c6h.13148508.setting.20.1fa24f0eRBJGs5
梯度下降
梯度下降法的基本思想可以类比为一个下山的过程。
我们设想自己站在一座山(目标函数的等高线图)上,我们的目标是最小化这个函数值,也就是说,我们要找到这座山的最低点或山谷。
梯度代表了函数在当前位置的斜率或者方向导数,它指向函数增长最快的方向。
而梯度下降法则是沿着梯度的相反方向前进,这就好比我们在山上下行时选择最陡峭下降的路径。每一步,我们都根据当前位置的梯度调整步伐,以期逐步逼近最低点,即函数的最小值。
通过不断迭代更新参数,使得每次迭代后目标函数值逐渐减小,最终达到或接近全局最小值的位置,这就是梯度下降法的核心思想。我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值。
在多变量函数中,梯度是一个向量,有方向,梯度的方向就指出了函数在给定点的上升最快的方向
单变量函数的梯度下降
函数 f(x) = x^2。要找到这个函数的最小值,我们可以使用梯度下降法:
- 首先,选择一个初始点 x0(比如 x0 = 5)。
- 计算在该点的梯度(导数):f'(x0) = 2x0 = 25 = 10。
- 梯度下降法要求我们沿负梯度方向前进,也就是朝函数值减少的方向移动。通常会设置一个学习率(步长)α,用来控制每一步走的距离。比如 α = 0.1。
- 更新 x 的值:x1 = x0 - α * f'(x0) = 5 - 0.1 * 10 = 4。
- 在新的位置 x1 处重复步骤2-4,直到达到某个停止条件。
经过多次迭代后,我们会发现 x 的值逐渐接近于0,因为函数 f(x) = x^2 在 x=0 处取得全局最小值
在下山类比中,学习率α就好比我们每一步走的距离。如果α值设置得过大(步子迈得太大),可能会导致我们在函数曲面上“跨越”过最小值点,从而无法收敛到最优解,甚至可能使得损失函数值震荡加剧,不稳定性增加。
相反,如果α值设置得过小(步子迈得太小),虽然算法会更加稳定,但收敛速度会大大降低,需要更多次迭代才能找到最小值。
在二维或者三维图像中,学习率α体现在每次更新后沿负梯度方向移动的距离上,直观地表现为从一个点到下一个点的直线段长度。
多变量函数的梯度下降
回归评估
平均绝对误差Mean Absolute Error
n 为样本数量, y 为实际值, y^ 为预测值 ,越小模型预测约准确
from sklearn.metrics import mean_absolute_error mean_absolute_error(y_test,y_predict)
均方误差Mean Squared Error
越小模型预测约准确
from sklearn.metrics import mean_squared_error mean_squared_error(y_test,y_predict)
均方根误差Root Mean Squared Error
越小模型预测约准确,RMSE 是 MSE 的平方根,有时候比MES更有用。
RMSE 会放大预测误差较大的样本对结果的影响,而 MAE 只是给出了平均误差,由于 RMSE 对误差的平方和求平均再开根号,大多数情况下RMSE>MAE。
数据中有少数异常点偏差很大,如果此时根据 RMSE 选择线性回归模型,可能会选出过拟合的模型来,数据中的异常点极少,选择具有最低 MAE 的回归模型可能更合适。