统计学习方法-Logistic(逻辑斯蒂)回归

2024-05-06 23:58

本文主要是介绍统计学习方法-Logistic(逻辑斯蒂)回归,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

reference: http://f.dataguru.cn/thread-128261-1-1.html

                        http://blog.tomtung.com/2011/10/logistic-regression

                       http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html

                      http://chen.yi.bo.blog.163.com/blog/#m=0

 

我们在做线性回归分析时,其实是用y=mx+b直线去拟合我们的样本点,如果样本点和直线拟合很好,我们就可以得出样本点的线性相关性很强,通常用决定系数R2来表示。在寻找拟合直线的方法是最小二乘法,其实质就是找样本点离直线距离的最小平方和。这个我在白话线性回归中已经讲到。前面我都参考KHAN的统计学视频,可惜的是logistic回归里面没有讲了,今天这篇文章主要参考的是《Logistic回归模型:方法与应用》王济川,郭志刚。

为什么要用logistic回归?

我们在线性回归分析时,有时会遇到因变量y不是连续值,而是离散的,很多情况是0-1变量。如分析顾客对于商品行为的导致的结果是买(1)还是不买(0),分析股票的各种数据,因变量也是买(1)、不买(0。这种因变量如果我们还是使用线性回归,得到的直线一定与样本拟合得不好。举个例子,我们考察选民年收入和给某个候选人投票的相关性,如果我用线性回归来做。设回归方程为y=mx+b+e(为了严谨e为方程的干扰值,与x无关,服从正态分布,平均值为0)。显然,y=0,表示未投票;y=1表示投票。一定要记住由于e的存在,yi的值只能是一个统计值,也许每次的yi都不一样(夸张了点)。我们可以得到任意yi期望E(yi|xi)=E(mxi+b+e)= E(mxi+b)+E(e)= E(mxi+b)+0= mxi+b

yi 的值取(01),yi期望E(yi|xi)= P(yi=1|xi),其实就是yi=1的条件概率(比如有5个取值0,1,1,0,1,平均值为0.6,也就是y1的概率为0.6)。因此因变量为二分类的线性规划模型又叫线性概率模型(linear probability model)。如果模型是线性的,很显然,如果xi是一个很大的值(如年收入1亿),那么我们得到的yi很可能大于1,相反如果年收入是一个很小的值(如-100000,yi的值很可能得到一个小于0的值。实际上,这很可能是个分段函数模型,这对于线性回归就不方便计算了。

什么是Logistic回归模型

但是,有一点可以确定,yi=1的概率P(yi=1|xi)xi的应该是一个单调递增关系,用非线性模型来描述也许更加准确。这个单调关系应该是这样,xi增加时P(yi=1|xi)随之增加,到达一定的区域,这种增加时很小的,比如xi=1000000后,xi再继续增加,p的增加就不那么明显了,从统计的角度,P只能无限接近1,不能等于1。这种单调关系用S形状的曲线描述也许很合适(拟合得更好),这就是logitic函数的曲线。我们可以将事件发生的概率写成:

P(yi=1|xi)=1/1+exp(-mx-b)  1

这是一个非线性函数,我们可以将其转化为一个线性函数

事件不发生的概率为P(yi=0|xi)=1-P(yi=1|xi)=1 - 1/1+exp(-mx-b)

事件发生概率和不发生概率之比为

p/(1-p) =exp(mx+b)两边去对数得到

ln(p/(1+p))=mx+b  2

1)(2)都是Logistic回归模型。

我们求解该模型,实际上就是求参数m,b

pi= P(yi=1|xi)是给定xi条件下y=1的概率,同样条件下得到y=0的概率为1-pi,那么,得到一个观测值(Pi=0或者1)概率为Pi=pi^yi*(1-pi)^(1-yi)。取n个观测值(n个不同xi)的分布概率为npi^yi*(1-pi)^(1-yi)相乘,表示为ln(θ)=Π(pi^yi*(1-pi)^(1-yi)),这就是n个观测值的似然分布函数。我们求解模型就是求解该函数最大值的参数估计值(mb)。

 

————————————————————————————————————————————————————

Logistic 回归解决的并不是回归问题,而是分类问题,即目标变量(target variable)的值是离散而非连续的。这时目标变量也可称为标签(label)。如果仍用线性回归硬搞,得到的结果会非常不靠谱。

我们先考虑简单的情况:数据点只有 0 和 1 两个标签(binary classification),即[Math Processing Error] ,且大致上是线性可分的(linearly separable)。如图:

那么现在问题就是要找到一个[Math Processing Error] ,使得直线[Math Processing Error] 1 能够将上面图中的 positive 和 negative 两类数据点“分开”;这样的一条直线称为决策边界(decision boundary)。 ——但具体什么叫“分开”?或者说,如果已知[Math Processing Error] ,对于一个标签未知的数据点[Math Processing Error] ,怎么判断它是 positive 还是 negative?

直观上看,在给定[Math Processing Error][Math Processing Error] 的情况下,[Math Processing Error] 应该满足一个0-1 分布,即

[Math Processing Error]

其中[Math Processing Error] 应该满足:

  1. 首先[Math Processing Error]
  2. [Math Processing Error] ,我们可以认为[Math Processing Error] 的可能性相对更大,即[Math Processing Error] ,且如果数据点离边界越远,即[Math Processing Error] 越大,[Math Processing Error] 也应该越大。
  3. 反之,若[Math Processing Error] ,则

这篇关于统计学习方法-Logistic(逻辑斯蒂)回归的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965747

相关文章

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen