51-逻辑回归的损失函数
逻辑回归的损失函数
上一篇博客我们介绍了逻辑回归的大致框架,通过 S i g m o i d Sigmoid Sigmoid 函数得出了这个式子:
现在的问题就是我们怎么建模来求出
θ
θ
θ?逻辑回归和线性回归最大的区别就是逻辑回归解决的是分类问题,所以给出来的数据
y
y
y 要么是 1,要么是 0,而我们是根据估计出来的
p
p
p 来决定我们估计的
y
y
y 到底是 1 还是 0,那么它分成了两类。相应的,我们的损失函数也分成两类(下面的
y
y
y 是真值):
也就是给定的样本的真值为 1 的话,那么我们估计出来的
p
p
p 越小,意味着我们最后得到的
y
y
y 的预测值越接近于 0,那么我们的损失就越大。 相反同理。‘
那么我们应该使用什么样的函数满足 c o s t cost cost 的特征呢?我们使用这样一个式子:
看起来非常复杂,其实很容易理解。下面我们逐一开始分析,我们先从
y
=
1
y = 1
y=1 开始,我们先来看看
l
o
g
(
x
)
log(x)
log(x) 这根曲线是什么样子的:
但是我们的损失函数是
−
l
o
g
(
x
)
-log(x)
−log(x),它与
l
o
g
(
x
)
log(x)
log(x) 是关于
x
x
x 轴对称的 。
这里需要注意,由于我们传入的
p
p
p 的值只在 0-1 之间。
很容易发现当
p
=
0
p = 0
p=0 时,
c
o
s
t
cost
cost 值趋近于正无穷,此时损失很大;当
p
=
1
p = 1
p=1 时,
c
o
s
t
cost
cost 值等于 0,此时没有损失。
下面我们再来看看 − l o g ( 1 − x ) -log(1-x) −log(1−x) 是什么样子的曲线:
因为
p
p
p 的取值也在 0-1 之间,所以我们只看 0-1 之间的部分。当
x
=
1
x = 1
x=1 时,
y
y
y 无限趋近于 1。
但是使用这种函数要分情况讨论,这显然是不方便的。那么我们可以通过一个手段将它们合成一个函数:
通过这样一个式子,我们通过
p
p
p 求出了相应的损失是多少。我们会有
m
m
m 个样本,我们只需要将
m
m
m 个样本的损失加在一起就得到了我们的损失函数
J
(
θ
)
J(θ)
J(θ)。
而
p
p
p 的计算式子如下:
那么我们将
J
(
θ
)
J(θ)
J(θ) 中的
p
p
p 进行替换,就会得到:
这样我们就求出了对于逻辑回归来说相应的损失函数。下面我们要做的事情就是找到一组
θ
θ
θ,使得
J
(
θ
)
J(θ)
J(θ) 尽可能小。
对于 J ( θ ) J(θ) J(θ),我们没有一个公式来求解出相应的 θ θ θ 的值,我们只能够使用梯度下降法进行求解。