文章目录
- 多变量线性回归(Linear Regression with Multiple Variables)
- 1.多特征(Multiple Features)
- 2.多变量梯度下降(Gradient Descent for Multiple Variable)
- 3.特征值缩放(Gradient Descent in Practice I - Feature Scaling)
- 4.学习速率(Gradient Descent in Practice II - Learning Rate)
- 5.特征处理和多项式回归(Features and Polynomial Regression)
- 6.正规方程(Normal Equation)
- 7.不可逆性正规方程(Normal Equation Noninvertibility)
- 8.week2编程思路
- 附录
- 思路整理
多变量线性回归(Linear Regression with Multiple Variables)
1.多特征(Multiple Features)
对于一个要度量的对象,一般来说会有不同维度的多个特征。比如之前的房屋价格预测例子中,除了房屋的面积大小,可能还有房屋的年限、房屋的层数等等其他特征
多变量假设函数
h
h
h表示为:
h
θ
h_{\theta}
hθ=
θ
0
\theta_0
θ0+
θ
1
\theta_1
θ1
x
1
x_1
x1+
θ
2
\theta_2
θ2
x
2
x_2
x2+…+
θ
n
\theta_n
θn
x
n
x_n
xn
这里由于特征不再只有一个,引入一些新的记号
n n n:特征的总数
x ( i ) x^{(i)} x(i): 代表样本矩阵中第 i i i行,也就是第 i i i个训练实例。
x j ( i ) x^{(i)}_j xj(i)代表样本矩阵中第 i i i行的第 j j j列,也就是第 i i i个训练实例的第 j j j个特征。
其中参数向量的维度是 n n n+1,给特征向量添加 x 0 x_0 x0,其维度也变成 n n n+1维,则假设函数可以用矩阵表达为:
h θ ( x ) = [ θ 0 θ 1 . . . θ n ] [ x 0 x 1 . . . x n ] = θ T x h_\theta(x)= \begin{bmatrix} \theta_0 & \theta_1 &...&\theta_n \end{bmatrix} \begin{bmatrix} x_0& \\ x_1&\\ ...&\\ x_n& \end{bmatrix} =\theta^Tx hθ(x)=[θ0θ1...θn]⎣⎢⎢⎡x0x1...xn⎦⎥⎥⎤=θTx
θ T \theta^T θT: θ \theta θ矩阵的转置
s s s:某个样本的特征向量。n+1维
x 0 x_0 x0:假设 x 0 ( i ) x^{(i)}_0 x0(i)=1
2.多变量梯度下降(Gradient Descent for Multiple Variable)
多变量代价函数类似与单变量代价函数,即
J ( θ 0 , θ 1 , . . . , θ n ) J(\theta_0,\theta_1,...,\theta_n) J(θ0,θ1,...,θn)= 1 2 m \frac 1 {2m} 2m1 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \displaystyle\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})^2 i=1∑m(hθ(x(i))−y(i))2,其中 h θ ( x ) = θ T x h_\theta(x)=\theta^Tx hθ(x)=θTx
梯度下降对于最小化代价函数的通用性,则多变量梯度下降公式即
r
e
p
e
a
t
u
n
t
i
l
c
o
n
v
e
r
g
e
n
c
e
:
{
repeat until convergence:\{
repeatuntilconvergence:{
θ
j
:
=
θ
j
−
α
∂
∂
θ
1
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
\theta_j:=\theta_j-\alpha\frac{\partial }{\partial \theta_1}(\theta_0,\theta_1,...,\theta_n)
θj:=θj−α∂θ1∂(θ0,θ1,...,θn)
}
\}
}
解出偏导得:
r
e
p
e
a
t
u
n
t
i
l
c
o
n
v
e
r
g
e
n
c
e
:
{
repeat until convergence:\{
repeatuntilconvergence:{
θ
j
:
=
θ
j
−
α
1
m
\theta_j:=\theta_j -\alpha \frac 1 m
θj:=θj−αm1
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
j
(
i
)
\displaystyle\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})\cdot x_j^{(i)}
i=1∑m(hθ(x(i))−y(i))⋅xj(i)
f
o
r
j
:
=
0
,
1
,
2
,
.
.
.
n
for \qquad j:=0,1,2,...n
forj:=0,1,2,...n
}
\}
}
可展开为:
r
e
p
e
a
t
u
n
t
i
l
c
o
n
v
e
r
g
e
n
c
e
:
{
repeat until convergence:\{
repeatuntilconvergence:{
θ
0
:
=
θ
0
−
α
1
m
\theta_0:=\theta_0 -\alpha \frac 1 m
θ0:=θ0−αm1
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
0
(
i
)
\displaystyle\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})\cdot x_0^{(i)}
i=1∑m(hθ(x(i))−y(i))⋅x0(i)
θ
1
:
=
θ
1
−
α
1
m
\theta_1:=\theta_1 -\alpha \frac 1 m
θ1:=θ1−αm1
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
1
(
i
)
\displaystyle\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})\cdot x_1^{(i)}
i=1∑m(hθ(x(i))−y(i))⋅x1(i)
θ
2
:
=
θ
2
−
α
1
m
\theta_2:=\theta_2 -\alpha \frac 1 m
θ2:=θ2−αm1
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
2
(
i
)
\displaystyle\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})\cdot x_2^{(i)}
i=1∑m(hθ(x(i))−y(i))⋅x2(i)
…
θ
n
:
=
θ
n
−
α
1
m
\theta_n:=\theta_n -\alpha \frac 1 m
θn:=θn−αm1
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
n
(
i
)
\displaystyle\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})\cdot x_n^{(i)}
i=1∑m(hθ(x(i))−y(i))⋅xn(i)
}
\}
}
同单变量梯度下降一样,计算时需要同时更新所有参数。
3.特征值缩放(Gradient Descent in Practice I - Feature Scaling)
在应用梯度下降算法实践时,由于各特征值的取值范围不同,可能会影响代价函数收敛速度。
以房价预测问题为例,这里选取房屋面积大小和房间数量这两个特征。
下图中,左图是以原始数据绘制的代价函数轮廓图,右图为采用特征缩放(都除以最大值)后图像。左图中呈现的图像较扁震荡较大,相对于使用特征缩放方法的右图,梯度下降算法需要更多次的迭代。
为了加快梯度下降的收敛速度,采用特征缩放的方式,使得特征值的范围尽量一致。
方法主要有2种特征缩放(feature scaling) and 均值归一化(mean normalization)
特征缩放:每个训练实例的特征值都除以该特征值中最大的数;
均值归一化:
x
i
=
x
i
−
a
v
e
r
a
g
e
(
x
)
m
a
x
i
m
u
m
(
x
)
−
m
i
n
i
m
u
m
(
x
)
x_i=\frac {x_i-average(x)} {maximum(x)-minimum(x)}
xi=maximum(x)−minimum(x)xi−average(x)
x
i
∈
(
−
1
,
1
)
\qquad x_i \isin (-1,1)
xi∈(−1,1)
另外注意,一旦采用特征缩放,我们就需对所有的输入采用特征缩放,包括训练集、测试集、预测输入等。
4.学习速率(Gradient Descent in Practice II - Learning Rate)
通常,有两种方法来确定函数是否收敛
-
多次迭代收敛法
无法确定需要多少次迭代
较易绘制关于迭代次数的图像
根据图像易预测所需的迭代次数
-
自动化测试收敛法(比较阈值)
不易选取阈值
代价函数近乎直线时无法确定收敛情况
因为自动化测试收敛法需要预判代价函数的的参考值,但对于每个项目并不相同,选取参考值很困难。因此一般借助图形发现代价函数的趋势,调整学习速率 α \alpha α,随着曲线的下降,每次取更小的学习速率,逐渐逼近最小值。
对于学习速率
α
\alpha
α,一般上图展现的为适中情况下图中,左图可能表明
α
\alpha
α过大,代价函数在跳跃,无法收敛;右图可能表明
α
\alpha
α过小,代价函数收敛的太慢。代价函数在迭代会增加影响效率。在实际使用时,可以不断改变
α
\alpha
α值,绘制并观察图像,并以此来确定合适的学习速率。
5.特征处理和多项式回归(Features and Polynomial Regression)
5.1特征处理
在特征选取时,我们也可以自己归纳总结,定义一个新的特征,用来取代或拆分旧的一个或多个特征。比如,对于房屋面积特征来说,我们可以将其拆分为长度和宽度两个特征,反之,我们也可以合并长度和宽度这两个特征为面积这一个特征。如能减少相关性很高特征就能减少计算梯度下降时候的运算,提高效率。
5.2多项式回归
对比week1单变量线性拟合
线性回归只能以直线来对数据进行拟合,有时候需要使用曲线来对数据进行拟合,即多项式回归(Polynomial Regression)。下面以单变量为例说明多项式拟合曲线的问题
在使用多项式回归时,要记住非常有必要进行特征缩放,比如 的范围为 1-1000,那么 的范围则为 1- 1000000,不适用特征缩放的话,范围更有不一致,也更易影响效率。还需要注意多项式如果项数太多虽然拟合效果更好了,但是增加了计算量。
6.正规方程(Normal Equation)
对于一些线性回归问题来说,正规方程法给出了一个更好的解决问题的方式。
正规方程法,即令
∂
∂
θ
j
J
(
θ
j
)
=
0
\frac{\partial }{\partial \theta_j}J(\theta_j)=0
∂θj∂J(θj)=0 ,通过解析函数的方式直接计算得出参数向量的值
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=(X^TX)^{-1}X^Ty
θ=(XTX)−1XTy,
比较正规方程法和梯度下降算法
条件 | 梯度下降 | 正规方程 |
---|---|---|
是否需要选取学习速率 α \alpha α | 需要 | 不需要 |
是否需要迭代运算 | 需要 | 不需要 |
特征量较多时 | 使用, O ( k n 2 ) O(kn^2) O(kn2) | 不适用, ( X T X ) − 1 (X^TX)^{-1} (XTX)−1复杂度 O ( n 3 ) O(n^3) O(n3) |
适用范围 | 各种模型 | 只适用线性模型且需要矩阵可逆 |
适用特征数 | 1w以下 | 1以上 |
7.不可逆性正规方程(Normal Equation Noninvertibility)
造成正规方程不可逆的原因有:
- 特征线性相关
- 特征数量 n n n大于训练集的数量 m m m
X T X X^TX XTX不可逆的处理办法:
- 合并冗余项
- 增加训练集数量
- 使用正则化
在Octave中, X T X X^TX XTX不可逆时强制求解逆函数使用pinv()函数,可逆函数使用inv()函数。
8.week2编程思路
- 目的:建模求一组参数 θ \theta θ,能使预测函数输出值最接近真实值;
- 描述接近程度的函数:代价函数
J
θ
=
J_\theta=
Jθ=
1
2
m
\frac 1 {2m}
2m1
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
\displaystyle\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})^2
i=1∑m(hθ(x(i))−y(i))2
其中预测函数: h θ ( x ) = θ T x h_\theta(x)=\theta^Tx hθ(x)=θTx - 代价函数越小,表示预测越准确;求代价函数的最小值,转为求 θ j \theta_j θj对 J ( θ ) J(\theta) J(θ)的偏导数,同时求多个参数的偏导数,机器学习中称为 批量梯度下降算法(batch gradient descent algorithm)
-
θ
j
\theta_j
θj 为:
θ
j
:
=
θ
j
−
α
1
m
\theta_j:=\theta_j -\alpha \frac 1 m
θj:=θj−αm1
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
j
(
i
)
\displaystyle\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})\cdot x_j^{(i)}
i=1∑m(hθ(x(i))−y(i))⋅xj(i)
f
o
r
j
:
=
0
,
1
,
2
,
.
.
.
n
\qquad for \quad j:=0,1,2,...n
forj:=0,1,2,...n
在迭代次数内执行该计算,并且需要同时更新 θ j \theta_j θj的值。 - 将迭代次数与代价函数图形化,直观判断优化过程,针对性修改学习参数 α \alpha α和迭代次数;
附录
- 【Katex常用函数1】https://katex.org/docs/support_table.html#symbols
- 【Katex常用函数2】https://my.oschina.net/davelet/blog/1831306
- 【Latex常用希腊字母】https://blog.youkuaiyun.com/xxzhangx/article/details/52778539
思路整理
对模型进行优化处理目前看是从两个方面入手:特征+数据拟合方式,分别整理一下。
-
特征
可以取代和拆分,目的减少冗余计算;
特征值缩放{两种方式:除以固定值、均值归一化},目的加快梯度下降的收敛速度; -
数据拟合方式
直线->单变量 线性回归 使用正规方程和梯度下降求解
曲线->多变量 多项式回归 梯度下降算法求解最优解ps:使用正规方程需要实例矩阵需要可逆即特征和训练集实例数一致