logistic regression(二项 logistic 与 多项logistic )

来源:互联网 发布:泼墨字体生成软件 编辑:程序博客网 时间:2024/06/07 14:14

逻辑斯蒂回归

  1. 基本思想
  2. 数学推导
  3. 基于R的案例
  4. 结论

基本思想

这一讲给大家介绍一下,广义线性回归模型当中的一个最为典型的模型,逻辑斯底回归(logistic regression)。估计大家都见过。我们最长用到的是二值逻辑斯底回归,多项逻辑斯底书里边介绍的少。今天我们重点说一下,二项逻辑斯底回归和多项逻辑斯底回归。我们先简单聊聊传统的线性回归,我们说线性回归就是y=k0+k1x,这个时候呢,因变量y有要求,最起码得是连续的变量。如果y是离散的比如它只能取0,1两个变量,那么此时传统回归就不行了。大家想想,如果在y=k0+k1x当中,左边是离散的变量,范围只有(0,1),而右边呢,是连续的而且右边整体的变化范围是+,.要想让等式在这种情况下成立,必须做个变化,要么就是把左边变成(+,)。要么就是把右边变成(0,1),最好是用个连续的函数作为变换函数,如果太复杂的变化也不好。不利于后面的计算。如果大家稍微思考一下,就发现直接变化不行,为啥呢,比如我们想把右边变成0,1两个值不行,但是可以将其变成(0,1)内的数。比如任何一个数,经过exex+1变换就小了很多了。所以,我们先把左边给改造一下,但是改造还必须得有含义。不能说改造完了之后意义变了。这里我们想到了二项分布,二项分布是把0,1两个值与概率p,1p对应起来。如果我们构造一个p1p,那么它的变化范围是(0,+),这样构造有意义吗,很有意义,这个比例越大说明1这种情况越容易发生,0这种情况不容易发生,满足了越大越代表一种情况。越小又代表另一种情况。这样呢,我们先把左边变成了(0,+).而右边呢,是(+,)。再经过一次变换就好了。哪个函数可以做到呢。对数函数log可以。这样的话,我们就得到下式:

log(p1p)(+,)
.于是我们建立下面的回归方程。
log(p1p)=k0+k1x

这就是逻辑斯蒂回归方程了。这样呢,每个个体实际上现在与一个概率p对应起来了。通过简单变换,我们可以看到,pi=ek0+k1xiek0+k1xi+1,这样的话,就可以按极大似然的方式进行计算参数k0,k1了。当然具体计算过程还是比较复杂的。这个是从统计的角度来看待logistic regression回归的。还可以从机器学习的角度来看待,用随机梯度下降进行求解。后面我们在介绍。
一旦方程建立了,回归系数也已经求出,那么我们需要了解回归系数的意义。在传统回归当中,回归系数比较容易理解,比如一单位x的变化可以带来多少y的变化。而在logistic 回归当中代表的是一单位x的变化,带来ep1p的变化,这个变化还是表示1发生的概率相对增加了多少。因此,通俗地说,就是k大于0时,有利于发生,k小于0时,不利于发生。
系数的解释是一个方面,另一个方面就是拟合优度(goodness of fit),我们传统回归是根据R2或者是调整R2进行判断,但是呢。在logistic 回归当中无法计算。因此又提出个新的指标,地位和R2一样的,叫deviance。deviance越小,越好,后面我们专门会个大家介绍一下。

基于R的logistic regression

下面给大家带来一个小小的案例

#广义线性回归模型#logistic 回归#清楚空间变量rm(list = ls())#读取数据pass.df <- read.csv("D:/Rdata/data/rintro-chapter9.csv")#查看前五行head(pass.df)  Channel  Promo    Pass1    Mail Bundle YesPass2    Mail Bundle YesPass3    Mail Bundle YesPass4    Mail Bundle YesPass5    Mail Bundle YesPass6    Mail Bundle YesPass#查看数据类型str(pass.df)'data.frame':   3156 obs. of  3 variables: $ Channel: Factor w/ 3 levels "Email","Mail",..: 2 2 2 2 2 2 2 2 2 2 ... $ Promo  : Factor w/ 2 levels "Bundle","NoBundle": 1 1 1 1 1 1 1 1 1 1 ... $ Pass   : Factor w/ 2 levels "NoPass","YesPass": 2 2 2 2 2 2 2 2 2 2 ...#进行回归pass.m1 <- glm(Pass ~Promo, data=pass.df, family=binomial)#查看结果summary(pass.m1)Call:glm(formula = Pass ~ Promo, family = binomial, data = pass.df)Deviance Residuals:    Min      1Q  Median      3Q     Max  -1.262  -1.097   1.095   1.095   1.260  Coefficients:              Estimate Std. Error z value Pr(>|z|)    (Intercept)    0.19657    0.04912   4.002 6.28e-05 ***PromoNoBundle -0.38879    0.07167  -5.425 5.81e-08 ***---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)    Null deviance: 4375.0  on 3155  degrees of freedomResidual deviance: 4345.4  on 3154  degrees of freedomAIC: 4349.4Number of Fisher Scoring iterations: 3

结论

这一节我们讲了logistic regression,主要是从转换的角度讲的,首先是通过构造比例,也就是p1p,在此基础上进行回归分析。

原创粉丝点击