一、学习率的选择

我们通过什么判断损失J收敛了,梯度下降完成了呢?

这里有一个学习曲线,也就是损失 J关于迭代次数的曲线:

当损失不再下降的时候,就说明不需要再迭代了,损失已经收敛了。

因此,当我们想知道训练应该选择多大的学习率,可以先做一个测试:

众所周知:

当学习率过小,梯度下降的速度会很缓慢,曲线会非常平缓地下降

当学习率过大,梯度下降会在一开始非常快,后面就会反复增大和减小

我们在测试的时候可以先从很小的学习率开始,比如0.001,然后三倍三倍地增大,0.003,0.01...

找到一个刚刚好过大的值,也就是找到上限,这个上限会导致J震荡。最后选一个比上限稍微小的值就好啦。

二、特征工程

1.基于问题挖掘新特征

我们继续用房价来举例子

比如现在给出两个特征,一个是房子的邻街长度w1,一个是房子的深度w2

那么房价可以表示成y=w1*x1+w2*x2+b

然而我们发现,房子的面积s=x1*x2,那么我们可以定义一个新特征W3为占地面积,x3=x1*x2

那么此时,预测房价y=w1*x1+w2*x2+w3*x3+b

总结:你可以利用你对问题的知识和直觉来创建新的特征,这往往能够帮助模型更好地拟合问题。

2.基于趋势创建新特征

我们之前都是线性回归,如果我们遇到的数据是非线性函数,那就需要用到多项式回归

假设我们现在给出的数据集分布是这样的:

这显然不像是线性的函数,那我们就可以基于给的size特征,多添加一些别的特征,以拟合这个趋势

比如,我们可以添加x的平方,x的三次方来拟合:

        不过这个时候的特征缩放就非常重要了,因为经过平方、三次方,它们的取值范围会相差非常大

亦或者添加根号x来拟合:

更多推荐