1. 引言
对于回归问题,我们知道可以通过回归模型进行拟合,并挖掘各个特征变量对模板变量的影响机制,但是,对于分类问题,由于目标变量是离散型变量,因此,不能直接应用回归模型进行解决,这时,可以使用Logistic回归模型进行解决。
2. Logistic回归模型介绍
2.1 Logistic回归模型的介绍
首先介绍Logistic分布,假设
X
X
X是连续随机变量,
X
X
X服从Logistic分布是指
X
X
X具有下列分布函数和密度函数:
F
(
x
)
=
P
(
X
⩽
x
)
=
1
1
+
e
−
(
x
−
μ
)
/
γ
f
(
x
)
=
F
′
(
x
)
=
e
−
(
x
−
μ
)
/
γ
γ
(
1
+
e
−
(
x
−
μ
)
/
γ
)
2
\begin{array}{l}{F(x)=P(X \leqslant x)=\frac{1}{1+\mathrm{e}^{-(x-\mu) / \gamma}}} \\ {f(x)=F^{\prime}(x)=\frac{\mathrm{e}^{-(x-\mu) / \gamma}}{\gamma\left(1+\mathrm{e}^{-(x-\mu) / \gamma}\right)^{2}}}\end{array}
F(x)=P(X⩽x)=1+e−(x−μ)/γ1f(x)=F′(x)=γ(1+e−(x−μ)/γ)2e−(x−μ)/γ其中,
μ
\mu
μ为位置参数,
γ
>
0
\gamma>0
γ>0为形状参数。密度函数和分布函数的分布图如下图所示。分布函数的图形是一条
S
S
S形曲线,该曲线的取值范围为
(
0
,
1
]
(0,1]
(0,1],并以点
(
μ
,
1
2
)
\left(\mu, \frac{1}{2}\right)
(μ,21)为中心对称,即有:
F
(
−
x
+
μ
)
−
1
2
=
−
F
(
x
−
μ
)
+
1
2
F(-x+\mu)-\frac{1}{2}=-F(x-\mu)+\frac{1}{2}
F(−x+μ)−21=−F(x−μ)+21
因此,对于分类问题,虽然不能直接用回归模型进行拟合,但是可以将其转化计算每一个类别的概率问题,因为概率的取值范围为
[
0
,
1
]
[0,1]
[0,1],因此,可以采用Logistic分布来进行拟合。
2.2 二项Logistic回归模型
对于二分类问题,假设随机变量为
X
X
X,目标变量为
Y
Y
Y,其取值为1或0,则可以通过Logistic模型来拟合条件概率分布
P
(
Y
∣
X
)
P(Y | X)
P(Y∣X),具体如下:
P
(
Y
=
1
∣
x
)
=
exp
(
w
⋅
x
+
b
)
1
+
exp
(
w
⋅
x
+
b
)
P
(
Y
=
0
∣
x
)
=
1
1
+
exp
(
w
⋅
x
+
b
)
\begin{array}{l}{P(Y=1 | x)=\frac{\exp (w \cdot x+b)}{1+\exp (w \cdot x+b)}} \\ {P(Y=0 | x)=\frac{1}{1+\exp (w \cdot x+b)}}\end{array}
P(Y=1∣x)=1+exp(w⋅x+b)exp(w⋅x+b)P(Y=0∣x)=1+exp(w⋅x+b)1其中,
x
∈
R
n
x \in \mathbf{R}^{n}
x∈Rn是输入,
Y
∈
{
0
,
1
}
Y \in\{0,1\}
Y∈{0,1}是输出,
w
∈
R
n
w \in \mathbf{R}^{n}
w∈Rn和
b
∈
R
b \in \mathbf{R}
b∈R是参数,
w
w
w称为权值向量,
b
b
b称为偏置,
w
⋅
x
w \cdot x
w⋅x表示内积,这样的模型称为二项Logistic回归模型。
对于给定的输入实例
x
x
x,只需要按照上式计算
P
(
Y
=
1
∣
x
)
P(Y=1 | x)
P(Y=1∣x)和
P
(
Y
=
0
∣
x
)
P(Y=0 | x)
P(Y=0∣x)两个概率值,将
x
x
x分到概率值大的那一类即可实现分类。为了方便,可以对权值向量和输入向量加以扩充,即
w
=
(
w
(
1
)
,
w
(
2
)
,
⋯
 
,
w
(
n
)
,
b
)
T
w=(w^{(1)},w^{(2)}, \cdots, w^{(n)}, b )^T
w=(w(1),w(2),⋯,w(n),b)T,
x
=
(
x
(
1
)
,
x
(
2
)
,
⋯
 
,
x
(
n
)
,
1
)
T
x=\left(x^{(1)}, x^{(2)}, \cdots, x^{(n)}, 1\right)^{\mathrm{T}}
x=(x(1),x(2),⋯,x(n),1)T,这时,可以将模型表达如下:
P
(
Y
=
1
∣
x
)
=
exp
(
w
⋅
x
)
1
+
exp
(
w
⋅
x
)
P
(
Y
=
0
∣
x
)
=
1
1
+
exp
(
w
⋅
x
)
\begin{array}{l}{P(Y=1 | x)=\frac{\exp (w \cdot x)}{1+\exp (w \cdot x)}} \\ {P(Y=0 | x)=\frac{1}{1+\exp (w \cdot x)}}\end{array}
P(Y=1∣x)=1+exp(w⋅x)exp(w⋅x)P(Y=0∣x)=1+exp(w⋅x)1将上述两式相除,即可得:
log
P
(
Y
=
1
∣
x
)
1
−
P
(
Y
=
1
∣
x
)
=
w
⋅
x
\log \frac{P(Y=1 | x)}{1-P(Y=1 | x)}=w \cdot x
log1−P(Y=1∣x)P(Y=1∣x)=w⋅x其中,
logit
(
p
)
=
log
p
1
−
p
\operatorname{logit}(p)=\log \frac{p}{1-p}
logit(p)=log1−pp称为事件
P
(
Y
=
1
∣
x
)
P(Y=1 | x)
P(Y=1∣x)的对数几率,也就是说,事件
P
(
Y
=
1
∣
x
)
P(Y=1 | x)
P(Y=1∣x)的对数几率可以由输入
x
x
x的线性函数表示的模型,即Logistic模型。
2.3 模型的参数估计
对于给定的训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
 
