线性回归
简单来说线性回归就是寻找一条能够和数据拟合的直线,像这样:
(这是我上一篇博客中用到的图,顺手拿来用了^o^,数据都是瞎编的,用python的polyfit()函数拟合的)
很明显可以看出来有一些数据并不在我们拟合的这条直线上,说明我们拟合的直线还是有误差的
假定我们拟合的直线为:
一元的时候:
hθ(x)=θ1x1+θ0
h
θ
(
x
)
=
θ
1
x
1
+
θ
0
多元的时候:
hθ(x1,x2,…,xn)=θnxn+…+θ2x2+θ1x1+θ0
h
θ
(
x
1
,
x
2
,
…
,
x
n
)
=
θ
n
x
n
+
…
+
θ
2
x
2
+
θ
1
x
1
+
θ
0
我们如果用 矩阵表示的话就更加方便了:
hθ(x) =θnxn+…+θ2x2+θ1x1+θ0=[θ1,θ2…θn]⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥=θTX+θ0
h
θ
(
x
)
=
θ
n
x
n
+
…
+
θ
2
x
2
+
θ
1
x
1
+
θ
0
=
[
θ
1
,
θ
2
…
θ
n
]
[
x
1
x
2
⋮
x
n
]
=
θ
T
X
+
θ
0
但是我们拟合的直线和数据间依然有误差,即有的点和直线有一段距离,我们想要数据拟合的好也就意味着两者之间的距离要达到最小值,而 均方误差就是我们所谓的 损失函数:
一元的时候:
J(θ1,θ0)=12m∑i=0m(hθ(xi)−yi)2
J
(
θ
1
,
θ
0
)
=
1
2
m
∑
i
=
0
m
(
h
θ
(
x
i
)
−
y
i
)
2
注意:前面加上1/2只是为了方便求导,没有什么数学意义
多元的时候:( 用矩阵表示)
J(θ)=12(Xθ−Y)T(Xθ−Y)
J
(
θ
)
=
1
2
(
X
θ
−
Y
)
T
(
X
θ
−
Y
)
要求最小值可以用 最小二乘法和 梯度下降求
最小二乘法
思路:
(1)求函数的导数
(2)令导数为零
(3)取得最小值
此时:
θ=(XTX)−1XTY
θ
=
(
X
T
X
)
−
1
X
T
Y
注意:这里是用矩阵表示的,计算的时候不要把两边消掉了(=_=)
梯度下降法
思路:
(1)选一个点
(2)求梯度
(3)向梯度相反的方向移动 (移动的步长为学习率
α
α
)
(4)重复步骤2,3
(5)取得最小值
对于每一次:
θ=θ−αXT(Xθ−Y)
θ
=
θ
−
α
X
T
(
X
θ
−
Y
)
注意:梯度下降法也适用于非线性的情况
逻辑回归
并不是所有时候数据都是线性关系,也可以是非线性关系,这个时候就用到逻辑回归了,逻辑回归是基于sigmoid函数,也叫s函数,s函数的值域在0-1之间
S(z)=11+e−z
S
(
z
)
=
1
1
+
e
−
z
所以 逻辑回归的基本方程为:
hθ(x)=11+e−Xθ
h
θ
(
x
)
=
1
1
+
e
−
X
θ
逻辑回归的损失函数是用 最大似然法求得:
思路:
(1)求似然函数
(2)将似然函数最大化
(3)对似然函数取反
( 似然函数的定义看这里: 似然函数)
最后求得损失函数为:
J(θ)=−∑i=1m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))
J
(
θ
)
=
−
∑
i
=
1
m
(
y
(
i
)
l
o
g
(
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
h
θ
(
x
(
i
)
)
)
)