向Andrew Ng的机器学习课程致敬
多变量线性回归
多变量线性回归就是拓展单变量线性回归。
模型
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
.
.
.
+
θ
n
x
n
定义
x0=1
x
0
=
1
, 则可以改写为
hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn
h
θ
(
x
)
=
θ
0
x
0
+
θ
1
x
1
+
θ
2
x
2
+
.
.
.
+
θ
n
x
n
梯度下降求解模型参数
梯度下降算法求解模型参数跟单变量模型一样的,就是变量多了而已。新的求参算法如下:
repeat {
θj=θj−α1m∑i=1m(hθ(x(i))−y(i))x(i)j θ j = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i )
(simultaneously update θj θ j for j = 0, …, n)
}
特征缩放
idea: 让所有特征的取值范围在相近的范围内。这样做的目的是为了加快收敛,减少采用梯度下降算法迭代的次数。
一般是让特征值的取值范围尽量落在[-1, 1]之间。
方法:
xnewi=xi−μimax−min
x
n
e
w
i
=
x
i
−
μ
i
m
a
x
−
m
i
n
学习率
- α α 太小,收敛慢
- α α 太大,不是每轮迭代损益函数值下降,甚至不会收敛
因此,andrew 给的学习率取值方式为
…, 0.001, 0.003, 0.01,0.03, 0.1, 0.3, 1, …
正则方程
最基础的最小二乘法,求解线性回归问题,其核心思想就是设偏导为0,求参数值。即
∂∂θjJ(θ)=...=0(for every j)
∂
∂
θ
j
J
(
θ
)
=
.
.
.
=
0
(
f
o
r
e
v
e
r
y
j
)
也即:
θ=(XTX)−1XTy
θ
=
(
X
T
X
)
−
1
X
T
y
梯度下降VS正则方程
梯度下降 | 正则方程 |
---|---|
需要选择 α α | 不用 |
需要多轮迭代 | 不用 |
当特征很多的时候,也可以很好的工作 | 特征很多的时候,计算量非常大 |
简单谈谈什么时候使用梯度下降法,什么时候使用正规方程法?
- 正规方程法在训练集个数较少时(<10000),计算效率会优于梯度下降法,否则便使用梯度下降法;
- 正规方程法不需要设定学习率,即不会涉及到调参的问题,且不需要迭代;
- 梯度下降法的时间复杂度O(kn^2), 正规方程法的时间复杂度O(n^3)。
总而言之,训练集个数少于10000优先使用正规方程法,否则使用梯度下降法。