逻辑回归(Logistic Regression)
文章目录
1 变量表
符号 | 含义 |
---|---|
m m m | 训练集样本数量 |
n n n | 特征数量 |
( x ( i ) , y ( i ) ) ({{x}^{(i)}},{{y}^{(i)}}) (x(i),y(i)) | 训练集中第 i i i个样本, y ( i ) ∈ { 1 , 0 } {y}^{(i)}\in{\{1,0\}} y(i)∈{1,0} |
x ( i ) {x}^{(i)} x(i) | 第 i i i个输入值 |
y ^ ( i ) \hat{y}^{(i)} y^(i) | 第 i i i个输出值 |
x j ( i ) {x}^{(i)}_j xj(i) | 第 i i i个输入值的第 j j j个特征 |
h h h | 假设函数 |
2 逻辑回归模型
图1中,
h
h
h代表
h
y
p
o
t
h
e
s
i
s
hypothesis
hypothesis 假设(📑在机器学习中一般这么叫,andrew觉得不太好听~),它一般是模型输入的函数,在二分类逻辑回归模型中,
h
h
h的表达方式为 :
{
h
θ
(
x
(
i
)
)
=
g
(
z
)
=
1
1
+
e
−
z
z
=
θ
T
x
(
i
)
(1)
\begin{cases} h_{\theta} (x^{(i)})=g(z)=\frac{1}{1+{{e}^{-z}}}\\ z=\theta^Tx^{(i)} \end{cases} \tag{1}
{hθ(x(i))=g(z)=1+e−z1z=θTx(i)(1)
其中,
θ
=
[
θ
0
,
θ
1
,
⋅
⋅
⋅
,
θ
n
]
T
x
(
i
)
=
[
x
(
0
)
,
x
(
1
)
,
⋅
⋅
⋅
,
x
(
n
)
]
T
\begin{aligned} \theta &=[\theta_{0},\theta_{1},···,\theta_{n}]^T\\ x^{(i)}&=[x^{(0)},x^{(1)},···,x^{(n)}]^T \end{aligned}
θx(i)=[θ0,θ1,⋅⋅⋅,θn]T=[x(0),x(1),⋅⋅⋅,x(n)]T
θ 0 , θ 1 , ⋅ ⋅ ⋅ , θ n \theta_0, \theta_1 ,···,\theta_n θ0,θ1,⋅⋅⋅,θn为模型参数, x 0 ( i ) x_{0}^{(i)} x0(i)规定为1。 g ( z ) g(z) g(z)如图2所示:
实际上,
h
θ
(
x
(
i
)
)
h_{\theta} (x^{(i)})
hθ(x(i))的作用是对于给定的输入变量
x
(
i
)
x^{(i)}
x(i),根据选择的参数计算输出变量
y
^
(
i
)
=
1
\hat{y}^{(i)}=1
y^(i)=1的可能性(estimated probablity)即:
h
θ
(
x
(
i
)
)
=
P
(
y
^
(
i
)
=
1
∣
x
(
i
)
;
θ
)
(2)
h_\theta \left( x^{(i)} \right)=P\left( \hat{y}^{(i)}=1|x^{(i)};\theta \right)\tag{2}
hθ(x(i))=P(y^(i)=1∣x(i);θ)(2)
当判定边界为
0.5
0.5
0.5时,模型输出表达式为:
y
^
(
i
)
=
{
1
,
h
θ
(
x
(
i
)
)
≥
0.5
(
θ
T
x
(
i
)
≥
0
)
0
,
h
θ
(
x
(
i
)
)
<
0.5
(
θ
T
x
(
i
)
<
0
)
(3)
\hat{y}^{(i)}= \begin{cases} 1,h_{\theta} (x^{(i)})\ge0.5\ \ (\theta^Tx^{(i)}\ge0)\\ 0,h_{\theta} (x^{(i)})< 0.5\ \ (\theta^Tx^{(i)}< 0) \end{cases}\tag{3}
y^(i)={1,hθ(x(i))≥0.5 (θTx(i)≥0)0,hθ(x(i))<0.5 (θTx(i)<0)(3)
3 代价函数(Cost Function)
建模误差,指的是模型输出值(预测或估计值)与训练集中实际值之间的差距,即:
e
r
r
o
r
=
y
^
(
i
)
−
y
(
i
)
(4)
error=\hat{y}^{(i)}-y^{(i)}\tag{4}
error=y^(i)−y(i)(4)
考虑模型所有的输出值与实际值的差距,通常用代价函数来综合评估建模误差,逻辑回归模型的代价函数表达式一般为:
{
J
(
θ
)
=
1
m
∑
i
=
1
m
c
o
s
t
(
y
^
(
i
)
,
y
(
i
)
)
c
o
s
t
(
y
^
(
i
)
,
y
(
i
)
)
=
−
y
(
i
)
log
(
h
θ
(
x
(
i
)
)
)
−
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
(5)
\begin{cases} J ( \theta) = \frac{1}{m}\sum\limits_{i=1}^m cost(\hat{y}^{(i)},y^{(i)}) \\ cost(\hat{y}^{(i)},y^{(i)})=-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right) \tag{5} \end{cases}
⎩⎨⎧J(θ)=m1i=1∑mcost(y^(i),y(i))cost(y^(i),y(i))=−y(i)log(hθ(x(i)))−(1−y(i))log(1−hθ(x(i)))(5)
c
o
s
t
(
y
^
(
i
)
,
y
(
i
)
)
cost(\hat{y}^{(i)},y^{(i)})
cost(y^(i),y(i))随
h
θ
(
x
(
i
)
)
h_\theta\left( {{x}^{(i)}} \right)
hθ(x(i))的变化情况如图3所示:
由图3可知:
当实际的
y
(
i
)
=
1
y^{(i)}=1
y(i)=1 且
h
θ
(
x
(
i
)
)
{h_\theta}( x ^{(i)})
hθ(x(i))也为 1 时误差为 0,当
y
(
i
)
=
1
y^{(i)}=1
y(i)=1 但
h
θ
(
x
(
i
)
)
{h_\theta}( x ^{(i)})
hθ(x(i))不为1时误差随着
h
θ
(
x
(
i
)
)
{h_\theta}( x ^{(i)})
hθ(x(i))变小而变大。
当实际的
y
(
i
)
=
0
y^{(i)}=0
y(i)=0 且
h
θ
(
x
(
i
)
)
{h_\theta}( x ^{(i)})
hθ(x(i))也为 0 时代价为 0,当
y
(
i
)
=
0
y^{(i)}=0
y(i)=0 但
h
θ
(
x
(
i
)
)
{h_\theta}( x ^{(i)})
hθ(x(i))不为 0时误差随着
h
θ
(
x
(
i
)
)
{h_\theta}( x ^{(i)})
hθ(x(i))变大而变大。
当
n
=
1
n=1
n=1时,
J
(
θ
0
,
θ
1
)
J (\theta_0, \theta_1)
J(θ0,θ1)示意如图4所示:
4 求解模型参数
求解模型参数的过程可以表示为无约束最优化问题,即:
m
i
n
θ
∈
R
n
J
(
θ
)
(6)
\mathop{min}\limits_{\theta \in R^n}J(\theta) \tag{6}
θ∈RnminJ(θ)(6)
故,
θ
=
a
r
g
m
i
n
θ
∈
R
n
J
(
θ
)
\theta=arg \mathop{min}\limits_{\theta \in R^n}J(\theta)
θ=argθ∈RnminJ(θ)。
4.1 梯度下降(Gradient Descent)
梯度下降是一个用来求函数最小值的方法,该方法通过不断的迭代模型参数,使得目标函数(这里即为代价函数 J J J)达到局部最小值。
梯度下降的迭代公式为:
{
θ
0
:
=
θ
0
−
α
∂
∂
θ
0
J
(
θ
)
θ
1
:
=
θ
1
−
α
∂
∂
θ
1
J
(
θ
)
⋅
⋅
⋅
θ
n
:
=
θ
n
−
α
∂
∂
θ
n
J
(
θ
)
(7)
\begin{cases} {\theta_{0}}:={\theta_{0}}-\alpha \frac{\partial }{\partial {\theta_{0}}} J(\theta) \\ {\theta_{1}}:={\theta_{1}}-\alpha \frac{\partial }{\partial {\theta_{1}}} J(\theta) \\···\\{\theta_{n}}:={\theta_{n}}-\alpha \frac{\partial }{\partial {\theta_{n}}} J(\theta) \end{cases}\tag{7}
⎩⎪⎪⎪⎨⎪⎪⎪⎧θ0:=θ0−α∂θ0∂J(θ)θ1:=θ1−α∂θ1∂J(θ)⋅⋅⋅θn:=θn−α∂θn∂J(θ)(7)
其中,
α
\alpha
α称为学习率,
∂
∂
θ
j
J
(
θ
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\frac{\partial }{\partial {\theta_{j}}}J(\theta)=\frac{1}{m}\sum\limits_{i=1}^{m}{({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}})}x_{j}^{(i)}
∂θj∂J(θ)=m1i=1∑m(hθ(x(i))−y(i))xj(i)。
式
(
7
)
(7)
(7)写成矩阵形式为:
θ
:
=
θ
−
α
∇
J
(
θ
)
(8)
\theta:=\theta-\alpha \nabla J(\theta) \tag{8}
θ:=θ−α∇J(θ)(8)
其中,
∇
J
(
θ
)
=
[
∂
∂
θ
0
J
(
θ
)
,
∂
∂
θ
1
J
(
θ
)
,
⋅
⋅
⋅
,
∂
∂
θ
n
J
(
θ
)
]
T
\nabla J(\theta)=[\frac{\partial }{\partial {\theta_{0}}}J(\theta),\frac{\partial }{\partial {\theta_{1}}}J(\theta),···,\frac{\partial }{\partial {\theta_{n}}}J(\theta)]^T
∇J(θ)=[∂θ0∂J(θ),∂θ1∂J(θ),⋅⋅⋅,∂θn∂J(θ)]T。
参数 | 可取方法 |
---|---|
模型参数初始值 | 随机选取 |
学习率 | 0.01 → 0.03 → 0.1 → ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.01\rightarrow0.03\rightarrow0.1\rightarrow······ 0.01→0.03→0.1→⋅⋅⋅⋅⋅⋅ |
迭代停止条件 | 代价函数收敛 |
判断代价函数
J
(
θ
)
J(\theta)
J(θ)收敛的办法一般为画出“代价函数值——迭代次数”图,如图5所示。即每进行一次式
(
7
)
(7)
(7)的计算,便进行一次式
(
5
)
(5)
(5)的计算。
4.2 其他算法
共轭梯度法、BFGS(变尺度法)、L-BFGS(限制变尺度法)······
5 一对多(one-vs-all)
当
y
(
i
)
∈
{
1
,
0
}
→
y
(
i
)
∈
{
1
,
2
,
3
,
⋅
⋅
⋅
,
k
,
⋅
⋅
⋅
}
{y}^{(i)}\in{\{1,0\}} \to{y}^{(i)}\in{\{1,2,3,···,k,···\}}
y(i)∈{1,0}→y(i)∈{1,2,3,⋅⋅⋅,k,⋅⋅⋅}时:
将
y
(
i
)
=
1
{y}^{(i)}=1
y(i)=1标记为正向类,将
y
(
i
)
≠
1
{y}^{(i)}\ne1
y(i)=1标记为负向类,构建二分类逻辑回归模型
h
θ
(
1
)
(
x
(
i
)
)
h_\theta^{( 1 )}\left( x^{(i)} \right)
hθ(1)(x(i));
将
y
(
i
)
=
2
{y}^{(i)}=2
y(i)=2标记为正向类,将
y
(
i
)
≠
2
{y}^{(i)}\ne2
y(i)=2标记为负向类,构建二分类逻辑回归模型
h
θ
(
2
)
(
x
(
i
)
)
h_\theta^{\left( 2\right)}\left( x^{(i)} \right)
hθ(2)(x(i));
······
将
y
(
i
)
=
k
{y}^{(i)}=k
y(i)=k标记为正向类,将
y
(
i
)
≠
k
{y}^{(i)}\ne k
y(i)=k标记为负向类,构建二分类逻辑回归模型
h
θ
(
k
)
(
x
(
i
)
)
h_\theta^{\left( k\right)}\left( x^{(i)} \right)
hθ(k)(x(i));
······
式
(
2
)
(2)
(2)转化为:
h
θ
(
k
)
(
x
(
i
)
)
=
p
(
y
(
i
)
=
k
∣
x
(
i
)
;
θ
)
(9)
h_\theta^{\left( k\right)}\left( x^{(i)} \right)=p\left( y^{(i)}=k|x^{(i)};\theta \right)\tag{9}
hθ(k)(x(i))=p(y(i)=k∣x(i);θ)(9)
式
(
3
)
(3)
(3)转化为:
{
y
^
(
i
)
=
k
h
θ
(
k
)
(
x
(
i
)
)
=
max
i
h
θ
(
k
)
(
x
(
i
)
)
(10)
\begin{cases} \hat{y}^{(i)}=k\\ h_\theta^{\left( k \right)}(x^{(i)})=\mathop{\max}\limits_i\,h_\theta^{\left( k \right)}\left( x^{(i)} \right) \tag{10} \end{cases}
{y^(i)=khθ(k)(x(i))=imaxhθ(k)(x(i))(10)
式 ( 10 ) (10) (10)即为一对多逻辑回归模型的输出表达式。
补充说明📝:
• 最优化相关知识后面看情况再补上。(ps:上课笔记丢了,难受n+1😭)
•
B
a
t
c
h
Batch
Batch梯度下降是指计算代价函数时用到了训练集所有样本。
• 机器学习中的“梯度下降”实际上是指最速下降算法,即搜索方向为负梯度方向。学习率即为搜索步长。
• 在逻辑回归模型中,代价函数
J
(
θ
)
J(\theta)
J(θ)为凸函数,故求得的局部最小值即为全局最小值。
• 学习率取值不合适可能导致代价函数发散、不收敛或收敛速度慢等问题。
学习和温习记录,欢迎各位一起交流讨论,如有错误的地方或者建议,恳请在评论区批评和指导,博客不定期修改和更新。