1 逻辑回归原理
(1)理论原理
逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的 n n n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。其中每一组数据都是由 p p p个指标构成。
逻辑回归(Logistic regression 或logit regression),即逻辑模型(英语:Logit model,也译作“评定模型”、“分类评定模型”)。常用于做数据的初步判断,(推荐算法,医疗诊断等),是通过线性模型完成分类效果(线性可分)。
- 线性回归:尽可能让样本点和模型线重合
- 逻辑回归:尽可能让样本点远离模型线,模型线的两侧是两个类别,样本距离模型线越远越好
(2)sigmoid 函数
sigmoid
将线性问题转化为概率问题,将结果值压缩到0-1之间(0负,1正)。
z
=
w
x
+
b
f
(
z
)
=
1
1
+
e
−
z
f
(
z
)
′
=
f
(
z
)
(
1
−
f
(
z
)
)
z = wx + b\\ f(z) = \dfrac{1}{1 + e^{-z}}\\ f(z)' = f(z)(1-f(z))
z=wx+bf(z)=1+e−z1f(z)′=f(z)(1−f(z))
sigmoid
函数,代表的是样本为正类别的概率,在阈值0.5范围之间梯度大,会将数据值尽可能的分到0或1的位置
阈值区分 如果
s
i
g
m
o
i
d
sigmoid
sigmoid求出的结果大于0.5,就是正类别,否则就是负类别
2 损失函数
2.1 损失函数推导
极大似然估计:事情已经发生了,当未知参数等于多少时,能让这个事情发生的概率最大,执果索因。如果我们想要让所计算的结果更准确,就可以将每次计算的结果进行相乘,让最后的概率最大即可。
(1)样本为0-1时
某样本属于正例的概率表示为
P
(
y
i
=
1
∣
x
i
)
=
e
x
p
(
w
∙
x
i
)
1
+
e
x
p
(
w
∙
x
i
)
P(y_{i}=1|x_{i})=\dfrac{exp(w\bullet x_{i})}{1+exp(w \bullet x_{i})}
P(yi=1∣xi)=1+exp(w∙xi)exp(w∙xi)
某样本属于负例的概率表示为
P
(
y
i
=
0
∣
x
i
)
=
1
1
+
e
x
p
(
w
∙
x
i
)
P(y_{i}=0|x_{i})=\dfrac{1}{1+exp(w \bullet x_{i})}
P(yi=0∣xi)=1+exp(w∙xi)1
其中,
w
=
(
w
(
1
)
,
w
(
2
)
,
…
,
w
(
n
)
,
b
)
T
,
x
i
=
(
x
i
(
1
)
,
x
i
(
2
)
…
,
x
i
(
n
)
,
1
)
T
w = (w^{(1)},w^{(2)},…, w^{(n)},b)^T , x_i = (x_i^{(1)},x_i^{(2)}…,x_i^{(n)},1)^T
w=(w(1),w(2),…,w(n),b)T,xi=(xi(1),xi(2)…,xi(n),1)T。因此,似然函数为:
∏
i
=
1
N
[
P
(
y
i
=
1
∣
x
i
)
]
y
i
[
P
(
y
=
0
∣
x
i
)
]
1
−
y
i
\prod_{i=1}^{N}[P(y_{i}=1|x_{i})]^{y_{i}}[P(y=0|x_{i})]^{1-y_{i}}
i=1∏N[P(yi=1∣xi)]yi[P(y=0∣xi)]1−yi
求似然函数最大,加负号求最小,得到代价函数为:
C
o
s
t
(
w
)
=
−
1
N
∑
i
=
1
N
[
y
i
log
P
(
y
i
=
1
∣
x
i
)
+
(
1
−
y
i
)
log
P
(
y
i
=
0
∣
x
i
)
]
=
−
1
N
∑
i
N
[
y
i
∗
log
P
(
y
i
=
1
∣
x
i
)
P
(
y
i
=
0
∣
x
i
)
+
log
P
(
y
i
=
0
∣
x
i
)
]
=
−
1
N
∑
i
N
[
y
i
∗
(
w
∙
x
i
)
−
log
(
1
+
exp
(
w
∙
x
i
)
)
]
Cost(w)=-\frac{1}{N}\sum_{i=1}^{N}[y_{i}{\log}P(y_{i}=1|x_{i})+(1-y_{i}){\log}P(y_{i}=0|x_{i})]\\ =-\frac{1}{N}\sum_i^N[y_i*{\log}\frac{P(y_{i}=1|x_{i})}{P(y_{i}=0|x_{i})}+{\log}P(y_{i}=0|x_{i})]\\ =-\frac{1}{N}\sum_i^N[y_i*(w \bullet x_i)-\log(1+\exp(w \bullet x_i))]
Cost(w)=−N1i=1∑N[yilogP(yi=1∣xi)+(1−yi)logP(yi=0∣xi)]=−N1i∑N[yi∗logP(yi=0∣xi)P(yi=1∣xi)+logP(yi=0∣xi)]=−N1i∑N[yi∗(w∙xi)−log(1+exp(w∙xi))]
再用梯度下降法反解
w
w
w
(2)样本为-1 和1时
某样本属于正例的概率表示为
P
(
y
i
=
1
∣
x
i
)
=
e
x
p
(
w
∙
x
i
)
1
+
e
x
p
(
w
∙
x
i
)
P(y_{i}=1|x_{i})=\dfrac{exp(w \bullet x_{i})}{1+exp(w \bullet x_{i})}
P(yi=1∣xi)=1+exp(w∙xi)exp(w∙xi)
某样本属于负例的概率表示为
P
(
y
i
=
−
1
∣
x
i
)
=
1
1
+
e
x
p
(
w
∙
x
i
)
P(y_{i}=-1|x_{i})=\dfrac{1}{1+exp(w \bullet x_{i})}
P(yi=−1∣xi)=1+exp(w∙xi)1
因此,似然函数为:
∏
i
=
1
N
1
1
+
e
x
p
(
−
y
i
w
∙
x
i
)
\prod_{i=1}^{N}\frac{1}{1+exp(-y_{i}w \bullet x_{i})}
i=1∏N1+exp(−yiw∙xi)1
代价函数为:
C
o
s
t
(
w
)
=
−
1
N
∑
i
=
1
N
log
(
1
+
e
x
p
(
−
y
i
w
∙
x
i
)
)
Cost(w)=-\frac{1}{N}\sum_{i=1}^{N}{\log}(1+exp(-y_{i}w \bullet x_{i}))
Cost(w)=−N1i=1∑Nlog(1+exp(−yiw∙xi))
再用梯度下降法反解
w
w
w
似然函数加入L2正则化后目标函数为:
O
b
j
(
w
)
=
1
N
∑
i
=
1
N
log
(
1
+
e
x
p
(
−
y
i
w
∙
x
i
)
)
+
λ
1
2
∣
∣
w
∣
∣
2
2
Obj(w)=\frac{1}{N}\sum_{i=1}^{N}\log(1+exp(-y_{i}w \bullet x_{i}))+\lambda\frac{1}{2}||w||_2^2
Obj(w)=N1i=1∑Nlog(1+exp(−yiw∙xi))+λ21∣∣w∣∣22
目标函数导数为:
O
b
j
w
′
=
1
N
∑
i
=
1
N
{
−
y
i
e
x
p
(
−
y
i
w
∙
x
i
)
1
+
e
x
p
(
−
y
i
w
∙
x
i
)
x
i
}
+
λ
w
Obj_w^{'}=\frac{1}{N}\sum_{i=1}^{N} \lbrace -y_{i}\frac{exp(-y_{i}w \bullet x_{i})}{1+exp(-y_{i}w \bullet x_{i})} x_{i}\rbrace+\lambda{w}
Objw′=N1i=1∑N{−yi1+exp(−yiw∙xi)exp(−yiw∙xi)xi}+λw
= 1 N ∑ i = 1 N { − y i ( 1 − 1 1 + e x p ( − y i w ∙ x i ) ) x i } + λ w =\frac{1}{N}\sum_{i=1}^{N}\lbrace-y_{i}(1-\frac{1}{1+exp(-y_{i}w \bullet x_{i})})x_{i}\rbrace+\lambda{w} =N1i=1∑N{−yi(1−1+exp(−yiw∙xi)1)xi}+λw
更新权重:
w
=
w
−
γ
O
b
j
w
′
w=w-\gamma{Obj_w}'
w=w−γObjw′
2.2 二分类交叉熵
我们也可以使用信息论解释逻辑回归的代价函数,
- 概率就是判断一件事情发生的可能性
- 信息量是得知该消息时的意外程度
信息量 = log 1 P = − log P 信息量=\log{\frac{1}{P}}=-\log{P} 信息量=logP1=−logP
概率越低,信息量越大
-
用于分类问题,概率越低,证明模型计算越不准确
-
熵是用来衡量信息不确定性的单位(概率和信息量乘积)
-
交叉熵
用来检验实际发生概率和预测准确率信息量的乘积
其中, p k p_k pk为样本实际发生概率, q k q_k qk为样本预测准确的概率
p k log ( q k ) p_k\log(q_k) pklog(qk)
在二分的情况下,模型最后需要预测的结果只有两种情况,对于每个类别我们的预测得到的概率为
p
p
p和
1
−
p
1−p
1−p,此时目标函数(交叉熵)表达式为(
log
\log
log底数是
e
e
e):
L
(
w
)
=
1
N
∑
i
N
L
i
=
1
N
∑
i
N
[
y
i
∗
log
(
p
i
)
+
(
1
−
y
i
)
∗
log
(
1
−
p
i
)
]
=
1
N
∑
i
N
[
y
i
∗
log
(
p
i
1
−
p
i
)
+
log
(
1
−
p
i
)
]
=
1
N
∑
i
N
[
y
i
∗
(
w
∙
x
i
)
−
log
(
1
+
exp
(
w
∙
x
i
)
)
]
\begin{aligned} L(w)&=\frac{1}{N}\sum_i^NL_i\\ &=\frac{1}{N}\sum_i^N[y_{i}*\log(p_{i})+(1-y_{i})*\log(1-p_{i})]\\ &=\frac{1}{N}\sum_i^N[y_{i}*\log(\frac{p_{i}}{1-p_{i}})+\log(1-p_{i})]\\ &=\frac{1}{N}\sum_i^N[y_i*(w \bullet x_i)-\log(1+\exp(w \bullet x_i))] \end{aligned}
L(w)=N1i∑NLi=N1i∑N[yi∗log(pi)+(1−yi)∗log(1−pi)]=N1i∑N[yi∗log(1−pipi)+log(1−pi)]=N1i∑N[yi∗(w∙xi)−log(1+exp(w∙xi))]
其中:
- y i y_{i} yi—— 表示样本 i i i的label,正类为1 ,负类为0
- p i p_{i} pi—— 表示样本 i i i预测为正类的概率, p i = P ( y i = 1 ∣ x i ) = e x p ( w ∙ x i ) 1 + e x p ( w ∙ x i ) p_i=P(y_{i}=1|x_{i})=\dfrac{exp(w\bullet x_{i})}{1+exp(w \bullet x_{i})} pi=P(yi=1∣xi)=1+exp(w∙xi)exp(w∙xi)
2.3 sklearn中逻辑回归
逻辑回归调库:
-
sklearn.linear_model.LogisticRegression(solver=‘liblinear’, penalty=‘l2’, C = 1.0)
-
solver可选参数:{‘liblinear’, ‘sag’, ‘saga’,‘newton-cg’, ‘lbfgs‘},
-
默认: ’liblinear’;用于优化问题的算法。
-
对于小数据集来说,“liblinear”是个不错的选择,而“sag”和‘saga’对于大型数据集会更快。
-
对于多分类问题,只有’newton-cg’, ‘sag’, 'saga’和’lbfgs’可以处理多项损失;“liblinear”仅限于“one-versus-rest”分类。
-
-
penalty:指定正则化的参数可选为"l1", “l2” 默认为“l2”. 注意:l1正则化会将部分参数压缩到0,而l2正则化不会让参数取到0只会无线接近
-
C:大于0的浮点数。C越小对损失函数的惩罚越重
-
multi_class : 告知模型要处理的分类问题是二分类还是多分类。默认为“ovr”(二分类)
- “multinational” : 表示处理多分类问题,在solver="liblinear"时不可用
- “auto” : 表示让模型自动判断分类类型
3 多分类(softmax)
接触过二分类问题,使用sigmoid函数很好去解决,如果变成多分类问题,应该如何解决呢?多分类使用softmax方式来进行处理,softmax是logistic回归的一般形式。可以通过softmax进行合理分类,以下分类为 考拉0, 猫1, 狗2 ,鸡3
3.1 算法原理
softmax公式如下:
f
(
z
)
=
e
z
∑
i
=
1
n
e
z
f(z)=\frac{e^z}{\sum_{i=1}^{n}e^z}
f(z)=∑i=1nezez
多分类是二分类的一种拓展形式,二分类采用阈值方式进行分类,多分类采用最大概率进行分类。
多分类处理的原理也是通过线性模型解决分类问题。
3.2 损失函数
单个样本的交叉熵代价函数的公式为:
L
(
p
i
,
y
i
)
=
−
∑
k
=
1
K
y
i
k
log
p
i
k
L({p_{i}},y_{i})=-\sum_{k=1}^{K}y_{ik}\log p_{ik}
L(pi,yi)=−k=1∑Kyiklogpik
多分类交叉熵
多分类交叉熵就是对二分类交叉熵的扩展,在计算公式中和二分类稍微有些许区别,但是还是比较容易理解,具体公式如下所示:
L
=
1
N
∑
i
N
L
i
=
−
1
N
∑
i
N
∑
k
=
1
K
y
i
k
log
p
i
k
L=\frac{1}{N}\sum_i^NL_i=-\frac{1}{N}\sum_i ^N\sum_{k=1}^{K}y_{ik}\log p_{ik}
L=N1i∑NLi=−N1i∑Nk=1∑Kyiklogpik
其中:
- N N N——样本数量
- K K K——类别的数量, Y Y Y的取值集合有 { c 1 , c 2 , . . . , c K } \{c_1,c_2,...,c_K\} {c1,c2,...,cK}
- y i k y_{ik} yik——样本 y i = c k y_i=c_k yi=ck是,取 1 1 1,不等于取 0 0 0
- p i k p_{ik} pik——观测样本 i i i属于类别 k k k的预测概率,通过 s o f t m a x softmax softmax计算得到, p i k = P ( y i = c k ∣ x i ) = exp ( w k ∙ x i ) ∑ k = 1 K exp ( w k ∙ x i ) p_{ik}= P(y_i=c_k|x_i)=\frac{\exp{(w_k \bullet x_i)}}{\sum_{k=1}^K\exp{(w_k \bullet x_i)}} pik=P(yi=ck∣xi)=∑k=1Kexp(wk∙xi)exp(wk∙xi)
4 逻辑回归优缺点
-
优点
- 模型简单,易于解释
- 算法容易并行,适合大数据的求解
-
缺点
- 不能拟合非线性数据
- 采用何种特征组合需要一定的数据敏感性
- 特征多了:提高模型效果,但是计算成本高,需要数据量大,否则会过拟合
- 特征少了:有欠拟合的风险
- 删除无用特征需要进行多重共线性判断(人力成本)