第二周
多元梯度下降法
假设有两个特征
(1)
x
1
=
s
i
z
e
(
0
−
2000
f
e
e
t
s
)
x_1=size(0-2000 feets)\tag{1}
x1=size(0−2000feets)(1)
(2) x 2 = n u m b e r o f b e d r o o m s ( 1 − 5 ) x_2=number\ of\ bedrooms(1-5) \tag{2} x2=number of bedrooms(1−5)(2)
在进行梯度下降过程中会非常缓慢,形成一种狭窄的椭圆形状。
为了加快找到最小值点
(3)
x
1
=
s
i
z
e
(
f
e
e
t
s
)
2000
x_1=\frac{size(feets)}{2000} \tag{3}
x1=2000size(feets)(3)
(4) x 2 = n u m b e r o f b e d r o o m s 5 x_2=\frac{number\ of \ bedrooms}{5} \tag{4} x2=5number of bedrooms(4)
如此便可以尽快地收敛。
特征缩放
特征取值尽量放到 ( − 1 , 1 ) (-1,1) (−1,1)范围内,当然 [ 0 , 3 ] o r [ − 2.5 , 0.5 ] [0,3]\ or\ [-2.5,0.5] [0,3] or [−2.5,0.5]也都是可以的,但是 ( − 100 , 100 ) o r ( − 0.001 , 0.001 ) (-100,100)\ or (-0.001,0.001) (−100,100) or(−0.001,0.001)这样的特征值就需要对其进行缩放。
特征归一化
(5) x 1 = x 1 − μ 1 s 1 x_1 = \frac{x_1 - \mu_1}{s_1} \tag{5} x1=s1x1−μ1(5)
(6) x 2 = x 2 − μ 2 s 2 x_2 = \frac{x_2 - \mu_2}{s_2} \tag{6} x2=s2x2−μ2(6)
μ \mu μ为平均值, s s s为取值范围或者最大值与最小值之差。
如此,可以让梯度下降更快,收敛所需迭代次数更少。
多元梯度下降法-学习率
![](http://pbfm1j187.bkt.clouddn.com/TIM%E6%88%AA%E5%9B%BE20181021184206.png)
当 J ( θ ) J(\theta) J(θ)出现如图两种情况,均可通过降低学习率 α \alpha α来进行收敛
特征和多项式回归
不一定直接使用所给的特征,可以根据其来设计新的特征来构建模型
正规方程(区别于迭代方法的直接解法)
- 吴恩达33课时
(7) θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty\tag{7} θ=(XTX)−1XTy(7)
正规方程法来求解 θ \theta θ可以不进行特征缩放,可以认为是对于线性回归问题,当特征数量不大的时候比梯度下降更快的替代算法。
Matlab代码实现
p i n v ( X ′ ∗ X ) ∗ X ′ ∗ y pinv(X'*X)*X'*y pinv(X′∗X)∗X′∗y
尽管 ( X T X ) − 1 (X^TX)^{-1} (XTX)−1可能不存在,但是 p i n v pinv pinv操作当矩阵不可逆时可以求出近似的伪逆, i n v inv inv只能对非奇异矩阵也就是可逆矩阵求逆。
出现不可逆的原因
- 存在多余特征造成矩阵对应的两行成比例,行列式为0,进而不可逆。
- 特征太大,样本太少
(
e
.
g
.
m
≤
n
)
(e.g.m\le n)
(e.g.m≤n),要在10个样本中找到101个参数值,可能会成功
(
m
=
10
,
n
=
100
)
(m=10,n=100)
(m=10,n=100)。
线性回归中出现不可逆的情况很少