参考:

  1. http://blog.sina.com.cn/s/blog_7147f6870102vxwj.html
  2. http://chen.yi.bo.blog.163.com/blog/static/150621109201010301321654/
  3. http://beader.me/2014/05/03/logistic-regression/

logistic 回归分析

基本上用到 logistic 回归的,很多是二分类问题,也就是因变量 0-1 类型的情况但是我们为什么不用线性回归呢?这是因为因变量形式比较特殊,所以造成了处理方式必然有所不同,我们无法写出像

y=w0+w1x1+w2x2+⋯+wnxny=w0+w1x1+w2x2+⋯+wnxn

y=w_0+w_1x_1+w_2x_2+\cdots +w_nx_n

这种容易理解的公式。一个较好的方式是把因变量抽象成它的期望值。

这应该是广义线性回归的核心内容之一

在 0-1 变量的情形下,这个期望值就等于因变量取 1 的概率,一般写作 PPP 。这个 P" role="presentation">PPP 就可以描述当自变量发生变化时,我们的目标变量取 1 的概率是怎样变化的。它的输出是 y=+1y=+1y=+1的概率,因此 Logistic 回归的目标函数是

f(x)=P(+1|x)∈[0,1]f(x)=P(+1|x)∈[0,1]

f(x)=P(+1|x) \in [0,1]

模型概述

广义上的线性回归是探索“响应变量(因变量)的期望”与“自变量”的关系,以实现对非线性关系的某种拟合。这里面涉及到一个“连接函数”和一个“误差函数”。下面先介绍这两个函数:

连接函数

延续上述的思想,我们是不是可以写成

P=w0+w1x1+w2x2+⋯+wnxnP=w0+w1x1+w2x2+⋯+wnxn

P=w_0+w_1x_1+w_2x_2+\cdots +w_nx_n

了呢?这是合理且自然的,但是却导致了三个问题:

  • 参数估计
  • PPP 的取值范围
  • 非正态的误差 ϵ" role="presentation">ϵϵ\epsilon

由于这里的 PPP 是我们抽象出来的一个变量,我们没办法从观测数据中得到这个值,所以也就没办法用我们熟悉的最小二乘法 。而等式右边的范围显然是 [−∞,+∞]" role="presentation">[−∞,+∞][−∞,+∞][-\infty,+\infty] ,与概率定义矛盾。同时非正态的误差与线性回归的定义矛盾。

连接函数便是用来完成这个调整的。logistic 回归采用的是 logit()logit()logit() 函数,即进行以下变换

logit(P)=log(P1−P)=w0+w1x1+w2x2+⋯+wnxn(1)(1)logit(P)=log(P1−P)=w0+w1x1+w2x2+⋯+wnxn

logit(P)=log(\frac{P}{1-P})=w_0+w_1x_1+w_2x_2+\cdots +w_nx_n \tag{1}

下图从左到右分别是经过变换之后的分布函数以及其概率密度。

可以看得出来,概率 PPP 与自变量仍然存在或多或少的线性关系,主要是在头尾两端被连接函数扭曲了,从而实现了 [0,1]" role="presentation">[0,1][0,1][0,1] 限制。

误差函数

由 (1)式可得

P(x)=11+exp(−wTx)P(x)=11+exp(−wTx)

P(x)=\frac{1}{1+exp(-w^Tx)}

那么我们能否使用平方误差(最小二乘法)呢?

err(p,xn,yn)=yn(1−p(x))2+(1−yn)p2(x)err(p,xn,yn)=yn(1−p(x))2+(1−yn)p2(x)

err(p,x_n,y_n)=y_n(1-p(x))^2+(1-y_n)p^2(x)

问题在于此时的损失函数(cost function)

E(w)=∑errE(w)=∑err

E(w)=\sum err

是一个关于 www (需要估计的参数)的非凸函数,很难去最优化。故而逻辑回归不采用最小二乘法,而用的是极大似然法来估计模型参数。

极大似然性

补充其似然性

最终损失函数为

E(w)=1N∑nNln(1+exp(−ynwTxn))" role="presentation">E(w)=1N∑nNln(1+exp(−ynwTxn))E(w)=1N∑nNln(1+exp(−ynwTxn))

