前言
logistic模型是基本线性回归模型的扩展,为了解决其无法对非线性问题分类,进行函数变换得到logistic模型,但logistic模型只能处理二分类问题,softmax在logistic模型的基础上进行改进,可以进行多分类。
1、logistic模型原理
基本线性回归模型公式如下:
f
(
x
)
=
w
T
x
+
b
f(x)=w^Tx+b
f(x)=wTx+b
其中
w
T
w^T
wT是参数向量,x是样本,b为偏置项。
为了得到非线性效果,进行函数变换得到对数线性回归模型:
f
(
x
)
=
ln
(
w
T
x
+
b
)
f(x)=\ln(w^Tx+b)
f(x)=ln(wTx+b)
以二分类为例,我们想要得到预测结果为0,1的函数,则需要找到一个能把结果映射到0到1范围内的映射函数,同时该映射函数导数性质要好,能构造出损失函数,并通过求导优化参数。sigmoid函数完全满足以上条件,其表达式如下:
s
i
g
m
o
i
d
(
x
)
=
1
1
+
e
(
−
x
)
sigmoid(x)=\frac{1}{1+e^{(-x)}}
sigmoid(x)=1+e(−x)1
设h(x)=sigmoid(x), 可推出sigmoid()函数有如下导数性质:
h
′
(
x
)
=
h
(
x
)
(
1
−
h
(
x
)
)
h'(x)=h(x)(1-h(x))
h′(x)=h(x)(1−h(x))
推导过程如下:
(
1
1
+
e
−
x
)
′
=
e
−
x
(
1
+
e
−
x
)
2
=
1
1
+
e
−
x
⋅
e
−
x
1
+
e
−
x
=
1
1
+
e
(
−
x
)
⋅
(
1
−
1
1
+
e
−
x
)
=
s
i
g
m
o
i
d
(
x
)
(
1
−
s
i
g
m
o
i
d
(
x
)
)
\begin{aligned} (\frac{1}{1+e^{-x}})'&=\frac{e^{-x}}{(1+e^{-x})^2}\\ &=\frac{1}{1+e^{-x}}·\frac{e^{-x}}{1+e^{-x}}\\ &=\frac{1}{1+e^{(-x)}}·(1-\frac{1}{1+e^{-x}})\\ &=sigmoid(x)(1-sigmoid(x)) \end{aligned}
(1+e−x1)′=(1+e−x)2e−x=1+e−x1⋅1+e−xe−x=1+e(−x)1⋅(1−1+e−x1)=sigmoid(x)(1−sigmoid(x))
因此Logistic回归模型可以表示如下:
y
=
1
1
+
e
−
(
w
T
x
+
b
)
y=\frac{1}{1+e^{-(w^Tx+b)}}
y=1+e−(wTx+b)1
设
P
(
y
=
1
|
x
;
w
)
=
h
(
x
)
=
1
1
+
e
−
(
w
T
x
+
b
)
P
(
y
=
0
|
x
;
w
)
=
1
−
h
(
x
)
=
1
1
+
e
(
w
T
x
+
b
)
P(y=1|x;w)=h(x)=\frac{1}{1+e^{-(w^Tx+b)}}\\ P(y=0|x;w)=1-h(x)=\frac{1}{1+e^{(w^Tx+b)}}
P(y=1|x;w)=h(x)=1+e−(wTx+b)1P(y=0|x;w)=1−h(x)=1+e(wTx+b)1
合并上式可得:
P
(
y
∣
x
;
w
)
=
(
h
(
x
)
)
y
(
1
−
h
(
x
)
)
1
−
y
P(y|x;w)=(h(x))^y(1-h(x))^{1-y}
P(y∣x;w)=(h(x))y(1−h(x))1−y
其中,y取值0或1,构造似然函数如下:
L
(
w
)
=
∏
i
=
1
n
P
(
y
i
∣
x
i
;
w
)
=
∏
i
=
1
n
(
h
(
x
i
)
)
i
y
(
1
−
h
(
x
i
)
)
1
−
y
i
L(w)=\prod^n_{i=1} P(y_i|x_i;w)=\prod^n_{i=1}(h(x_i))^y_i(1-h(x_i))^{1-y_i}
L(w)=i=1∏nP(yi∣xi;w)=i=1∏n(h(xi))iy(1−h(xi))1−yi
似然函数取最大既可求得,最优的w值。为了方便求解,对上式加负号并取对数转为求函数的极小值,即可得到交叉熵损失:
−
l
o
g
(
L
(
w
)
)
=
−
∑
i
=
1
n
y
i
log
(
h
(
x
i
)
)
+
(
1
−
y
i
)
log
(
1
−
h
(
x
i
)
)
-log(L(w))=-\sum _{i=1}^ny_i\log(h(x_i))+(1-y_i)\log(1-h(x_i))
−log(L(w))=−i=1∑nyilog(h(xi))+(1−yi)log(1−h(xi))
记
J
(
w
)
=
−
l
o
g
(
L
(
w
)
)
J(w)=-log(L(w))
J(w)=−log(L(w)),上式对w求导:
∂
J
(
w
)
∂
w
=
∂
(
−
log
(
L
(
w
)
)
)
∂
w
=
−
∑
i
=
1
n
(
y
i
h
(
x
i
)
−
1
−
y
i
1
−
h
(
x
i
)
)
h
′
(
x
i
)
\begin{aligned} \frac{\partial J(w)}{\partial w}&=\frac{\partial (-\log(L(w)))}{\partial w}\\ &=-\sum_{i=1}^n(\frac{y_i}{h(x_i)}-\frac{1-y_i}{1-h(x_i)})h'(x_i)\\ \end{aligned}
∂w∂J(w)=∂w∂(−log(L(w)))=−i=1∑n(h(xi)yi−1−h(xi)1−yi)h′(xi)
其中,
h
′
(
x
)
=
h
(
x
)
(
1
−
h
(
x
)
)
h'(x)=h(x)(1-h(x))
h′(x)=h(x)(1−h(x)),代入可得:
∂
J
(
w
)
∂
w
=
−
∑
i
=
1
n
(
y
i
h
(
x
i
)
−
1
−
y
i
1
−
h
(
x
i
)
)
h
′
(
x
i
)
=
−
∑
i
=
1
n
(
y
i
h
(
x
i
)
−
1
−
y
i
1
−
h
(
x
i
)
)
h
(
x
)
(
1
−
h
(
x
)
)
∂
w
T
x
i
∂
w
=
−
∑
i
=
1
n
(
y
i
−
h
(
x
i
)
)
x
i
\begin{aligned} \frac{\partial J(w)}{\partial w}&=-\sum_{i=1}^n(\frac{y_i}{h(x_i)}-\frac{1-y_i}{1-h(x_i)})h'(x_i)\\ &=-\sum_{i=1}^n(\frac{y_i}{h(x_i)}-\frac{1-y_i}{1-h(x_i)})h(x)(1-h(x))\frac{\partial w^Tx_i}{\partial w}\\ &=-\sum_{i=1}^n(y_i-h(x_i))x_i \end{aligned}
∂w∂J(w)=−i=1∑n(h(xi)yi−1−h(xi)1−yi)h′(xi)=−i=1∑n(h(xi)yi−1−h(xi)1−yi)h(x)(1−h(x))∂w∂wTxi=−i=1∑n(yi−h(xi))xi
采用梯度下降法对参数进行更新,经过多次迭代即可求得最优参数w。
w
t
+
1
=
w
t
−
γ
∂
J
(
w
)
∂
w
w_{t+1}=w_t-\gamma \frac{\partial J(w)}{\partial w}
wt+1=wt−γ∂w∂J(w)
相对于原始的线性模型,Logistic模型通过sigmoid函数映射后,将数据压缩到了0~1之间,因此可以很好的解决异常点分类问题。
过拟合与正则项
为了防止模型过拟合,可以通过添加正则项的方式解决该问题,常用的正则项有:L1正则,L2正则,或结合L1和L2正则的弹性网。
添加L1正则的损失函数如下:
J
(
w
)
=
−
∑
i
=
1
n
y
i
log
(
h
(
x
i
)
)
+
(
1
−
y
i
)
log
(
1
−
h
(
x
i
)
)
+
λ
∑
i
=
1
d
∣
w
i
∣
J(w)=-\sum _{i=1}^ny_i\log(h(x_i))+(1-y_i)\log(1-h(x_i))+\lambda \sum _{i=1}^d|w_i|
J(w)=−i=1∑nyilog(h(xi))+(1−yi)log(1−h(xi))+λi=1∑d∣wi∣
添加L2正则的损失函数如下:
J
(
w
)
=
−
∑
i
=
1
n
y
i
log
(
h
(
x
i
)
)
+
(
1
−
y
i
)
log
(
1
−
h
(
x
i
)
)
+
λ
∑
i
=
1
d
w
i
2
J(w)=-\sum _{i=1}^ny_i\log(h(x_i))+(1-y_i)\log(1-h(x_i))+\lambda \sum _{i=1}^dw_i^2
J(w)=−i=1∑nyilog(h(xi))+(1−yi)log(1−h(xi))+λi=1∑dwi2
添加弹性网Elastic net后的损失函数如下:
J
(
w
)
=
−
∑
i
=
1
n
y
i
log
(
h
(
x
i
)
)
+
(
1
−
y
i
)
log
(
1
−
h
(
x
i
)
)
+
λ
(
ρ
∑
i
=
1
d
∣
w
i
∣
+
(
1
−
ρ
)
∑
i
=
1
d
w
i
2
)
J(w)=-\sum _{i=1}^ny_i\log(h(x_i))+(1-y_i)\log(1-h(x_i))+\lambda (\rho \sum _{i=1}^d|w_i|+(1-\rho)\sum _{i=1}^dw_i^2)
J(w)=−i=1∑nyilog(h(xi))+(1−yi)log(1−h(xi))+λ(ρi=1∑d∣wi∣+(1−ρ)i=1∑dwi2)
其中,n为样本数,d为属性或特征数。
λ
>
0
\lambda>0
λ>0,
0
<
ρ
<
1
0<\rho<1
0<ρ<1。第一部分为经验风险(原损失函数),第二部分为结构风险(正则项)。
2、LR模型为什么不用MSE做损失函数?
- 当 w w w 的值稍微大些或稍微小写的时候, h i h_{i} hi 很容易趋近于1或0,造成 ∂ m s e ∂ w \frac{\partial mse}{\partial w} ∂w∂mse会很小,导致 w w w 学不到东西.
- m s e mse mse损失函数的极小值点特别多,与特征维度的平方成正相关,这对初始化 w 就有很大的要求