机器学习笔记2:线性回归
Andrew Ng机器学习课程学习笔记2
线性回归
参数说明:
θi:parameters,参数
x:input,输入
y:output,输出
h:hypothesis,假设
m:数据数量
回归方程:
一元线性的回归方程的一般格式如下,用于反应输出与输入之间的关系。
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_θ(x) = θ_0 + θ_1x
hθ(x)=θ0+θ1x
cost function:
代价函数,就是hθ(x)与源数据的误差的平方的平均数,用来反应hθ(x)的准确度。
J
(
θ
1
,
θ
2
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(θ_1,θ_2) = \dfrac{1}{2m} \sum_{i=1}^{m}(h_θ(x^{(i)})-y^{(i)})^{2}
J(θ1,θ2)=2m1i=1∑m(hθ(x(i))−y(i))2
目标:
目标就是让代价函数最小。
m
i
n
i
m
i
z
e
θ
1
,
θ
2
J
(
θ
1
,
θ
2
)
\begin{array}{c} minimize\\ θ_1,θ_2 \end{array}J(θ_1,θ_2)
minimizeθ1,θ2J(θ1,θ2)
Gradient descent
梯度下降法,最小化代价函数的一种方法。该法是从某组参数θ1,θ2开始,不断地改变θ1,θ2的值,以使代价函数最小(或局部最小)。而这个改变的方法是在原来的参数基础上,减去一个数,这个数就是损失函数的导数再乘以一个速率α。
具体的实现如下:
repeat until convergence{
θ
j
:
=
θ
j
−
α
∂
J
(
θ
1
,
θ
2
)
∂
θ
j
f
o
r
(
j
=
0
a
n
d
j
=
1
)
θ_j:=θ_j-α\dfrac{∂J(θ_1,θ_2)}{∂θ_j}\quad for(j = 0\quad and\quad j = 1)
θj:=θj−α∂θj∂J(θ1,θ2)for(j=0andj=1)
}
α是学习速率,若值过高,会无法收敛,找不到最小值;若过低,则收敛特别慢,需选择合适的值。
而且,该方法的结果跟θ1,θ2的初值有很大关系,θ1,θ2处值不同可以会得到不同的结果。
注意,要同时更新每个θj,不可以分时更新。换句话说,算出θ0的值后,不能马上把这个值赋给θ0,而是应该用旧的θ0的值,算出θ1之后,再同时更新这两个值。
多变量的线性回归
上文所都是关于单一变量的情况,现在将器扩展为多变量的情况(即多个输入,多个x)。
n:变量参数的个数
xj(i):变量j的第i个input,输入
x0:值为1,把这个当成第0个变量,实际不存在,是为了写成向量的方便,使输入矩阵x与参数矩阵θ列数一致
多变量的梯度下降法,与单变量的一样,也是最小化代价函数的一种方法。该法是从某组参数θ1,θ2…θj开始,不断地改变θ1,θ2…θj的值,以使代价函数最小(或局部最小)。
具体的实现如下:
repeat until convergence{
θ
j
:
=
θ
j
−
α
∂
J
(
θ
1
,
θ
2
,
.
.
.
,
θ
j
)
∂
θ
j
f
o
r
(
j
=
0
,
1
,
.
.
,
j
)
θ_j:=θ_j-α\dfrac{∂J(θ_1,θ_2,...,θ_j)}{∂θ_j} for(j = 0,1,..,j)
θj:=θj−α∂θj∂J(θ1,θ2,...,θj)for(j=0,1,..,j)
}
用这个计算式的时候,还是得注意要同时改变各个参数的值。此外,使用前需要将多余的变量(比如高度线性相关的变量)删掉,还需归一化各个变量,这个归一化不需要特别严格,只需要让各个输入量的量级一样即可。