E(w)=\frac{1}{N}\sum_{n}^Nln(1+exp(-y_nw^Tx_n))

求和号右边的称为交叉熵损失函数(cross-entropy error),上述优化为一个凸优化。

模型结果的评价

“响应变量的期望”经过连接函数作用后,与“自变量”存在线性关系。选取不同的“连接函数”与“误差函数”可以构造不同的广义回归模型。当连接函数取“logit函数”时,就是常见的“logistic回归模型”,在0-1响应的问题中得到了大量的应用。

可以看出,logistic 回归是对 0-1 响应变量的期望logit 变换,然后与自变量做线性回归。参数估计采用极大似然估计,显著性检验采用似然比检验。

建立模型并根据 AIC 准则(最小信息准则)选择模型后,可以对未知数据集进行预测,从而实现分类。模型预测的结果是得到每一个样本的响应变量取 1 的概率,为了得到分类结果,需要设定一个阈值 p0p0p_0——当 p>p0p>p0p>p_0 时,认为该样本的响应变量为 1,否则为 0。阈值大小对模型的预测效果有较大影响,需要进一步考虑,首先扁必须明确模型预测效果的评价指标

对于 0-1 变量的二分类问题,分类的最终结果可以用表格表示为:

预测值 预测值
000
实际值 0" role="presentation">000 aaa
实际值 1" role="presentation">111 ccc

其中 d" role="presentation">ddd 表示实际值为1而预测值也为1的样本个数,显然主对角线所占比重越大越好,这也是一个基本的评价指标,即总体准确率

Accuracy=a+da+b+c+dAccuracy=a+da+b+c+d

Accuracy=\frac{a+d}{a+b+c+d}

正例的覆盖率

Truepositiverate=dc+dTruepositiverate=dc+d

True \quad positive \quad rate=\frac{d}{c+d}

通常将上述矩阵称为“分类矩阵” 。一般情况下,我们比较关注响应变量取1的情形,将其称为 Positive(正例),而将响应变量取 0 的情形称为 Negative(负例)。常见的例子包括生物实验的响应、营销推广的响应以及信用评分中的违约等等。针对不同的问题与目的,我们通常采用 ROC 曲线与 lift 曲线作为评价logistic回归模型的指标

ROC 曲线

设置了两个相应的指标:TPR与FPR。

  1. TPR:True Positive Rate(正例覆盖率),将实际的1正确地预测为1的概率

    dc+ddc+d

    \frac{d}{c+d}

  2. FPR:False Positive Rate,将实际的 0 错误地预测为1的概率

    ba+bba+b

    \frac{b}{a+b}

TPR 也称为 Sensitivity(即生物统计学中的敏感度),也可以称为“正例的覆盖率”——将实际为1的样本数找出来的概率。覆盖率是重要的指标,例如若分类的目标是找出潜在的劣质客户(响应变量取值为1),则覆盖率越大表示越多的劣质客户被找出

类似地,1-FPR其实就是“负例的覆盖率”,也就是把负例正确地识别为负例的概率。TPR与FPR相互影响,而我们希望能够使TPR尽量地大,而FPR尽量地小 。影响TPR与FPR的重要因素就是上文提到的“阈值”。

当阈值为 0 时,所有的样本都被预测为正例,因此TPR=1,而FPR=1。此时的FPR过大,无法实现分类的效果。随着阈值逐渐增大,被预测为正例的样本数逐渐减少,TPR和FPR各自减小,当阈值增大至 1 时,没有样本被预测为正例,此时TPR=0,FPR=0。

ROC 曲线的全称为“接受者操作特性曲线”receiver operating characteristic),其基本形式为:

当预测效果较好时,ROC曲线凸向左上角的顶点

纵坐标为 TPR ,横坐标为 FPR 。向左上角凸意味着有较高的 TPR,与较小的 FPR。故而ROC曲线下的面积可以定量地评价模型的效果,记作AUC,AUC越大则模型效果越好。

lift 曲线

在营销推广活动中,我们的首要目标并不是尽可能多地找出那些潜在客户,而是提高客户的响应率。客户响应率是影响投入产出比的重要因素。此时,我们关注的不再是TPR(覆盖率),而是另一个指标:命中率

