logistics回归理解
多元回归方程:假设有一个因变量y和一组自变量x1, x2, x3, ... , xn,其中y为连续变量,我们可以拟合一个线性方程:
y =β0 +β1*x1 +β2*x2 +β3*x3 +...+βn*xn
如果y为二分类变量,只能取值0或1,那么线性回归方程就会遇到困难: 方程右侧是一个连续的值,取值为负无穷到正无穷,而左侧只能取值[0,1],无法对应。为了继续使用线性回归的思想,统计学家想到了一个变换方法,就是将方程右边的取值变换为[0,1]。最后选中了Logistic函数:逻辑回归,可以说是在线性回归的基础上加上一个sigmoid函数,将线性回归产生的值归一化到[0-1]区间内。sigmoid函数如下:
y = 1 / (1+e-x)
这是一个S型函数,值域为(0,1),能将任何数值映射到(0,1),且具有无限阶可导等优良数学性质。
我们将线性回归方程改写为:
y = 1 / (1+e-z),
其中,z =β0 +β1*x1 +β2*x2 +β3*x3 +...+βn*xn
此时方程两边的取值都在0和1之间。
进一步数学变换,也就是可以写为:
Ln(y/(1-y)) =β0 +β1*x1 +β2*x2 +β3*x3 +...+βn*xn
Ln(y/(1-y))称为Logit变换。我们再将y视为y取值为1的概率p(y=1),因此,1-y就是y取值为0的概率p(y=0),所以上式改写为:
p(y=1) = ez/(1+ez),
p(y=0) = 1/(1+ez),
其中,z =β0 +β1*x1 +β2*x2 +β3*x3 +...+βn*xn.
(你看吼,你需要估计某件事发生的概率,这时候你有大量的训练样本,所以你想用一个多元回归来估计这个事儿,但是你多元回归所算出来的值特别多,而你的概率只处于0和1之间,这时候吧你就需要logistics了,)
接下来就可以使用”最大似然法”估计出各个系数β。
本文基本借鉴:http://blog.sina.com.cn/s/blog_44befaf60102vznn.html
这个出自:http://blog.csdn.net/YoYoDelphine/article/details/52888276
(你看吼,你所估计的跟真实值肯定有出入吧,这时候就需要找最优化的各个系数β吧,那你怎么找呢,就需要一个代价函数,代价函数分很多,求参有多种方法。比如最小二乘,比如最大然,比如交叉熵,这里用极大然是为了使这件事发生的概率最大化,也就是已知x,求β)
所谓参数估计就是:对未知参数θ进行估计时,在参数可能的取值范围内选取,使“样本获得此观测值x1,x2...,xn”的概率最大的参数θ^作为θ的估计,这样选定的θ^有利于x1,x2...,xn”的出现。也就是说在已知数据集(结果)和模型(分布函数)的情况下,估计出最适合该模型的参数。
举个例子:
假设你有一枚硬币,随机抛10次;现在的结果是6次正面。我们都知道,抛一枚硬币,正面朝上和反面朝上的概率均是θ=0.5;但前提时,这是在大量的实验(抛硬币)情况下才有的结论。那在我们这个情况下,参数θ到底取何值时才能使得出现6次正面的肯能性最大呢?
详情参见:http://blog.csdn.net/The_lastest/article/details/78761577
也就是n个独立的样本出现的似然函数为(因为每个样本都是独立的,所以n个样本出现的概率就是他们各自出现的概率相乘):
那最大似然法就是求模型中使得似然函数最大的系数取值θ*。这个最大似然就是我们的代价函数(cost function)了。
(截自李航《统计学习方法》)
(你看吼,这时候带代价函数,这里的代价函数就是这个事儿所有属性发生的概率*不发生的概率,就需要求β,然后需要用到梯度下降法对于每次的β迭代,也就是求导,对于极大似然函数求导,导数的方向也就是最好的下降方向 ,然后我们令该导数为0,你会很失望的发现,它无法解析求解。不信你就去尝试一下。所以没办法了,只能借助高大上的迭代来搞定了。这里选用了经典的梯度下降算法。
)
(θ求完导之后发现是θ=θ1+步长*(错误率)*本来的xi,下面就是优化了,在样本容量非常大的时候,你要随机选则,节省时间,然后就是逐步减小步长,这个在牛顿法中可以理解,迭代次数越高,越合适)
代码参考:http://blog.csdn.net/zouxy09/article/details/20319673
本文仅作作者笔记,没有任何冒犯的意思。。。
logistics回归理解的更多相关文章
- logistics回归简单应用——梯度下降,梯度上升,牛顿算法(一)
警告:本文为小白入门学习笔记 由于之前写过详细的过程,所以接下来就简单描述,主要写实现中遇到的问题. 数据集是关于80人两门成绩来区分能否入学: 数据集: http://openclassroom.s ...
- logistics回归简单应用(二)
警告:本文为小白入门学习笔记 网上下载的数据集链接:https://pan.baidu.com/s/1NwSXJOCzgihPFZfw3NfnfA 密码: jmwz 不知道这个数据集干什么用的,根据直 ...
- 机器学习算法的Python实现 (1):logistics回归 与 线性判别分析(LDA)
先收藏............ 本文为笔者在学习周志华老师的机器学习教材后,写的课后习题的的编程题.之前放在答案的博文中,现在重新进行整理,将需要实现代码的部分单独拿出来,慢慢积累.希望能写一个机器学 ...
- 机器学习实战-Logistics回归
Logistics回归:实战,有两个特征X0,X1.100个样本,进行Logistics回归 1.导入数据 def load_data_set(): """ 加载数据集 ...
- Popular generalized linear models|GLMM| Zero-truncated Models|Zero-Inflated Models|matched case–control studies|多重logistics回归|ordered logistics regression
============================================================== Popular generalized linear models 将不同 ...
- logistics回归
logistic回归的基本思想 logistic回归是一种分类方法,用于两分类问题.其基本思想为: a. 寻找合适的假设函数,即分类函数,用以预测输入数据的判断结果: b. 构造代价函数,即损失函数, ...
- Deeplearning——Logistics回归
资料来源:1.博客:http://binweber.top/2017/09/12/deep_learning_1/#more——转载,修改更新 2.文章:https://www.qcloud.com/ ...
- 机器学习-对数logistics回归
今天 学习了对数几率回归,学的不是很明白x1*theat1+x2*theat2...=y 对于最终的求解参数编程还是不太会,但是也大致搞明白了,对数几率回归是由于线性回归函数的结果并不是我们想要的,我 ...
- 多分类Logistics回归公式的梯度上升推导&极大似然证明sigmoid函数的由来
https://blog.csdn.net/zhy8623080/article/details/73188671 也即softmax公式
随机推荐
- mybatis缓存的设计
继续用提问的方式来看Mybatis的缓存设计. 1.Mybatis如何开启缓存 Mybatis对查询结果进行缓存,所以缓存的对象为具体的Statement 通过在Statement上是否使用缓存来启用 ...
- JS基础——原型和原型链
1.相关知识点 (1)构造函数 (函数名首字母大写表示构造函数) function Foo(name,age){ this.name = name; this.age = age; this.cla ...
- Linux文件系统备份
1.添加一块硬盘——创建分区 fdisk /dev/sdb n 创建新分区 p 打印分区 w 保存 ——分区格式化 mkfs.xfs /dev/sd ...
- when to use reinterpret_cast
写的太好了.. When you convert for example int(12) to unsigned float (12.0f) your processor needs to invok ...
- Oracle参数Arraysize设置对于逻辑读的影响分析
说明: 当执行一条SQL查询的时候,为了获得满足的数据,查询在这个过程中完成解析,绑定,执行和提取数据等一系列步骤,这些步骤都是单独执行的,满足条件的数据行必须由数据库返回给应用:对于任何大小的结果集 ...
- python threading 用法
python 多线程传参有点奇怪记录一下 import thread sql1 = 'select 1' sql2 = 'select 2' def run(sql): print sql # 说明 ...
- 8. springboot logback 日志整合
在resources目录下,新建log/logback-spring.xml文件,内容如下: <?xml version="1.0" encoding="UTF-8 ...
- JAX-RS和 Spring 整合开发
JAX-RS 和 和 Spring 整合开发 1.建立maven项目 2.导入maven坐标 <dependencies> <!-- cxf 进行rs开发 必须导入 --> & ...
- Java 8 Nashorn JavaScript
转自:https://www.runoob.com/java/java8-nashorn-javascript.html Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Na ...
- 项目管理第一篇(PROJECT MANAGEMENT A Systems Approach to Planning, Scheduling, and Controlling)
请把梦想和野心带上,这是我哥对我说的. 几年下来,人浑浑噩噩,梦想和野心像锋利的石头在水中慢慢被磨平,今天就再次记住,不要让焦虑和失望伴随着人生和家庭. 这是H A R O L D K E R Z N ...