逻辑回归算法
活动地址:CSDN21天学习挑战赛
概念
引例
我们无法做到,根据年龄和是否的冠心病的散点图,得到回归
——因此,我们将年龄这个连续值和是否的冠心病进行转换
——然后,我们就能得到逻辑斯特回归曲线
定义
背景:1838年由比利时学者Verhulst首次提出;1920年美国学者Bearl & Reed在研究果蝇的繁殖中发现和使用该函数,并在人口估计和预测中推广使用
l
o
g
i
s
t
i
c
函数的值域为
[
0
,
1
]
f
(
x
)
=
e
x
1
+
e
x
用
p
i
=
P
(
y
i
=
1
∣
x
i
1
,
x
i
2
,
.
.
.
,
x
i
p
)
logistic函数的值域为[0,1]\ f(x)=frac{e^x}{1+e^x}\ 用 p_i=P(y_i=1|x_{i1},x_{i2},...,x_{ip})
logistic函数的值域为[0,1]f(x)=1+exex用pi=P(yi=1∣xi1,xi2,...,xip)
作为因变量,得到
l
o
g
i
s
t
i
c
回归模型
p
i
=
e
x
p
(
α
+
β
1
x
i
1
+
β
2
x
i
2
+
.
.
.
+
β
p
x
i
p
)
1
+
e
x
p
(
α
+
β
1
x
i
1
+
β
2
x
i
2
+
.
.
.
+
β
p
x
i
p
)
l
n
p
i
1
−
p
i
=
α
+
β
1
x
i
1
+
β
2
x
i
2
+
.
.
.
+
β
p
x
i
p
p
i
就是患病的概率
作为因变量,得到logistic回归模型\ p_i=frac{exp(alpha+beta_1x_{i1}+beta_2x_{i2}+...+beta_px_{ip})}{1+exp(alpha+beta_1x_{i1}+beta_2x_{i2}+...+beta_px_{ip})}\ lnfrac{p_i}{1-p_i}=alpha+beta_1x_{i1}+beta_2x_{i2}+...+beta_px_{ip}\ p_i就是患病的概率
作为因变量,得到logistic回归模型pi=1+exp(α+β1xi1+β2xi2+...+βpxip)exp(α+β1xi1+β2xi2+...+βpxip)ln1−pipi=α+β1xi1+β2xi2+...+βpxippi就是患病的概率
逻辑回归特点:线性分类器
最简单的逻辑回归就是线性分类器,如左图
而如右图的,则是非线性的分类器
——为什么是逻辑回归是线性分类器
∙
逻辑斯特回归函数:
l
n
p
i
1
−
p
i
=
α
+
β
1
x
i
1
+
β
2
x
i
2
+
.
.
.
+
β
p
x
i
p
L
o
g
i
t
(
l
o
g
i
s
t
i
c
p
r
o
b
a
b
i
l
i
t
y
u
n
i
t
)
变换
:
定义:
L
o
g
i
t
(
p
i
)
=
l
n
p
i
1
−
p
i
∙
得到
L
o
g
i
t
(
p
i
)
=
α
+
β
1
x
i
1
+
β
2
x
i
2
+
.
.
.
+
β
p
x
i
p
+
ε
i
L
o
g
i
t
变换的特点:
L
o
g
i
t
(
p
i
)
=
l
n
p
i
1
−
p
i
∈
(
0
,
+
∞
)
[
正类
]
L
o
g
i
t
(
p
i
)
=
l
n
p
i
1
−
p
i
∈
(
−
∞
,
0
)
[
负类
]
bullet 逻辑斯特回归函数:\ lnfrac{p_i}{1-p_i}=alpha+beta_1x_{i1}+beta_2x_{i2}+...+beta_px_{ip}\ Logit(logistic,,probability,,unit)变换:\ 定义:Logit(p_i)=lnfrac{p_i}{1-p_i}\ bullet 得到Logit(p_i)=alpha+beta_1x_{i1}+beta_2x_{i2}+...+beta_px_{ip}+varepsilon_i\ Logit变换的特点:\ Logit(p_i)=lnfrac{p_i}{1-p_i}in (0,+infty)[正类]\ Logit(p_i)=lnfrac{p_i}{1-p_i}in (-infty,0)[负类]\
∙逻辑斯特回归函数:ln1−pipi=α+β1xi1+β2xi2+...+βpxipLogit(logisticprobabilityunit)变换:定义:Logit(pi)=ln1−pipi∙得到Logit(pi)=α+β1xi1+β2xi2+...+βpxip+εiLogit变换的特点:Logit(pi)=ln1−pipi∈(0,+∞)[正类]Logit(pi)=ln1−pipi∈(−∞,0)[负类]
优势比OR
l
n
P
1
−
P
=
β
0
+
β
1
X
1
+
β
2
X
2
+
.
.
.
+
β
m
X
m
=
l
o
g
i
t
P
lnfrac{P}{1-P}=beta_0+beta_1X_1+beta_2X_2+...+beta_mX_m=logitP
ln1−PP=β0+β1X1+β2X2+...+βmXm=logitP
模型参数意义:
-
常数项
β
0
beta_0
β0
表示暴露剂量为0时个体发病与不发病概率之比的自然对数
-
回归系数
β
j
(
j
=
1
,
2
,
.
.
.
,
m
)
beta_j(j=1,2,...,m)
βj(j=1,2,...,m)
表示自变量改变一个单位时logitP的改变量
-
流行病学衡量危险因素作用大小的比数比例指标
-
计算公式为:
O
R
j
=
P
1
/
(
1
−
P
1
)
P
0
/
(
1
−
P
0
)
计算公式为:\ OR_j=frac{P_1/(1-P_1)}{P_0/(1-P_0)}\
计算公式为:ORj=P0/(1−P0)P1/(1−P1)
-
表示自变量变化以后,发病概率的变化情况
-
比如,自变量=0时,发病概率是
P
0
1
−
P
0
frac{P_0}{1-P_0}
1−P0P0
自变量=1时,发病概率是
P
1
1
−
P
1
frac{P_1}{1-P_1}
1−P1P1
因此优势比OR反映的是发病概率的变化情况
-
式中
P
0
P_0
P0和
P
1
P_1
P1分别表示在同一危险因素
X
j
X_j
Xj取值为
c
0
c_0
c0及
c
1
c_1
c1时的发病概率
O
R
j
OR_j
ORj称作多变量调整后的优势比,表示扣除了其他自变量影响后危险因素的作用
即只考虑一个变量,对整个发病的影响
与
l
o
g
i
s
t
i
c
P
的关系:
∙
对比某一危险因素两个不同暴露水平
X
j
=
c
0
与
X
j
=
c
1
的发病情况
假定其他因素的水平相同,则优势比的自然对数为:
l
n
O
R
j
=
l
n
[
P
1
/
(
1
−
P
1
)
P
0
/
(
1
−
P
0
)
]
=
l
o
g
i
t
P
1
−
l
o
g
i
t
P
0
=
(
β
0
+
β
j
c
1
+
∑
t
≠
j
m
β
t
X
t
)
−
(
β
0
+
β
j
c
0
+
∑
t
≠
j
m
β
t
X
t
)
=
β
j
(
c
1
−
c
0
)
与logisticP的关系:\ bullet 对比某一危险因素两个不同暴露水平X_j=c_0与X_j=c_1的发病情况\ 假定其他因素的水平相同,则优势比的自然对数为:\ lnOR_j=ln[frac{P_1/(1-P_1)}{P0/(1-P_0)}]=logitP_1-logitP_0\ =(beta_0+beta_jc_1+sum_{tneq j}^mbeta_tX_t)-(beta_0+beta_jc_0+sum_{tneq j}^mbeta_tX_t)\ =beta_j(c_1-c_0)
与logisticP的关系:∙对比某一危险因素两个不同暴露水平Xj=c0与Xj=c1的发病情况假定其他因素的水平相同,则优势比的自然对数为:lnORj=ln[P0/(1−P0)P1/(1−P1)]=logitP1−logitP0=(β0+βjc1+t=j∑mβtXt)−(β0+βjc0+t=j∑mβtXt)=βj(c1−c0)
-
即得
O
R
j
=
e
x
p
[
β
j
(
c
1
−
c
0
)
]
OR_j=exp[beta_j(c_1-c_0)]
ORj=exp[βj(c1−c0)]
-
若
X
j
=
{
1
暴露
0
非暴露
,
c
1
−
c
0
=
1
若X_j= begin{cases} 1&暴露\ 0&非暴露 end{cases} ,c_1-c_0=1
若Xj={10暴露非暴露,c1−c0=1
则有
O
R
j
=
e
x
p
β
j
β
j
{
=
0
,
O
R
j
=
1
无作用
>
0
,
O
R
j
>
1
危险因子
<
0
,
O
R
j
<
1
保护因子
则有OR_j=expbeta_j\ beta_j begin{cases} =0,OR_j=1&无作用\ >0,OR_j>1&危险因子\ <0,OR_j<1&保护因子\ end{cases}
则有ORj=expβjβj⎩
⎨
⎧=0,ORj=1 >0,ORj>1<0,ORj<1无作用危险因子保护因子
优势比理解
在一个具有17个家庭的样本里,共有3家的收入为¥10000,5家的收入为¥11000,9家的收入为¥12000
在收入¥10000的家庭里,1个主妇不工作,2个主妇工作
在收入¥11000的家庭里,1个主妇不工作,4个主妇工作
在收入¥12000的家庭里,1个主妇不工作,8个主妇工作
收入 | 不工作 | 工作 | 总计 |
---|---|---|---|
10 | 1 | 2 | 3 |
11 | 1 | 4 | 5 |
12 | 1 | 8 | 9 |
总计 | 3 | 14 | 17 |
- 主妇工作状态对收入的影响
收入 | 不工作 | 工作 | 工作概率 |
---|---|---|---|
10 | 1 | 2 | 2/3 |
11 | 1 | 4 | 4/5 |
12 | 1 | 8 | 8/9 |
-
当X分别取10和11时:
O
R
j
=
4
5
/
(
1
−
4
5
)
2
3
/
(
1
−
2
3
)
=
4
/
2
=
2
OR_j=frac{frac{4}{5}/(1-frac{4}{5})}{frac{2}{3}/(1-frac{2}{3})}=4/2=2\
ORj=32/(1−32)54/(1−54)=4/2=2
-
当X分别取11和12时:
O
R
j
=
8
9
/
(
1
−
8
9
)
4
5
/
(
1
−
4
5
)
=
8
/
4
=
2
OR_j=frac{frac{8}{9}/(1-frac{8}{9})}{frac{4}{5}/(1-frac{4}{5})}=8/4=2\
ORj=54/(1−54)98/(1−98)=8/4=2
说明:
- 收入每增加一个单位,主妇工作的Odds增加到原来的2倍
- 说明收入对工作状态有正关系,收入越高,工作概率越高
- 在疾病检测中,说明一个因素越高,使得患病概率越高
逻辑回归正则化
针对同一个分类面,哪一个分类面更好
W在数值上越小越好,这样越能抵抗数据的扰动
——如何找到这个尽可能小的参数,因此引入我们的逻辑回归正则化
正则化表达式:
L
1
=
∑
i
=
0
m
∣
w
i
∣
L
2
=
∑
i
=
0
m
w
i
2
正则化表达式:\ L_1=sum_{i=0}^m|w_i|\ L_2=sum_{i=0}^mw_i^2
正则化表达式:L1=i=0∑m∣wi∣L2=i=0∑mwi2
- 重写误差函数lambda
λ
lambda
E
=
∑
i
=
1
n
(
y
i
−
1
1
+
e
−
(
w
1
x
i
1
+
w
2
x
i
2
+
w
0
)
)
2
+
λ
L
1
E
=
∑
i
=
1
n
(
y
i
−
1
1
+
e
−
(
w
1
x
i
1
+
w
2
x
i
2
+
w
0
)
)
2
+
λ
L
2
E=sum_{i=1}^n(y_i-frac{1}{1+e^{-(w_1x_{i1}+w_2x_{i2}+w_0)}})^2+lambda L_1\ E=sum_{i=1}^n(y_i-frac{1}{1+e^{-(w_1x_{i1}+w_2x_{i2}+w_0)}})^2+lambda L_2\
E=i=1∑n(yi−1+e−(w1xi1+w2xi2+w0)1)2+λL1E=i=1∑n(yi−1+e−(w1xi1+w2xi2+w0)1)2+λL2
- 惩罚项:若学习到大权值使得误差小,但是再加上正则化式子以后使得上面E值表达
- 因此,最小化E值使得求解的权值尽可能的相对较小
一个有趣的结论:
-
L
1
L_1
-
L
2
L_2
适用场景
-
L
1
L_1
L1适合降低维度
-
L
2
L_2
L2也称为岭回归,有很强的概率意义
逻辑回归数值优化
- 各个维度的输入如果在数值上差异很大,比如上表中老虎数量和麻雀数量,那么会引起正确的W在各个维度上数值差异很大
- 找寻W的时候,对各个维度的调整基本上是按照同一个数量级来进行调整的
——回顾到数据预处理学习的Z-score规范化
逻辑回归模型
-
梯度下降法的选择
-
两种梯度:
- SGD
- L-BFGS
L-BFGS为SGD的优化方法,它的训练速度比SGD快
数值归一化 | 正则化 | 梯度下降法 | 分类个数 | 数据选择 | |
---|---|---|---|---|---|
L-BFGS | 需要均值归一化,算法融入方差归一化 | 支持L2正则化 | L-BFGS(收敛快,考虑二阶导数) | 支持多分类 | 加载所有数据都参与训练 |
SGD | 不归一化,需要专门在外面进行归一化 | 支持L1,L2 | SGD | 不支持多分类 | 随机从训练集选取(支持
M i n i B a t c h F r a c t i o n MiniBatchFraction MiniBatchFraction) |
-
logistic回归对噪声数据敏感
-
分类和回归都可用于预测,分类的输出是离散的类别值,而回归的输出是连续数值