小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
标准方程法是与梯度下降法功能相似的算法,旨在获取使代价函数值最小的参数θ。其原理为:在一个标准方程中求其最小值 ,对其求偏导数 令偏导值为0, 就可以得到θ
构建方程
设数据为X,X的每一行为一个数据样本,w为方程中需求解的权值,y为真实值
则Loss Function可写为:
其中等于每一个样本Loss的平方值。
求偏导,令偏导为零
参考矩阵求导规则,其中对于分子布局(Numerator-layout: 分子为列向量或者分母为行向量)和分母布局(Denominator-layout: 分子为行向量或者分母为列向量)有不同的求导结果。
求偏导得:
参考矩阵求导规则,展开求偏导得:
令偏导为零,求得w:
存在矩阵不可逆的情况
如果矩阵不可逆,就无法求得w,主要有一下两种情况会出现矩阵不可逆的情况:
1.线性相关的特征(多重共线性)。
2.特征数据太多(样本数m≤特征数量n)
梯度下降算法VS标准方程法
当训练集百万级时,考虑使用梯度下降算法;训练集在万级别时,考虑使用标准方程法。在万到百万级区间时,看情况使用,主要还是使用梯度下降算法。
| 对比 | 梯度下降法 | 标准方程法 |
|---|---|---|
| 缺点 | 需要选择合适的学习率,需要迭代很多个周期,只能得到最优解的近似值 | 需要计算的逆矩阵 时间复杂度大约是 运算量大,当训练集很大时速度非常慢。 n是特征数量 |
| 优点 | 当特征值非常多的时候也,可以很好的工作 | 不需要学习率,不需要迭代,不需要特征缩放,直接解出结果,可以得到全局最优解 |