特征选择
frontage是这块地靠近公路的那一面的长度
depth是垂直公路的长度
把这两个变量单独拿出来进行房价预测没有必要,于是我们设置变量x(面积)=frontage*depth,只看这一个自变量即可。
这就是特征选择
即将不合理的变量经过合并,剔除来简化。
特征缩放
在计算的过程当中,我们发现,有很多时候,参数的取值差距非常大,导致很多时候要进行大量的大数值的计算。在处理多维特征(多变量)的问题时,我们要保证这些特征都具有相近的范围,这样将更好的帮助梯度下降算法更快的收敛。这时,我们可以使用特征缩放(Features Scaling)方法。
我们还是以放假预测问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量。房屋的尺寸范围在 0 ~ 2000 平方英尺, 房间数量在 0 ~ 5 , 以这两个参数为横纵坐标,绘制代价函数的等高线图能看出图像会显得很扁,梯度下降算法要执行很多次迭代才能收敛。
为了解决这个问题,我们尝试将所有特征的取值范围尽量都缩放到 -1 ~ 1 之间。
方法是:
其中,Xn代表第n个特征,µn代表平均值(AVE),Sn代表标准差(SD)(Max-Min)。
特征缩放的使用是有范围的,当-3<x<3 or -1/3<x<1/3属于可接受的范围,如果-100<x<100 or -0.0001<x<0.0001,特征缩放带来的误差较大,不可使用。
alpha的选取
梯度下降算法的表达式中,有一个alpha学习速率(Learning Rate)。算法所需要的迭代次数根据模型的不同而不同,我们这方面不能够提前预知,我们可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。
也有一些自动测试是否收敛的方法,例如:将代价函数的变化值与一个常数阈值(0.001)进行比较。但是我个人感觉还是上面的图表更直观一些。
梯度下降算法每次迭代,都会受到学习速率的影响,如果学习速率较小,则达到收敛所需要迭代的次数就会非常高;反之,如果alpha过大,则每次迭代可能都不会减小代价函数的结果,甚至会超过局部最小值导致无法收敛。
通常,在我做一些模型时,我们会从在 0.01,0.03,0.1,0.3,1,3,10 这些参考值中试alpha。