前言
之前用到相关算法的时候,或多或少在其他博客上看到Andrew的算法解析。
这次决心利用空闲时间完整的看看Andrew的课程视频,果真是获益匪浅!大神讲课思路非常清晰,算法的来龙去脉理的很透彻,在很多地方给了我一种茅塞顿开的感觉。因此在这里开一个系列专门记录下我听课的笔记,以后也好温故而知新~
梯度下降(GD)的技巧
1. 特征缩放
特征归一化是机器学习中经常用到的一种技巧,我以前也经常用,但一直没理解为什么要这么做。
假定现在有两个特征(X1、X2),情况1是两个特征的范围几乎一致(图左),情况2是X1的范围远大于X2(图右):
如果特征的范围相当,那么求得的梯度方向会更趋向极值方向;反之寻优路线就会复杂很多。因此特征的缩放可以使得GD更快的收敛。
特征缩放并不一定要求他们范围一致(相当即可),一般缩放的方法是:
2. 迭代次数
一般是通过 限定误差下限 和 指定最大迭代次数 来实现
Andrew表示,比较靠谱的方法还是 实时画出每次迭代的误差曲线,这样可以很直观的看到目前算法的趋势
3. 学习率alpha
没什么办法,大神也是从 0.001, 0.003, 0.006, ... , 1 一个一个试
4. 适用场合
通过对数据分布的先验知识,选择合适的多项式模型,而不是只用线性模型
对于线性模型,如果特征数很大(超过1W),一般还是用GD;如果比较小,也可以选择直接用 标准方程 求得使代价函数取极小值的各个参数
式中x是样本特征矩阵,y是样本类别矩阵,sita是每个特征前的参数矩阵
注:1. 这种方法就不需要特征缩放了,因为不存在迭代寻优的过程
2. 当特征维数 > 样本数 或 各特征不够独立时 可能存在矩阵不可逆的情况(正则化可以解决这个问题)
逻辑回归(LR)
LR的代价函数一般为:
为什么不跟线性回归一样,取
因为LR的
其局部图形是一段弧线,如果代入线性回归的代价函数,会导致优化函数表现为(黑色曲线):
寻优函数很容易就陷入局部最小,因此代价函数的选取目标是,在反映目标值与当前值差异的情况下,尽可能的光滑
巧合的是,采用这种代价函数的LR回归,其GD迭代式与线性回归在形式上是一样的(当然模型h(x)展开是不同的)
过拟合
方式1:减少特征数目 ------- 一般用模型选择算法
但可能会丢失一些有用的特征
方式2:正则化
保持特征数目不变,但降低某些特征的权重
对多特征的情况有不错的效果
红框内就是正则惩罚项,随着lambda变大,效果向着欠拟合方向发展
1)用于GD的正则化
可以看出,正则化就是首先将原始值缩小,然后基于梯度方向更新
2)用于标准方程的正则化
可以证明,只要lambda>0,矩阵是可逆的