回顾前面介绍的分类矩阵,正例的命中率是指预测为正例的样本中的真实正例的比例,即

PV=db+dPV=db+d

PV=\frac{d}{b+d}

不使用模型的情况下,我们用先验概率估计正例的比例,即

k=c+da+b+c+dk=c+da+b+c+d

k=\frac{c+d}{a+b+c+d}

定义提升值

lift=PVklift=PVk

lift=\frac{PV}{k}

lift 揭示了 logistic 模型的效果。例如,若经验告诉我们10000个消费者中有1000个是我们的潜在客户,则我们向这10000个消费者发放传单的效率是10%(即客户的响应率是10%),k=(c+d)/(a+b+c+d)=10%。通过对这10000个消费者进行研究,建立logistic回归模型进行分类,我们得到有可能比较积极的1000个消费者,b+d=1000。如果此时这1000个消费者中有300个是我们的潜在客户,d=300,则命中率PV为30%。此时,我们的提升值lift=30%/10%=3,客户的响应率提升至原先的三倍,提高了投入产出比。

简而言之就是lift 是训练出来的模型对原样本分类后估计出的响应率提升程度

为了画 lift 图,需要定义一个新的概念depth深度,这是预测为正例的比例

depth=b+da+b+c+ddepth=b+da+b+c+d

depth=\frac{b+d}{a+b+c+d}

与ROC曲线中的TPR和FPR相同,lift和depth也都受到阈值的影响

当阈值为0时,所有的样本都被预测为正例,因此depth=1,而PV=d/(b+d)=(0+d)/(0+b+0+d)=k,于是lift=1,模型未起提升作用。随着阈值逐渐增大,被预测为正例的样本数逐渐减少,depth减小,而较少的预测正例样本中的真实正例比例逐渐增大。当阈值增大至1时,没有样本被预测为正例,此时depth=0,而lift=0/0。

由此可见,lift与depth存在相反方向变化的关系。在此基础上作出lift图:

与ROC曲线不同,lift曲线凸向(0,1)点。我们希望在尽量大的depth下得到尽量大的lift(当然要大于1),也就是说这条曲线的右半部分应该尽量陡峭。

这两种曲线适用于不同情形:

  • 如果是类似信用评分的问题,希望能够尽可能完全地识别出那些有违约风险的客户(不使一人漏网),我们需要考虑尽量增大TPR(覆盖率),同时减小FPR(减少误杀),因此选择ROC曲线及相应的AUC作为指标
  • 如果是做类似数据库精确营销的项目,希望能够通过对全体消费者的分类而得到具有较高响应率的客户群,从而提高投入产出比,我们需要考虑尽量提高lift(提升度),同时depth不能太小(如果只给一个消费者发放传单,虽然响应率较大,却无法得到足够多的响应),因此选择lift曲线作为指标

R 语言相关应用包

  1. 普通二分类 logistic 回归:用系统的 glm
  2. 因变量多分类 logistic 回归
    • 有序分类因变量:用 MASS 包里的 polrb
    • 无序分类因变量:用 nnet 包里的 multinom
  3. 条件 logistic 回归:用 survival 包里的 clogit

