特征缩放

 当你有不同的特征取值范围差异很大时,这可能导致梯度下降运行缓慢,但是重新缩放不同的特征,使他们都在相似范围内取值,可以加快梯度下降的速度。

定义 

特征缩放是指把不同特征的数值调整到一个相似的范围,通常是【0,1】或均值为0,方差为1的标准范围,以便算法更稳定,高效地进行。

为什么特征取值范围差异大,梯度下降缓慢?

  • 梯度尺度不同,更新步长在不同方向上差异很大
  • 损失函数对不同权重的敏感度差异大;等高线呈椭圆形,长轴短轴的差距大;梯度下降沿着长轴方向缓慢移动,需要很多迭代才能收敛
  • 学习率设大,容易在小尺度特征方向震荡;设小,沿大尺度特征方向收敛慢
  • 可以想象在椭圆形的山谷中走到最低点:长轴很长,短轴很短->斜着走很慢;如果调整成圆形->可以直线走到最低点,更快
  • 特征范围差异大->梯度方向不均衡->梯度下降步伐不一致->收敛速度慢甚至震荡

几种常见的缩放方法

1.均值归一化

  • 特征被缩放到【-0.5,0.5】
  • 数据中心为0
  • 依赖最大值和最小值,范围固定

2.z-score 归一化

  • 数据中心为0
  • 方差为1
  • 不依赖最大值最小值,更关注分布的离散程度

对比总结

两个归一化的对比
特性均值归一化Z-score归一化
公式x^{`}=\frac{x-\mu }{x_{max}-x_{_{min}}} x^{`}=\frac{x-\mu }{\sigma }
缩放尺度【-1,1】或【-0.5,0.5】方差1,理论上无界
依赖数据最大值和最小值标准差
对异常值敏感高(最大最小受极端值影响大)中等(标准差受异常值影响,单笔最大值敏感度低)

识别梯度下降是否收敛

作用

检查特征缩放是否有效,是否找到了全局最小值或最接近它的值。学习识别良好的梯度下降实现的样子,有助于我们找到更好的学习率alpha。

 回想一下,梯度下降的任务是找到参数w和b来最小化代价函数j。

如何识别判断?

第一种->学习曲线

事先很难判断梯度下降需要多少次迭代才能收敛,所以可以创建一个如下图所示的图表(一个学习曲线)来尝试找出何时才能停止训练你的特定模型

  • 训练模型时,记录每轮的训练损失L\left ( \theta \right ),将损失随迭代次数绘制成曲线。曲线趋于平稳,损失几乎不再下降,梯度接近零->收敛
  • 优点:直观,易于理解,同时可观察训练和验证的表现 
  • 缺点:需要人工观察判断,不够自动化;对噪声或震荡的梯度不敏感,有时可能误判

第二种->自动收敛测试

概念 

自动收敛测试是一种通过数学或程序判断梯度是否收敛的办法。一般通过计算梯度的大小或损失的变化率,当他们低于设定阈值时,就认为梯度收敛。

常用方法

梯度范数判断,损失变化判断,组合判断

  • 优点:自动化,适合大规模训练;可以直接在训练程序中设置停止条件
  • 缺点:阈值选择比较敏感,需要根据具体问题调整;对震荡梯度或局部平坦区域可能反应慢

选择合适的学习率

  • 学习率太小会运行的非常慢,学习了太大可能会出现震荡导致不会收敛。
  • 调试梯度下降正确实现的一个提示是,如果学习率足够小,成本函数应该在每次迭代中都减少

通过比较不同学习率的学习曲线(横轴为训练次数,纵轴为代价函数),观察区显得收敛速度和平稳性,就可以判断哪个学习率最合适

  1. 使用几个候选学习率分别训练模型,绘制学习曲线:        
  2. 曲线表现:下降平稳且收敛到最低值->学习率合适;曲线震荡或发散->学习率过大;曲线下降过慢->学习率过小

特征工程与多项式回归

特征工程

在这个过程中,利用对问题的只是或直觉来设计新特征,通常是通过转化或组合问题的原始特征,以便让学习算法更容易做出准确的预测。因此根据你对应用的理解,有时并不仅仅限制于你一开始所拥有的特征,通过定义新特征,你可能能够得到一个更好的模型(特征构造)

还有一种特征工程的方法,可以让你拟合的不仅仅是直线,而是曲线非线性函数到我们的数据上,让我们接下来来看

 多项式回归(结合多元线性回归和多项工程)

多项式回归是一种回归方法,他晕粗模型拟合非线性关系,而不是像普通线性回归那样只能拟合直线。

  • 普通线性回归:y=\beta _{0}+\beta _{1}x  只能拟合一条直线
  • 多项式回归:y=\beta _{0}+\beta _{1}x+\beta _{2}x^{2}+\beta _{3}x^{3}+...+\beta _{d}x^{d}   通过增加x的高次项,可以拟合曲线或更复杂的非线性函数

多项式回归通过对原始特征做多项式扩展,把非线性拟合问题转化为线性回归问题,既能拟合曲线,又能保持线性回归求解的简便性。

更多推荐