,
(
x
N
,
y
N
)
}
T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots\right.,\left(x_{N}, y_{N}\right) \}
T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中,
x
i
∈
R
n
,
y
i
∈
{
0
,
1
}
x_{i} \in \mathbf{R}^{n}, \quad y_{i} \in\{0,1\}
xi∈Rn,yi∈{0,1},Logistic回归模型采用极大似然估计法估计模型的参数,假设:
P
(
Y
=
1
∣
x
)
=
π
(
x
)
,
P
(
Y
=
0
∣
x
)
=
1
−
π
(
x
)
P(Y=1 | x)=\pi(x), \quad P(Y=0 | x)=1-\pi(x)
P(Y=1∣x)=π(x),P(Y=0∣x)=1−π(x)则似然函数为:
∏
i
=
1
N
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
1
−
y
i
\prod_{i=1}^{N}\left[\pi\left(x_{i}\right)\right]^{y_{i}}\left[1-\pi\left(x_{i}\right)\right]^{1-y_{i}}
i=1∏N[π(xi)]yi[1−π(xi)]1−yi对数似然函数为:
L
(
w
)
=
∑
i
=
1
N
[
y
i
log
π
(
x
i
)
+
(
1
−
y
i
)
log
(
1
−
π
(
x
i
)
)
]
=
∑
i
=
1
N
[
y
i
log
π
(
x
i
)
1
−
π
(
x
i
)
+
log
(
1
−
π
(
x
i
)
)
]
=
∑
i
=
1
N
[
y
i
(
w
⋅
x
i
)
−
log
(
1
+
exp
(
w
⋅
x
i
)
]
\begin{aligned} L(w) &=\sum_{i=1}^{N}\left[y_{i} \log \pi\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-\pi\left(x_{i}\right)\right)\right] \\ &=\sum_{i=1}^{N}\left[y_{i} \log \frac{\pi\left(x_{i}\right)}{1-\pi\left(x_{i}\right)}+\log \left(1-\pi\left(x_{i}\right)\right)\right] \\ &=\sum_{i=1}^{N}\left[y_{i}\left(w \cdot x_{i}\right)-\log \left(1+\exp \left(w \cdot x_{i}\right)\right]\right.\end{aligned}
L(w)=i=1∑N[yilogπ(xi)+(1−yi)log(1−π(xi))]=i=1∑N[yilog1−π(xi)π(xi)+log(1−π(xi))]=i=1∑N[yi(w⋅xi)−log(1+exp(w⋅xi)]对
L
(
w
)
L(w)
L(w)求极大值,即可得到
w
w
w的估计值
w
^
\hat{w}
w^,这样一来,对于任意给定的实例
x
x
x,就可以通过以下公式计算两个类别的概率,从而将概率值最大的类别作为预测的类别:
P
(
Y
=
1
∣
x
)
=
exp
(
w
^
⋅
x
)
1
+
exp
(
w
^
⋅
x
)
P
(
Y
=
0
∣
x
)
=
1
1
+
exp
(
w
^
⋅
x
)
\begin{array}{l}{P(Y=1 | x)=\frac{\exp (\hat{w} \cdot x)}{1+\exp (\hat{w} \cdot x)}} \\ {P(Y=0 | x)=\frac{1}{1+\exp (\hat{w} \cdot x)}}\end{array}
P(Y=1∣x)=1+exp(w^⋅x)exp(w^⋅x)P(Y=0∣x)=1+exp(w^⋅x)1
2.4 多项Logistic回归
对于多分类问题,假设目标变量有
K
K
K个类,其取值集合为
{
1
,
2
,
⋯
 
,
K
}
\{1,2, \cdots, K\}
{1,2,⋯,K},则Logistic回归模型会选择其中一个类别作为主类别,不妨以第
K
K
K类为主类别,然后将其与其他
K
−
1
K-1
K−1个类别分别构建
K
−
1
K-1
K−1个二项Logistic回归模型,具体如下所示:
log
P
(
Y
=
1
)
P
(
Y
=
K
)
=
w
1
⋅
x
log
P
(
Y
=
2
)
P
(
Y
=
K
)
=
w
2
⋅
x
⋮
log
P
(
Y
=
K
−
1
)
P
(
Y
=
K
)
=
w
K
−
1
⋅
x
\begin{aligned} {\log \frac{P\left(Y=1\right)}{P\left(Y=K\right)}=w_{1} \cdot x} \\ {\log \frac{P\left(Y=2\right)}{P\left(Y=K\right)}=w_{2} \cdot x} \\ \vdots \\ {\log \frac{P\left(Y=K-1\right)}{P\left(Y=K\right)}=w_{K-1} \cdot x} \end{aligned}
logP(Y=K)P(Y=1)=w1⋅xlogP(Y=K)P(Y=2)=w2⋅x⋮logP(Y=K)P(Y=K−1)=wK−1⋅x其中,
x
∈
R
n
+
1
,
w
k
∈
R
n
+
1
x \in \mathbf{R}^{n+1}, w_{k} \in \mathbf{R}^{n+1}
x∈Rn+1,wk∈Rn+1,对上述公式两边同时指数化易得:
P
(
Y
=
1
)
=
P
(
Y
=
K
)
exp
w
1
⋅
x
P
(
Y
=
2
)
=
P
(
Y
=
K
)
exp
w
2
⋅
x
⋮
P
(
Y
=
K
−
1
)
=
P
(
Y
=
K
)
exp
w
K
−
1
⋅
x
\begin{aligned} P\left(Y=1\right) &=P\left(Y=K\right) \exp^{w_{1} \cdot x} \\ P\left(Y=2\right) &=P\left(Y=K\right) \exp^{w_{2} \cdot x} \\ \vdots \\ P\left(Y=K-1\right) &=P\left(Y=K\right) \exp^{w_{K-1} \cdot x} \end{aligned}
P(Y=1)P(Y=2)⋮P(Y=K−1)=P(Y=K)expw1⋅x=P(Y=K)expw2⋅x=P(Y=K)expwK−1⋅x由于每个类别的概率加和必须等于1,因此,可以得到多项Logistic回归模型的计算公式:
P
(
Y
=
k
∣
x
)
=
exp
(
w
k
⋅
x
)
1
+
∑
k
=
1
K
−
1
exp
(
w
k
⋅
x
)
,
k
=
1
,
2
,
⋯
 
,
K
−
1
P
(
Y
=
K
∣
x
)
=
1
1
+
∑
k
=
1
K
−
1
exp
(
w
k
⋅
x
)
\begin{array}{c}{P(Y=k | x)=\frac{\exp \left(w_{k} \cdot x\right)}{1+\sum_{k=1}^{K-1} \exp \left(w_{k} \cdot x\right)}, \quad k=1,2, \cdots, K-1} \\ \\{P(Y=K | x)=\frac{1}{1+\sum_{k=1}^{K-1} \exp \left(w_{k} \cdot x\right)}}\end{array}
P(Y=k∣x)=1+∑k=1K−1exp(wk⋅x)exp(wk⋅x),k=1,2,⋯,K−1P(Y=K∣x)=1+∑k=1K−1exp(wk⋅x)1
3.Logistic回归模型的python实现
sklearn已经支持Logistic回归模型。具体的代码实现可以参见本人的github项目:
4.总结
最后,讲一下Logistic回归模型的优缺点吧:
- Logistic回归模型具有很强的解释性,模型简单;
- Logistic由于是对数线性函数,因此,模型仅限于线性的场合,对于非线性场合可能拟合效果比较差,不过可以通过对连续型变量进行分箱操作,转化为虚拟变量,这样可以进一步提高模型的非线性能力。