逻辑回归算法


活动地址: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+exexpi=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)ln1pipi=α+β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)[负类]\

逻辑斯特回归函数:ln1pipi=α+β1xi1+β2xi2+...+βpxipLogit(logisticprobabilityunit)变换:定义:Logit(pi)=ln1pipi得到Logit(pi)=α+β1xi1+β2xi2+...+βpxip+εiLogit变换的特点:Logit(pi)=ln1pipi(0,+)[正类]Logit(pi)=ln1pipi(,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

ln1PP=β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/(1P0)P1/(1P1)

  • 表示自变量变化以后,发病概率的变化情况

  • 比如,自变量=0时,发病概率是

    P

    0

    1

    P

    0

    frac{P_0}{1-P_0}

    1P0P0

    自变量=1时,发病概率是

    P

    1

    1

    P

    1

    frac{P_1}{1-P_1}

    1P1P1

    因此优势比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=c0Xj=c1的发病情况假定其他因素的水平相同,则优势比的自然对数为:lnORj=ln[P0/(1P0)P1/(1P1)]=logitP1logitP0=(β0+βjc1+t=jmβtXt)(β0+βjc0+t=jmβtXt)=βj(c1c0)

  • 即得

    O

    R

    j

    =

    e

    x

    p

    [

    β

    j

    (

    c

    1

    c

    0

    )

    ]

    OR_j=exp[beta_j(c_1-c_0)]

    ORj=exp[βj(c1c0)]

  • X

    j

    =

    {

    1

    暴露

    0

    非暴露

    ,

    c

    1

    c

    0

    =

    1

    若X_j= begin{cases} 1&暴露\ 0&非暴露 end{cases} ,c_1-c_0=1

    Xj={10暴露非暴露,c1c0=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/(132)54/(154)=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/(154)98/(198)=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=0mwiL2=i=0mwi2

  • 重写误差函数lambda

    λ

    lambda

    λ是W的权重牺牲正确率来提高推广能力

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=1n(yi1+e(w1xi1+w2xi2+w0)1)2+λL1E=i=1n(yi1+e(w1xi1+w2xi2+w0)1)2+λL2

  • 惩罚项:若学习到大权值使得误差小,但是再加上正则化式子以后使得上面E值表达
  • 因此,最小化E值使得求解的权值尽可能的相对较小

一个有趣的结论:

  • L

    1

    L_1

    L1倾向于使得w要么取1,要么取0——稀疏编码

  • L

    2

    L_2

    L2倾向于使得w整体偏小——岭回归

适用场景

  • L

    1

    L_1

    L1适合降低维度

  • L

    2

    L_2

    L2也称为岭回归,有很强的概率意义

逻辑回归数值优化

在这里插入图片描述

  • 各个维度的输入如果在数值上差异很大,比如上表中老虎数量和麻雀数量,那么会引起正确的W在各个维度上数值差异很大
  • 找寻W的时候,对各个维度的调整基本上是按照同一个数量级来进行调整的

——回顾到数据预处理学习的Z-score规范化

CSDN——Caaaaaan-数据预处理

逻辑回归模型

  • 梯度下降法的选择

  • 两种梯度:

    1. SGD
    2. 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

  1. logistic回归对噪声数据敏感

  2. 分类和回归都可用于预测,分类的输出是离散的类别值,而回归的输出是连续数值

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇

)">
下一篇>>