逻辑回归的损失函数
逻辑回归
什么是逻辑回归
逻辑回归(Logistic Regression) 是一个用来解决分类问题的算法,逻辑回归算法可以根据样本的特征 计算出 样本发生的概率,概率取值范围 [0, 1]之间 ,是一个浮点数,一个精确到数值,算法名称中包含“回归”两个字眼;
在多元线性回归,多项式回归模型中
y
=
f
(
x
)
y = f(x)
y=f(x)
我们训练处模型后,传入样本x,输出的预测值y值域是 (-infinite, +infinite) ,但是逻辑回归 我们需要的输出是一个0-1之间的概率,如果输出值大于0.5 则分类为1,小于0.5则分类为0;所以我们需要一个函数,将
θ
⋅
X
\theta \cdot X
θ⋅X输出的y 映射到 [0, 1]之间
sigmoid函数
p
=
1
1
+
e
−
t
p = \frac {1} {1+e^{-t}}
p=1+e−t1
函数姿势是这样的
t值就是我们传入的 预测值 y, 可以想象一下,如果t 趋于正无穷,则
e
−
t
e^{-t}
e−t值趋于0,那么 sigmoid函数值趋于1,反之 t趋于负无穷,则sigmoid 函数值趋于0;当t = 0,函数值为0.5 ;这个函数用来将 一个值域为 (-infinite, +infinite)的值映射到 (0,1)之间
逻辑回归的损失函数
应用sigmoid函数后,那么对于样本
x
1
x_1
x1预测输出值为
p
=
1
1
+
e
−
X
b
1
⋅
θ
p = \frac {1} {1 + e^{-X_b^1 \cdot \theta}}
p=1+e−Xb1⋅θ1
我们再来考虑 逻辑回归的损失函数,逻辑回归的损失函数 与之前 多元线性回归,PCA 的损失函数不同,当样本的标记不同(为0 或 1)逻辑回归的损失函数也不一样;
对于一个样本
x
b
x_b
xb
如果
x
b
x_b
xb的标记为1:预测值 p(取值范围[0, 1])越大 则误差越小(趋于0)
如果
x
b
x_b
xb的标记为0:预测值 p(取值范围[0, 1])越大 则误差越大(趋于正无穷)
所以我们使用如下函数作为逻辑回归的损失函数
当
x
b
x_b
xb标记为1:
c
o
s
t
=
−
l
o
g
(
p
)
cost = -log(p)
cost=−log(p)
当
x
b
x_b
xb标记为0:
c
o
s
t
=
−
l
o
g
(
1
−
p
)
cost = -log(1-p)
cost=−log(1−p)
函数图像如下
可以看出罗辑回归的损失函数分为两段,样本的标记不同,则需要应用不用的损失函数,我们使用下面的方式,将损失函数的两部分合为一体
c
o
s
t
=
(
y
)
⋅
−
l
o
g
(
p
^
)
+
(
1
−
y
)
⋅
(
−
l
o
g
(
1
−
p
^
)
)
cost = (y) \cdot -log(_p^\verb!^!) + (1-y) \cdot (-log(1-{_p^\verb!^!}))
cost=(y)⋅−log(p^)+(1−y)⋅(−log(1−p^))
当样本的 y 分类为1 ,代入公式,就会忽略 y为0 的部分;而y分类为0时 就会忽略 y为1 的损失函数部分,那么这就是逻辑回归的损失函数
逻辑回归损失函数求导
由于
p
=
σ
(
−
X
b
⋅
θ
)
=
(
1
1
+
e
−
X
b
⋅
θ
)
p = \sigma(-X_b \cdot \theta) = (\frac {1} {1+e^{-X_b \cdot \theta}})
p=σ(−Xb⋅θ)=(1+e−Xb⋅θ1)
代入损失函数中,并考虑所有样本
c
o
s
t
=
∑
i
=
1
m
(
y
i
)
⋅
(
−
l
o
g
(
1
1
+
e
−
X
b
i
⋅
θ
)
)
+
(
1
−
y
i
)
⋅
(
−
l
o
g
(
1
−
1
1
+
e
−
X
b
i
⋅
θ
)
)
cost = \sum_{i=1}^{m} (y^i) \cdot (-log({\frac 1 {1 + e^{-X_b^i \cdot \theta}}})) + (1-y^i) \cdot (-log(1- {\frac 1 {1 + e^{-X_b^i \cdot \theta}}}))
cost=i=1∑m(yi)⋅(−log(1+e−Xbi⋅θ1))+(1−yi)⋅(−log(1−1+e−Xbi⋅θ1))
对
θ
\theta
θ各个维度分量求导,得到梯度,然后进行梯度下降即可
为了计算方便,我们先对
σ
\sigma
σ函数外面的部分进行求导
c
o
s
t
=
∑
i
=
1
m
(
y
i
)
⋅
(
−
l
o
g
(
σ
(
p
)
)
)
+
(
1
−
y
i
)
⋅
(
−
l
o
g
(
1
−
σ
(
p
)
)
)
cost = \sum_{i=1}^{m} (y^i) \cdot (-log({\sigma(p)})) + (1-y^i) \cdot (-log(1- {\sigma(p)}))
cost=i=1∑m(yi)⋅(−log(σ(p)))+(1−yi)⋅(−log(1−σ(p)))
化简
c
o
s
t
=
−
∑
i
=
1
m
y
i
⋅
(
l
o
g
(
σ
(
p
)
)
)
+
(
1
−
y
i
)
⋅
(
l
o
g
(
1
−
σ
(
p
)
)
)
cost = -\sum_{i=1}^{m} y^i \cdot (log({\sigma(p)})) + (1-y^i) \cdot (log(1- {\sigma(p)}))
cost=−i=1∑myi⋅(log(σ(p)))+(1−yi)⋅(log(1−σ(p)))
我们先对
σ
(
−
X
b
⋅
θ
)
\sigma(-X_b \cdot \theta)
σ(−Xb⋅θ) 函数进行求导, 设
t
=
−
X
b
⋅
θ
t = -X_b \cdot \theta
t=−Xb⋅θ,则
σ
(
t
)
=
1
1
+
e
−
t
\sigma(t) = \frac 1 {1 + e^{-t}}
σ(t)=1+e−t1
σ ( t ) = ( 1 + e − t ) − 1 \sigma(t) = (1+e^{-t})^{-1} σ(t)=(1+e−t)−1
σ
(
t
)
′
=
−
(
1
+
e
−
t
)
−
2
⋅
e
−
t
⋅
−
1
=
(
1
+
e
−
t
)
−
2
⋅
e
−
t
\sigma(t)^{'} = -(1+e^{-t})^{-2} \cdot e^{-t} \cdot -1 = (1+e^{-t})^{-2} \cdot e^{-t}
σ(t)′=−(1+e−t)−2⋅e−t⋅−1=(1+e−t)−2⋅e−t
所以
σ
(
t
)
\sigma(t)
σ(t)函数最终导数为
(
1
+
e
−
t
)
−
2
⋅
e
−
t
(1+e^{-t})^{-2} \cdot e^{-t}
(1+e−t)−2⋅e−t
未完待续。。。