假设你有一个机器学习问题,倘若这个问题有多个参数,且你能保证这些参数的取值都在一个近似的范围内,那么使用梯度下降法时,就能更快地收敛。
假设,x1表示房子价格,在0 ~ 2000波动,x2表示房间数量,在1 ~ 5波动,此时有两个参数,那么代价函数的θ有θ0,θ1,θ2,忽略θ0,只有θ1和θ2时(分别对应x1和x2),由于x1和x2的取值相差很大,画出来的等值线会是数个非常瘦长的椭圆,这对于梯度下降是不利的。
因此这种情况下,可以使用特征缩放。
即,对于每个参数,除以它们的上界,使特征值约束在 -1<= xi <= 1。 (有微小的偏差是可以的,如 -2 <= xi <=0.5)
均值归一化
用 xi-μi 来代替 xi 以使特征量 xi 的平均值为0。(不要对x0 = 1使用)
0)以下和前文所指的特征量都是xj。(j = 0,1,2,…,n)
1)μi表示特征量的平均值。
2)si表示特征量范围的上限,也可以设为变量的标准差。
- 如何使梯度下降更高效。
上图表示的是,梯度下降每一步迭代后,所得到的代价函数的值。(横轴代表梯度下降算法的迭代次数)
1)如果梯度下降算法正确执行,那么每一次迭代,代价函数的值都应该下降。 因此从上图可知在300~400时,代价函数差不多已经收敛。
2)一个自动判断代价函数是否收敛的例子:
如果一步的迭代使代价函数的前后差值小于10-3则认为代价函数已经收敛。
3)对于这样的曲线图,可以得知梯度下降算法没有在正常工作。通常意味着你需要使用较小的学习率α。
4)对于这种曲线图,通常使用更小的α也可以解决问题。
5)数学家已经证明,如果学习率α足够小,那么每一次迭代都能够做到代价函数值下降。(即我们想要的结果) 但倘若α太小,会降低代价函数收敛的速度,降低梯度下降的效率。
①选择特征
以预测房价为例,假设你有两个特征量,分别是房子临街的宽度和纵向宽度。可以将这两个特征量合并为一个特征量,即土地面积 x( = frontage * depth)。
②多项式回归 (Polynomial regression)
为了拟合高阶的线性回归模型,可以用一个特征量来替代多个特征量(假设只有一个特征量x,假设函数即为h(x) = θ0 + θ1*x,而此时可能三次函数能更好地你拟合训练集中的数据,故可用同一个x,使假设函数称为 h(x) = θ0 + θ1*x + θ2*x2 + θ3*x3)。
注:此时特征量的取值会出现很大的不同。