机器学习自我总结第二周
机器学习第二周:逻辑回归
逻辑回归是一种分类算法
1.什么是分类
- 接收的消息是否是垃圾消息(是,不是)
- 肿瘤是良性还是恶性(0-良性 1-恶性)
-…
对于以上的问题我们都可以用是和否来表示
分类需要建立一个模型
如果按照一般的线性回归模型,讲肿瘤的大小作为因变量,输出0-良性,1-恶性。
假设用线性回归的假设函数
h
θ
(
x
)
h_θ(x)
hθ(x),会让我们认为,当我们的的值输出小于0.5的时候,所得的是良性,当我们输出的值大于0.5的时候,所得的是恶性。但是,线性回归会使得到的h(x)的值远大于1或者是远小于1,会发现此时的图像,若小于0.5,不一定就是良性,就会出现偏差,所以线性回归的假设函数,并不适用于分类问题。
所以此时我们就需要构造一个新的假设函数使得输出的值永远处于(0,1)之间,及 0 < = h θ ( x ) < = 1 0<=h_\theta(x)<=1 0<=hθ(x)<=1
构造新的假设函数
要使得输出的值永远在(0,1)之间,逻辑回归的假设函数是
h
θ
(
x
)
=
g
(
θ
T
X
)
h_\theta(x) = g(\theta^TX)
hθ(x)=g(θTX)
其中的g代表的是逻辑函数一个S型的函数公式为,
g
(
x
)
=
1
1
+
e
−
x
g(x) = \frac{1}{1+e^{-x}}
g(x)=1+e−x1,将
x
=
θ
T
X
x=θ^TX
x=θTX带入,得
g
(
x
)
=
1
1
+
e
−
θ
T
x
g(x) = \frac{1}{1+e^{-θ^Tx}}
g(x)=1+e−θTx1
由图可得,函数的区间就是(0,1),因此可以用作分类,当大于0.5的时候,恶性,小于0.5的时候良性。且,当里面的
θ
T
x
\theta^Tx
θTx大于零的时候,趋向1,当小于零的时候趋向零
所以到现在为止:
- 我们建立的模型需要使 0 < = h θ ( x ) < = 1 0<=h_\theta(x)<=1 0<=hθ(x)<=1
- 建立为 g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+e−z1
- 带入得逻辑函数的假设函数 h θ ( x ) = g ( θ T X ) = 1 1 + e − θ T x h_\theta(x) = g(\theta^TX) = \frac{1}{1+e^{-θ^Tx}} hθ(x)=g(θTX)=1+e−θTx1
h θ ( x ) h_\theta(x) hθ(x) 的作用是给定x,通过已经确定的参数计算得出变量等于正向类的可能性
判断边界
所谓判断边界就是确定分类时各自的界限,让我们更直观的看出假设函数的目的。
可以从图像上更直观的体现出分类
假设参数θ已知,要判断取1还是0,就判断
θ
T
X
\theta^TX
θTX 的值
若对于
h
θ
(
x
)
=
g
(
θ
0
+
θ
1
x
1
+
θ
2
x
2
)
h_\theta(x) =g(\theta_0+ \theta_1x_1 +\theta_2x_2 )
hθ(x)=g(θ0+θ1x1+θ2x2),已知
θ
012
θ_{012}
θ012分别为-3 1 1,就得出 函数-3 + x1 + x2 >= 0,就可以分类的分界线。
代价函数
与线性回归方程类似,逻辑回归也需要一个最适合的θ值(或者多个),要找到这些就一样用代价函数。首先线形回归的代价函数为 j ( θ ) = 1 2 m ∑ i = 1 m ( h θ x ( i ) − y ( i ) ) 2 j(θ) = \frac{1}{2m}\sum^{m}_{i = 1}(h_θx^{(i)}-y^{(i)})^2 j(θ)=2m1i=1∑m(hθx(i)−y(i))2
因为
h
θ
(
x
)
h_\theta(x)
hθ(x)不同,对于逻辑回归,我们需要做一些改动
逻辑回归的代价函数为:
j
(
θ
)
=
1
m
∑
i
=
1
m
C
o
s
t
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
j(θ) = \frac{1}{m}\sum^{m}_{i = 1}Cost(h_θ(x^{(i)}),y^{(i)})
j(θ)=m1i=1∑mCost(hθ(x(i)),y(i))
其中
C
o
s
t
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
Cost(h_θ(x^{(i)}),y^{(i)})
Cost(hθ(x(i)),y(i)):
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
{
−
l
o
g
(
1
−
h
(
x
)
)
,
i
f
y
=
0
−
l
o
g
(
h
(
x
)
)
,
i
f
y
=
1
Cost(h_θ(x),y)=\{^ {-log(h(x)),if \ y = 1} _{-log(1-h(x)),if \ y = 0}
Cost(hθ(x),y)={−log(1−h(x)),if y=0−log(h(x)),if y=1
将其合并,并带入代价函数J(θ)得:
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
l
o
g
(
h
(
x
(
i
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
h
θ
(
x
(
i
)
)
)
]
J(\theta)=-\frac{1}{m}\sum^{m}_{i = 1}[y^{(i)}log(h(x^{(i)})+(1-y^{(i)})log(1-h_\theta (x^{(i)}))]
J(θ)=−m1i=1∑m[y(i)log(h(x(i))+(1−y(i))log(1−hθ(x(i)))]
…式子真的很长,但是其目的也是为了找出参数的θ的最优值,因此在此基础之上,我们同样需要用梯度下降去解决代价函数。
梯度下降:
θ
j
:
=
θ
j
−
α
ϕ
ϕ
θ
j
j
(
θ
)
\theta_j:=\theta_j -\alpha\frac{\phi}{\phi\theta_j}j(\theta)
θj:=θj−αϕθjϕj(θ),带入可得:
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
x
(
i
)
−
y
(
i
)
)
x
j
(
i
)
\theta_j:=\theta_j -\alpha \frac{1}{m}\sum^{m}_{i = 1}(h_θx^{(i)}-y^{(i)})x_j^{(i)}
θj:=θj−αm1i=1∑m(hθx(i)−y(i))xj(i)
样子和线形回归类似,但是因为他们的假设函数不同 因此是不同的
以上属于二元分类,生活中更多是多类别分类
比如说同样是天气,但是要区分,晴天,雨天,阴天。此时需要想办法把它变成多个二元分类。
此时我们需要构造一个分类器
我们设晴天为正向类,雨天和阴天两者一起为负向类,此时我们令一个
h
θ
(
1
)
(
x
)
h_\theta^{(1)}(x)
hθ(1)(x),这样紫就可以得出一个第一个决策边界,区分晴天和其他天气
接着我们设雨天为正向类同样的,其他天气为负向类,这样可以得到一个 h θ ( 2 ) ( x ) h_\theta^{(2)}(x) hθ(2)(x),这个可以得到第二个决策边界,区分雨天和其他天气
最后我们设阴天为正向类同样的,其他天气为负向类,这样可以得到一个 h θ ( 3 ) ( x ) h_\theta^{(3)}(x) hθ(3)(x),这个可以得到第三个决策边界,区分阴天和其他天气
这样可以得到三个决策边界,最后每一个分别带入参数θ和x,得到每一个的正向量的概率P,因此得以判断是哪一类。
正则化:
当我们估计一个东西的值,使用普通的线形回归如, h ( x ) = θ 0 + θ 1 x 1 h(x) = \theta_0+\theta_1x_1 h(x)=θ0+θ1x1,此时构造出来的模型,误差会很大,称之为欠拟合
当我们估计一个东西的值,十分精确的对应每一个值建立出的模型,虽然很适合我们的的训练集,但是喃,当我们放入一个新的值的时候,效果并不是那么好,称为过度拟合,一般过度拟合的式子就是由于他是多项式,且x的次数会很高(这样拟合会很好),如:
h
(
x
)
=
θ
0
+
θ
1
x
+
θ
2
x
2
+
θ
3
x
3
+
θ
4
x
4
h(x) = \theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4
h(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4
因此,防止过度拟合的情况发生,根据过度拟合出现的条件我们可反推出
- 舍弃部分不是很重要的特征
- 保留特征,减小参数的大小(正则化)
正则化,就是减小参数θ的值,对θ值的“惩罚”。用正则化参λ进行一系列操作,如:
J
(
θ
)
=
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
λ
∑
j
=
1
n
θ
j
2
]
J(\theta) = \frac1{2m}[\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 + \lambda\sum_{j=1}^{n}\theta_j^2]
J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]
后面这一块就是对θ值的“惩罚”,使得θ的值变小。
但是对于正则化的λ也要选择合适,若太大,就会导致其他的θ值都趋近于0,使得我们需要的图像变成只有θ0 的直线。
正则化线形回归
正则化线形回归的代价函数为: J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ] J(\theta) = \frac1{2m}[\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 + \lambda\sum_{j=1}^{n}\theta_j^2] J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]
梯度下降:
θ
0
:
=
θ
0
−
a
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
0
(
i
)
\theta_0 : = \theta_0 -a\frac1m\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}
θ0:=θ0−am1i=1∑m(hθ(x(i))−y(i))x0(i)
θ
j
:
=
θ
j
−
a
[
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
+
λ
m
θ
j
]
\theta_j : = \theta_j - a[\frac1m\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} + \fracλm\theta_j]
θj:=θj−a[m1i=1∑m(hθ(x(i))−y(i))xj(i)+mλθj]
同样的正规方程求解正则化线性回归模型:
正则化逻辑回归
一样的在后面对θ进行“惩罚”: J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\theta)=-\frac{1}{m}\sum^{m}_{i = 1}[y^{(i)}log(h(x^{(i)})+(1-y^{(i)})log(1-h_\theta (x^{(i)}))]+ \fracλ{2m}\sum_{j=1}^{n}\theta_j^2 J(θ)=−m1i=1∑m[y(i)log(h(x(i))+(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2
其梯度下降为:
θ
0
:
=
θ
0
−
a
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
0
(
i
)
\theta_0 : = \theta_0 -a\frac1m\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}
θ0:=θ0−am1i=1∑m(hθ(x(i))−y(i))x0(i)
θ
j
:
=
θ
j
−
a
[
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
+
λ
m
θ
j
]
\theta_j : = \theta_j - a[\frac1m\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} + \fracλm\theta_j]
θj:=θj−a[m1i=1∑m(hθ(x(i))−y(i))xj(i)+mλθj]