1 特征缩放(Feature Scaling)
在多元变量的线性回归中使用梯度下降法时,如果输入的n维特征中,特征的区间范围相差很大,那么代价函数收敛会很慢。为了提高收敛速度,可以将输入特征限制在相似的范围之内,也就是特征缩放
方法一般是用特征÷范围内最大值
目的是将特征的取值范围限制在 − 1 ≤ x i ≤ 1 -1≤x_i≤1 −1≤xi≤1内,当然并不是一定要在这个范围内,只要范围不会太大或太小,都是可以接受的。
均值归一化(Mean Normalization)
在特征缩放中,我们有时也会使用均值归一化的方法
方法: ( 特 征 − 均 值 ) ( 最 大 值 − 最 小 值 ) \frac{(特征-均值)}{(最大值-最小值)} (最大值−最小值)(特征−均值)
2 如何选择学习率
首先要知道如何判断代价函数是否收敛,一般通过画出代价函数J(θ)和迭代次数之间的关系来判断
吴恩达教授的方法是可以通过采用学习率为0.001、0.003、0.01、0.03、0.1、0.3、1、3,然后分别绘制出对应的代价函数J(θ)和迭代次数之间的关系,找出下降最快的学习率。
3 正规方程法
假如我们有m个训练样本,分别是 ( ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . ( x ( m ) , y ( m ) ) ) ((x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...(x^{(m)},y^{(m)})) ((x(1),y(1)),(x(2),y(2)),...(x(m),y(m))),以及n个特征变量
每一个训练样本 x ( i ) = [ x 0 ( i ) x 1 ( i ) x 2 ( i ) ⋮ x n ( i ) ] ∈ R n + 1 x^{(i)}=\left[\begin{matrix}x^{(i)}_0 \\ x^{(i)}_1 \\ x^{(i)}_2 \\ \vdots \\ x^{(i)}_n\end{matrix}\right]\in R^{n+1} x(i)=⎣⎢⎢⎢⎢⎢⎢⎡x0(i)x1(i)x2(i)⋮xn(i)⎦⎥⎥⎥⎥⎥⎥⎤∈Rn+1
然后根据这m个训练样本得到一个 m × ( n + 1 ) m×(n+1) m×(n+1)维的设计矩阵 X X X
X = [ x ( 1 ) T x ( 2 ) T x ( 3 ) T ⋮ x ( m ) T ] X=\left[\begin{matrix}{x^{(1)}}^T \\{x^{(2)}}^T \\ {x^{(3)}}^T \\ \vdots \\ {x^{(m)}}^T\end{matrix}\right] X=⎣⎢⎢⎢⎢⎢⎢⎢⎡x(1)Tx(2)Tx(3)T⋮x(m)T⎦⎥⎥⎥⎥⎥⎥⎥⎤,其中 x ( i ) T {x^{(i)}}^T x(i)T是 x ( i ) {x^{(i)}} x(i)的转置矩阵
而 y = [ y ( 1 ) y ( 2 ) y ( 3 ) ⋮ y ( m ) ] y=\left[\begin{matrix}y^{(1)} \\ y^{(2)} \\ y^{(3)} \\ \vdots \\ y^{(m)}\end{matrix}\right] y=⎣⎢⎢⎢⎢⎢⎡y(1)y(2)y(3)⋮y(m)⎦⎥⎥⎥⎥⎥⎤
最后,我们可以通过上述矩阵求出最佳参数
θ
\theta
θ
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=(X^TX)^{-1}X^Ty
θ=(XTX)−1XTy,其中
(
X
T
X
)
−
1
(X^TX)^{-1}
(XTX)−1是
X
T
X
X^TX
XTX的逆矩阵
扩展
如果遇到 X T X X^TX XTX不可逆的情况时该怎么办?
方法:首先观察所有特征变量,看是否有多余的变量,把多余的变量删除。如果没有多余的,那么就看特征变量是否过多,在不影响的情况下,删掉一些特征,或者使用正则化
两者选择
梯度下降法的缺点是需要选择学习率,这意味着你需要运行多次从而找到最好的学习率。还需要多次的迭代。但在特征变量特别多的时候也能运行得很好。
总结:特征变量很多时选择梯度下降法,反之选择正规方程法
一般特征变量在4位数以内都可以选择正规方程法。