目录
feature scaling特征缩放
显然第二个参数值的选取,更加接近于真实的价格500k。
当一个特征的值相对来说比较大的时候,参数的值应该相对来说取得小一点。
这些和梯度下降有什么关系呢?
可以看出第二个图非常的抖,对于w1,只要有一点小变化,预估价格或者损失函数就会变化很大。
找到损失函数的最小值,可能需要花费很多时间,所以我们需要特征缩放,即对训练数据进行一些变换transformation。
特征缩放后,我们的x1和x2范围都是0到1,数据都集中在了图的中心而不是原来的下方,对应的参数与损失函数的图像也更加圆,更易于找到全局最小值。
第一种特征缩放
第二种mean normalization
第二种可以加一些normalization,使数据缩放到0的附近,即-1到1之间。我们需要先求出x1的均值M1,然后再计算缩放比例,最后得出的值在0附近。
第三种Z-score normalization
第三种除以的数不再是最大值与最小值的差,而是standard deviation方差。
判断收敛
J在迭代后增加,意味着学习率alpha太大或者存在bug。
从图中可看出,迭代300后,J不会再减少,到400时J很有可能收敛。
还可以从第二种方法判断收敛,但是一般以第一种。
学习率
如上图所示,J的图像随着iteration时而增长时而减小,这意味着出现了bug或者学习率太大。
如下图所示,当选择的学习率太大时,可能会越过最低点,此时我们需要调小学习率。
当梯度下降更新公式是W1=W1+αd1时,可能会出现每一个迭代后J都在增加,这是因为d会使你逐渐远离全局最小值。
当梯度下降不起作用时,可以将学习率设置为一个很小的数,然后观察是否每个迭代J都会减小。即使这样,J有时也会增加,那意味着可能出现了bug。但是设置到很小值并不是一个最好的选择,因为运行时间会增加。
建议选择一系列α值,每个值都运行一些iterations,然后选择一个持续下降且快速的。
也可以选择设置为0.003,0.03等。
feature engineering特征工程
通过原先的特征,创建一个新的特征,有时候可能会创建出一个更好的模型。
polynomial regression多项式回归
对于第一个F函数,可能预测的price在之后会下降,这显然是不符合现实的,我们可以选择一个新的F,拥有x的立方。此时,特征缩放很重要。
另一种选择是使用根号x,有时可能模型会更好。