机器学习实战(基于scikit-learn和TensorFlow)学习心得(20)--Lasso Regression,梯度下降法

与ridge regression一样,不过加的正则项不一样

下图是lasso regression对不同的回归在不同的a值情况下对比

机器学习实战(基于scikit-learn和TensorFlow)学习心得(20)--Lasso Regression,梯度下降法_第1张图片

与ridge regression相比,lasso可能会使某一个θ变成0,具体原因下一个学习笔记会写道.而lasso成本函数在θi= 0时是不可微的(对于i = 1,2,…,n),所以我们要使用次梯度矢量g代替任何θ= 0,让梯度下降仍然可以正常工作

机器学习实战(基于scikit-learn和TensorFlow)学习心得(20)--Lasso Regression,梯度下降法_第2张图片

2. 梯度下降法

梯度下降法是一种很有效的方法,它可以使系统不必要去找到一个极其复杂的公式直接求出最优解,反而是使用迭代的方式一点一点的优化参数.

如lasso所示,当我们算出来cost function的梯度之后,我们只需要

\theta_{i+1}=\theta_{i}\pm \eta \cdot \frac{\partial f}{\partial \theta}

然后再次使用这个方法迭代i+2

注意这里面的加减法取决于我们想要的是最大值还是最小值.

对 f(x) 求极小值的流程就是:

  1. 随机选定起始点x0
  2. 得到函数在 x0的梯度,然后从 x0向前走一步。计算式是:
  3. 重复第 2 步,直到梯度接近于0,或者到达指定的迭代上限。

还有一种方法,我们不求整体梯度,我们只求一个单一参数,我们先固定一个值,假设下面图中横坐标是x1,纵坐标是x2,一开始我们先设定x1为一个固定的实数然后求导x2直接让x2的导数为零,接着我们固定x2再次求导x1,让x1的导数为0,如此反复交替直到两个都达到最优解.这种做法叫做坐标下降法.

 

你可能感兴趣的:(机器学习实战学习心得,机器学习,线性代数)