逻辑回归损失函数的来由
损失函数为,其中
h
(
x
(
i
)
)
h( x^{(i)})
h(x(i))是第i个样本标签为1的概率
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(\omega)=-\frac{1}{M} \sum_{i=1}^M[ y^{(i)} log ( h( x^{(i)}))+(1- y^{(i)})log(1- h( x^{(i)}))]
J(ω)=−M1i=1∑M[y(i)log(h(x(i)))+(1−y(i))log(1−h(x(i)))]
那么其实可以看出,损失函数就是对数似然函数的和。
在极大似然法中,使用对数似然函数作为目标函数来求参数,在逻辑回归中也是差不多,使用对数似然函数的和作为目标函数来求参数。
那么为什么要求“对数”呢?主要是在极大似然法中,为了计算求导方便。取对数可以把好几个概率的相乘变为几个概率的相加,和的导数比积的导数好求多了,而且求对数之后不改变极值点,所以习惯上都取对数。后来就把这个习惯延续到逻辑回归中了。
逻辑函数的来由
逻辑函数的形式如下,其中
x
j
x_j
xj是第j个样本的第j维:
h
(
x
)
=
1
1
+
e
−
ω
x
h(x)=\frac{ 1}{1+e^{-\omega x} }
h(x)=1+e−ωx1
我们需要线性连续值
ω
T
x
\omega^T x
ωTx转化为离散值0和1。如果用下面这种简单粗暴的方法:
f
(
x
)
=
{
1
,
i
f
   
ω
T
x
≥
0
0
,
i
f
   
ω
T
x
<
0
\begin{aligned} f(x)=\left\{ \begin{array}{lr} 1,if \,\,\,\omega^T x\geq0 \\ 0, if \,\,\, \omega^T x< 0 \end{array} \right. \end{aligned}
f(x)={1,ifωTx≥00,ifωTx<0
上面这个函数不可导,对于求解参数来说太不友好了。因此才有了逻辑函数的形式。它近似于上面这个函数,又可以求导。但是逻辑函数得到的值还不是离散值0和1,而是样本为1的概率。那么逻辑函数的形式是怎么把线性连续值
ω
T
x
\omega^T x
ωTx转化为概率呢?
P
=
P
(
y
=
1
∣
x
)
=
1
1
+
e
−
ω
x
=
e
ω
x
e
ω
x
+
1
\begin{aligned} P=P(y=1|x)=\frac{ 1}{1+e^{-\omega x} } = \frac{e^{\omega x} }{e^{\omega x}+1 } \\ \end{aligned}
P=P(y=1∣x)=1+e−ωx1=eωx+1eωx
化简为:
P
(
e
ω
x
+
1
)
=
e
ω
x
P
=
e
ω
x
(
1
−
P
)
P
1
−
P
=
e
ω
x
l
n
P
1
−
P
=
ω
x
\begin{aligned} P(e^{\omega x}+1 )=e^{\omega x} \\ P=e^{\omega x}(1-P) \\ \frac{P}{1-P}=e^{\omega x} \\ ln \frac{P}{1-P}=\omega x \end{aligned}
P(eωx+1)=eωxP=eωx(1−P)1−PP=eωxln1−PP=ωx
所以,其实逻辑函数令
ω
T
x
\omega^T x
ωTx等于样本为1的几率的对数,即
l
n
P
1
−
P
ln\frac{P}{1-P}
ln1−PP,然后由此对数解出样本为1的概率
P
P
P,求解的公式即为逻辑函数。
梯度下降求解
J
(
ω
)
J(\omega)
J(ω)对
ω
j
\omega_j
ωj求导得:
d
J
(
ω
)
d
ω
j
=
−
1
M
∑
i
=
1
M
[
y
(
i
)
(
1
−
h
(
x
(
i
)
)
)
⋅
h
(
x
(
i
)
)
⋅
x
j
(
i
)
h
(
x
(
i
)
)
−
(
1
−
h
(
x
(
i
)
)
)
⋅
h
(
x
(
i
)
)
⋅
x
j
(
i
)
1
−
h
(
x
(
i
)
)
+
y
(
i
)
(
1
−
h
(
x
(
i
)
)
)
⋅
h
(
x
(
i
)
)
⋅
x
j
(
i
)
1
−
h
(
x
(
i
)
)
]
=
−
1
M
∑
i
=
1
M
[
(
y
(
i
)
−
h
(
x
(
i
)
)
)
x
j
(
i
)
]
\begin{aligned} \frac{dJ(\omega) }{d \omega_j }&=-\frac{1}{M} \sum_{i=1}^M [ \frac{y^{(i)}(1-h(x^{(i)})) \cdot h(x^{(i)})\cdot x^{(i)}_j}{ h(x^{(i)})} - \frac{(1-h(x^{(i)})) \cdot h(x^{(i)})\cdot x^{(i)}_j}{1-h(x^{(i)}) } + \frac{y^{(i)}(1-h(x^{(i)})) \cdot h(x^{(i)})\cdot x^{(i)}_j}{1-h(x^{(i)})} ] \\ & =-\frac{1}{M} \sum_{i=1}^M[ (y^{(i)}- h(x^{(i)}) ) x^{(i)}_j ] \end{aligned}
dωjdJ(ω)=−M1i=1∑M[h(x(i))y(i)(1−h(x(i)))⋅h(x(i))⋅xj(i)−1−h(x(i))(1−h(x(i)))⋅h(x(i))⋅xj(i)+1−h(x(i))y(i)(1−h(x(i)))⋅h(x(i))⋅xj(i)]=−M1i=1∑M[(y(i)−h(x(i)))xj(i)]
补充:逻辑函数求导公式
对于逻辑函数,其中
x
j
x_j
xj是第j个样本的第j维:
h
(
x
)
=
1
1
+
e
−
ω
x
h(x)=\frac{ 1}{1+e^{-\omega x} }
h(x)=1+e−ωx1
对
ω
j
\omega_j
ωj求导得:
d
h
(
x
)
d
ω
j
=
−
1
⋅
1
(
1
+
e
−
ω
x
)
2
⋅
e
−
ω
x
⋅
(
−
x
j
)
=
−
ω
x
1
+
e
−
ω
x
⋅
1
1
+
e
−
ω
x
⋅
x
j
=
(
1
−
h
(
x
)
)
⋅
h
(
x
)
⋅
x
j
\begin{aligned} \frac{dh(x) }{d \omega_j }&=-1\cdot \frac{1}{(1+e^{-\omega x})^2}\cdot e^{-\omega x}\cdot (-x_j) \\ & =\frac{-\omega x}{1+e^{-\omega x}} \cdot \frac{ 1}{1+e^{-\omega x} }\cdot x_j \\ & =(1-h(x)) \cdot h(x)\cdot x_j \end{aligned}
dωjdh(x)=−1⋅(1+e−ωx)21⋅e−ωx⋅(−xj)=1+e−ωx−ωx⋅1+e−ωx1⋅xj=(1−h(x))⋅h(x)⋅xj