LR用于解决二分类问题。可以认为LR模型拟合的是z=w*x+b 这条直线(分类边界),使得尽可能地将数据中的两个类别正确的分开。
预测函数:
h ω ( x ) = g ( ω T x ) = 1 1 + e − ω T x h_{\omega}(x) = g(\omega^{T}x) = \frac{1}{1+e^{-\omega^{T}x}} hω(x)=g(ωTx)=1+e−ωTx1
0 ≤ h ω ( x ) ≤ 1 0\le h_{\omega}(x)\le 1 0≤hω(x)≤1
输出值不表示预测结果,而是数据被预测为1(正例)的概率:
P
(
y
=
1
∣
x
;
ω
)
=
h
ω
(
x
)
P(y=1|x;\omega) = h_{\omega}(x)
P(y=1∣x;ω)=hω(x),
那么预测为负例的概率就是
1
−
h
ω
(
x
)
=
P
(
y
=
0
∣
x
;
ω
)
1-h_{\omega}(x) = P(y=0|x;\omega)
1−hω(x)=P(y=0∣x;ω)。
损失函数:
L
(
ω
)
=
−
y
l
o
g
y
^
−
(
1
−
y
)
l
o
g
(
1
−
y
^
)
L(\omega) = -ylog\hat{y} -(1-y)log(1-\hat{y})
L(ω)=−ylogy^−(1−y)log(1−y^)
用极大似然估计的方法得出。
逻辑回归如果用误差平方和作为损失函数的话,
L ( ω ) = 1 n ∑ i = 1 n ( ϕ ( z ( i ) ) − y ( i ) ) 2 L(\omega) = \dfrac{1}{n} \sum\limits_{i=1}^{n}(\phi(z^{(i)}) - y^{(i)})^2 L(ω)=n1i=1∑n(ϕ(z(i))−y(i))2
其中,i表示第i个样本点, y ( i ) y^{(i)} y(i)表示第i个样本的真实值, ϕ ( z ( i ) ) \phi(z^{(i)}) ϕ(z(i))表示第i个样本的预测值,
ϕ ( z ) = 1 1 + e − z , z ( i ) = w T x ( i ) + b \phi(z)=\frac{1}{1+e^{-z}}, z^{(i)} = w^Tx^{(i)} + b ϕ(z)=1+e−z1,z(i)=wTx(i)+b ;
此时,将 ϕ ( z ( i ) ) = 1 1 + e − z \phi(z^{(i)})=\frac{1}{1+e^{-z}} ϕ(z(i))=1+e−z1 代入的话,会发现这是一个非凸函数,
这就意味着代价函数有着许多的局部最小值,不利于我们的求解。
解决方法就是用极大似然估计。
为什么用负对数似然作为损失函数呢?
极大似然估计:
把
h
ω
(
x
)
h_{\omega}(x)
hω(x)视为Y=1的后验估计,假设因变量y服从伯努利分布,取值为0和1,那么
p
(
y
=
1
∣
x
)
=
h
ω
(
x
)
p(y=1|x) = h_{\omega}(x)
p(y=1∣x)=hω(x)
p
(
y
=
0
∣
x
)
=
1
−
h
ω
(
x
)
p(y=0|x) = 1-h_{\omega}(x)
p(y=0∣x)=1−hω(x)
两式合并:
p
(
y
∣
x
)
=
h
ω
(
x
)
y
(
1
−
h
ω
(
x
)
)
1
−
y
p(y | x) = h_{\omega} (x)^y (1-h_{\omega} (x))^{1-y}
p(y∣x)=hω(x)y(1−hω(x))1−y
对n个数据 {(x1,y1), (x2,y2), (x3,y3), … (Xn,Yn)},看作一组事件发生的总概率:
P总 = p(y1|x1)p(y2|x2)p(y3|x3)…p(yn|xn)
=
∏
n
=
1
N
p
y
n
(
1
−
p
)
1
−
y
n
\prod\limits_{n=1}^{N} p^{y_{n}}(1-p)^{1-y_{n}}
n=1∏Npyn(1−p)1−yn
这里,
p
(
y
∣
x
)
=
h
ω
p(y|x)=h_{\omega}
p(y∣x)=hω是一个关于w的函数,x,y是已知数据,所以
P总是一个关于w的函数,未知变量只有一个w。
用极大似然估计来根据给定的训练集估计出参数w:
(1) 写出极大似然函数(Likehood)如下:
L
(
ω
)
=
∏
i
=
1
m
p
(
y
i
∣
x
i
;
ω
)
=
∏
i
=
1
m
h
ω
(
x
i
)
y
i
(
1
−
h
ω
(
x
i
)
1
−
y
i
\begin{aligned} L(\omega)&= \prod_{i=1}^{m} p(y_i | x_i; \omega) \\ &= \prod_{i=1}^{m} h_{\omega}(x_i)^{y_i} (1-h_{\omega}(x_i)^{1-y_i} \\ \end{aligned}
L(ω)=i=1∏mp(yi∣xi;ω)=i=1∏mhω(xi)yi(1−hω(xi)1−yi
可见,似然函数L(w)和上面的
P
总
P_{总}
P总是一样的。
(2) 两边取对数:
l
(
w
)
=
l
n
L
(
w
)
=
∑
i
=
1
m
[
y
i
l
n
(
h
ω
(
x
i
)
)
+
(
1
−
y
i
)
l
n
(
1
−
h
ω
(
x
i
)
)
]
l(w)=lnL(w)=\sum\limits_{i = 1}^m [ y_{i}ln(h_{\omega}(x_{i})) + (1 - y_{i})ln(1-h_{\omega}(x_{i})) ]
l(w)=lnL(w)=i=1∑m[yiln(hω(xi))+(1−yi)ln(1−hω(xi))]
取对数后l(w)与
P
总
P_{总}
P总的单调性是一样的。
参数估计的意思就是,通过改变w的值,使得
P
总
P_{总}
P总有不同的取值,
选取使
P
总
P_{总}
P总最大的那个
ω
∗
\omega^{*}
ω∗,就认为是我们要求得的w。写成公式:
ω
∗
=
arg
max
ω
l
(
ω
)
\omega^{*} = \mathop{\arg\max}\limits_{\omega}\, l(\omega)
ω∗=ωargmaxl(ω)
(2.5) 取负号
为了让最大似然值和最小损失相对应,
在l(w)前面加个负号,就从最大似然变为最小化负对数似然函数,作为LR的损失函数。
LR的损失函数是这么来的!
J
(
ω
)
=
−
1
m
l
(
ω
)
=
−
1
m
∑
i
=
1
m
[
y
i
l
n
(
h
ω
(
x
i
)
)
+
(
1
−
y
i
)
l
n
(
1
−
h
ω
(
x
i
)
)
]
\begin{aligned} J(\omega) &= - \frac{1}{m} l(\omega) \\ &= - \frac{1}{m} \sum_{i = 1}^m [ y_{i}ln(h_{\omega}(x_{i})) + (1 - y_{i})ln(1-h_{\omega}(x_{i})) ] \\ \end{aligned}
J(ω)=−m1l(ω)=−m1i=1∑m[yiln(hω(xi))+(1−yi)ln(1−hω(xi))] {损失函数}
简记为:
L
o
s
s
(
ω
)
=
−
y
l
o
g
y
^
−
(
1
−
y
)
l
o
g
(
1
−
y
^
)
Loss(\omega) = -ylog\hat{y} -(1-y)log(1-\hat{y})
Loss(ω)=−ylogy^−(1−y)log(1−y^)
(3) 将对数似然函数对各参数求偏导数 并令其为0,得到对数似然方程组。
(4) 从方程组中解出各个参数。
既然要求J(w)的极小值,这里就换用梯度下降法求w
w
j
:
=
w
j
+
Δ
w
j
,
Δ
w
j
=
−
η
∂
J
(
w
)
∂
w
j
w_j := w_j + \Delta w_j,\ \Delta w_j = -\eta \dfrac{\partial J(w)}{\partial w_j}
wj:=wj+Δwj, Δwj=−η∂wj∂J(w)
先求偏导:
∂
J
(
ω
)
∂
ω
j
=
−
1
m
∑
[
y
i
1
h
ω
(
x
i
)
∂
h
ω
(
x
i
)
∂
ω
+
(
1
−
y
i
)
−
1
1
−
h
w
(
x
i
)
∂
h
ω
(
x
i
)
∂
ω
]
=
−
1
m
∑
i
m
[
y
i
−
h
ω
(
x
i
)
h
ω
(
x
i
)
(
1
−
h
ω
(
x
i
)
)
]
∂
h
ω
(
x
i
)
∂
ω
\begin{aligned} \frac{ \partial J(\omega)} {\partial \omega_j} &= -\frac{1}{m} \sum [ y_{i} \frac{1}{h_{\omega}(x_i)} \dfrac{\partial h_{\omega}(x_i)}{\partial \omega} +(1-y_i) \frac{-1}{1-h_{w}(x_i)} \dfrac{\partial h_{\omega}(x_i)}{\partial \omega}] \\ &= -\frac{1}{m} \sum_{i}^{m} [ \dfrac {y_i - h_{\omega}(x_i)} { h_{\omega}(x_i)(1-h_{\omega}(x_i)) } ] \dfrac{\partial h_{\omega}(x_i)}{\partial \omega} \\ \end{aligned}
∂ωj∂J(ω)=−m1∑[yihω(xi)1∂ω∂hω(xi)+(1−yi)1−hw(xi)−1∂ω∂hω(xi)]=−m1i∑m[hω(xi)(1−hω(xi))yi−hω(xi)]∂ω∂hω(xi)
h
ω
(
x
)
h_{\omega}(x)
hω(x) 首先是个sigmoid函数,其导数 g’(x) = g(x)(1 - g(x)) ,于是
把下面h(x)对w的偏导数代入上式:
∂
h
ω
(
x
i
)
∂
ω
=
h
w
(
x
i
)
(
1
−
h
ω
(
x
i
)
)
∂
(
−
ω
T
x
)
∂
ω
j
=
−
x
i
,
j
h
ω
(
x
i
)
(
1
−
h
ω
(
x
i
)
)
\begin{aligned} \dfrac{\partial h_{\omega}(x_i)}{\partial \omega} &= h_{w}(x_i)(1-h_{\omega}(x_i))\dfrac{\partial (-\omega^Tx)}{\partial \omega_j} \\ &= -x_{i,j} h_{\omega}(x_i)(1-h_{\omega}(x_i)) \end{aligned}
∂ω∂hω(xi)=hw(xi)(1−hω(xi))∂ωj∂(−ωTx)=−xi,jhω(xi)(1−hω(xi))
继续得到:
∂
J
(
ω
)
∂
ω
j
=
−
1
m
∑
i
m
(
y
i
−
h
ω
(
x
i
)
)
(
−
x
i
,
j
)
=
−
1
m
∑
i
m
(
−
y
i
⋅
x
i
,
j
+
h
ω
(
x
i
)
⋅
x
i
,
j
)
=
−
1
m
∑
i
m
(
h
ω
(
x
i
)
−
y
i
)
x
i
,
j
\begin{aligned} \frac{ \partial J(\omega)} {\partial \omega_j} &= - \frac{1}{m} \sum_{i}^{m} (y_i - h_{\omega}(x_i)) (-x_{i,j}) \\ &= - \frac{1}{m} \sum_{i}^{m} (-y_i \cdot x_{i,j} + h_{\omega}(x_i) \cdot x_{i,j}) \\ & = -\frac{1}{m} \sum_{i}^{m} (h_{\omega}(x_i) - y_i) x_{i,j} \end{aligned}
∂ωj∂J(ω)=−m1i∑m(yi−hω(xi))(−xi,j)=−m1i∑m(−yi⋅xi,j+hω(xi)⋅xi,j)=−m1i∑m(hω(xi)−yi)xi,j
上述中
x
i
,
j
x_{i,j}
xi,j表示第i个样本的第j个属性的取值。
于是,
ω
\omega
ω的更新方式:
ω
j
+
1
=
ω
j
−
α
∑
i
=
1
m
(
h
ω
(
x
i
)
−
y
i
)
x
i
,
j
\omega_{j+1} = \omega_j - \alpha \sum\limits_{i=1}^{m} (h_{\omega}(x_i) - y_i) x_{i,j}
ωj+1=ωj−αi=1∑m(hω(xi)−yi)xi,j
对于随机梯度下降,每次只取一个样本,则ω的更新方式为:
ω
j
+
1
=
ω
j
−
α
(
h
ω
(
x
)
−
y
)
x
j
\omega_{j+1} = \omega_j - \alpha (h_{\omega}(x) - y) x_{j}
ωj+1=ωj−α(hω(x)−y)xj
xj 为这个样本第j个属性的值。
写成矩阵的形式:
W
←
W
−
α
X
T
(
Y
^
−
Y
)
W \leftarrow W - \alpha X^T(\hat{Y} - Y)
W←W−αXT(Y^−Y)
用梯度下降估计出似然函数的ω,就可以代入预测函数使用了,
Tips: 似然最大就是损失最小。
参考:
逻辑回归的本质–极大似然估计
逻辑回归
公式推导