logistic 回归分析相关推荐

  1. 多元有序logistic回归分析_一文详述:观察性研究中的logistic回归分析思路

    本文内容来自<中华流行病学杂志>2019年第40卷第8期,作者为冯国双教授,原题目为<观察性研究中的logistic回归分析思路>.将这篇文章分享给医咖会的伙伴们,希望大家能从 ...

  2. spssχ2检验_卡方检验与单因素logistic回归分析结果比较

    在疾病或健康的流行病学研究中,经常需要分析疾病或健康状态与各种影响因素(保护因素或危险因素)的之间的定量关系,由于疾病或健康状态是分类变量,一般采取logistic回归分析. 在做此类数据分析时,对分 ...

  3. logistic回归分析优点_逻辑回归的简单介绍

    一.逻辑回归的概念 逻辑回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域. 二.逻辑回归不是回归 从名字来理解逻辑回归.在逻辑回归中,逻辑( ...

  4. 多元有序logistic回归分析_多元Logistic_回归分析解析.ppt

    医学研究中经常遇到分类型变量 二分类变量: 生存与死亡 有病与无病 有效与无效 感染与未感染 多分类有序变量: 疾病程度(轻度.中度.重度) 治愈效果(治愈.显效.好转.无效) 多分类无序变量: 手术 ...

  5. 用excel做logistic回归分析_怎样用SPSS做二项Logistic回归分析?结果如何解释?

    使用Logistic模型前,需判断是否满足以下七个研究假设:假设1:因变量即结局是二分类变量. 假设2:有至少1个自变量,自变量可以是连续变量,也可以是分类变量. 假设3:每条观测间相互独立.分类变量 ...

  6. 二元logistic模型案例_SPSS二项logistic回归分析案例实践,做个预测模型

    SPSS二项logistic回归分析案例实践,做个预测模型 自己动手实践是学习统计软件工具的捷径之一. 收集到某公司各个商户id,以及他们的注册时长.营业收入.成本数据,以及合作续约的情况,现在我们想 ...

  7. excel计算二元线性回归_快速掌握Logistic回归分析及应用

    影响关系研究是所有研究中最为常见的.我们都知道当Y是定量数据时,线性回归可以用来分析影响关系.如果现在想对某件事情发生的概率进行预估,比如一件衣服的是否有人想购买?这里的Y是"是否愿意购买& ...

  8. 多元有序logistic回归分析_有序Logistic回归实例分析(Ordinal Regression)

    如果研究X对于Y的影响,Y为定量数据则可以使用线性回归分析.如果Y是定类数据,此时则需要使用Logit(logistic)回归分析.Logit回归共分为三种,分别是二元Logit(Logistic)回 ...

  9. R语言进行Logistic回归分析

    Logistic回归分析常常用来分析某个结局的危险因素或保护因素. 输入数据格式 分析代码 library(finalfit) library(rstan) library(boot) library ...

  10. r 多元有序logistic回归_基于R的有序分类资料logistic回归分析

    cosoft@163.com 基于 R 的有序分类资料 logistic 回归分析 韦杰,曾萍 (贵阳中医学院 基础医学院,贵州贵阳,550002) 摘 要: 本文描述有序分类资料的 logistic ...

最新文章

  1. ci框架 mysql_CodeIgniter (CI)框架中的数据库查询汇总
  2. 设计一个带有getmin功能的栈,保证时间复杂度在O(1)
  3. 数据库元数据数据字典查询_9_列出给定表的所有约束
  4. j2ee之原生AJAX
  5. Vue003_class 与style 绑定
  6. code删除前两个_听说用python来批量删除说说也挺快乐的呢~
  7. WPF中如何创建服务
  8. linux运行出现断错误,在linux下代码运行出现段错误,求大神
  9. 小程序入门学习03--navigator组件
  10. linux和windows下,C/C++开发的延时函数,sleep函数
  11. kubernetest pod为ContainerCreating、ImagePullBackOff状态 怎么办
  12. 杭电1863+1879
  13. API接口之webservice接口
  14. C语言学习之:一位数组指针与二维数组指针的定义与使用
  15. HTML页面分享微博、QQ、微信功能
  16. 武汉大学计算机学院周维,2016—2017 学年度武汉大学 优秀学生干部和社会活动积极分.PDF...
  17. H3CNE、H3CSE考试总结
  18. 地图 显示 动态轨迹_腾讯地图SDK全新版本上线,可满足开发者核心诉求
  19. Pr 案例:制作快闪转场效果
  20. Python:实现Julia集算法(附完整源码)

热门文章

  1. 车联网在智慧城市中的发展与应用
  2. 什么是ISO9000质量管理体系认证以及认证流程
  3. 一种用于决策(decision-making)的系统架构
  4. Centos7使用docke搭建openV
  5. IE 11中 onpropertychange失效
  6. ManualResetEvent
  7. mybatis 使用简单的增删查改
  8. html+css+js制作LOL官网,web前端大作业(3个页面+模拟登录+链接)
  9. 计算机键盘快速指南,菜鸟必看 Windows键盘快捷键入门指南
  10. c 语言ifelse语句例子,C if else 语句