Logistic回归(逻辑回归)进行分类的主要思想:根据现有数据对分类边界线建立回归公式,以此进行分类。


知乎上的简述:

该算法可根据已知的一系列因变量估计离散数值(比方说二进制数值 0 或 1 ,是或否,真或假)。简单来说,它通过将数据拟合进一个逻辑函数来预估一个事件出现的概率。因此,它也被叫做逻辑回归。因为它预估的是概率,所以它的输出值大小在 0 和 1 之间(正如所预计的一样)。

让我们再次通过一个简单的例子来理解这个算法。

假设你的朋友让你解开一个谜题。这只会有两个结果:你解开了或是你没有解开。想象你要解答很多道题来找出你所擅长的主题。这个研究的结果就会像是这样:假设题目是一道十年级的三角函数题,你有 70%的可能会解开这道题。然而,若题目是个五年级的历史题,你只有30%的可能性回答正确。这就是逻辑回归能提供给你的信息。

从数学上看,在结果中,几率的对数使用的是预测变量的线性组合模型。


最终得到的结果:X轴作为特征值输入,Y轴获得数据属于 某个类型的概率。

Sigmoid函数: y = 1 / (1 + e -x) ,记为: f(z) = 1 / (1 + e -z)

我们 可以 在 每个 特征 上乘 以 一个 回归 系数, 然后 把 所有 的 结果 值 相加, 将 这个 总和 代入 Sigmoid 函数 中, 进而 得到 一个 范围 在 0~ 1 之间 的 数值。 最后, 结果 大于 0. 5 的 数据 被 归入 1 类, 小于 0. 5 的 即被 归入 0 类。 所以, Logistic 回归 也可以 被 看成 是一 种 概率 估计。



问题的第一次转化

Z =  h(x) =   w0  +  w1x1 +  w2x2 + ......wnxn ,这个函数,又叫假设函数。  (如上图,class1或class2相当于不同的 f(z)值,0或1;而X,Y相当于特征值,X0 或 X1)

上述公式中的W为参数,也称为权重,可以理解为x1和x2对Z的影响度。对这个公式稍作变化就是:

Z =  h(x) = WTX

假如, 求得的 W 是最佳,那么,这些W值,应该符合以下特性:

dZ= j(W) = 1/2 *[ (Z0 - h0)+ (Z1 - h1)+ ....(Zn - hn)2]  = 1/ 2 * ∑i=1 (Zi - hi) , Zn是指 第n个样本,已知类型的真值,hn 用假设函数求出第n个样本的 类型的近似值。

这里的这个损失函数就是著名的最小二乘损失函数

(化简后,就可以得到测量平差中的 V = Bw - l ,矩阵形式的函数方程组了)

问题的第二次转化:http://www.cnblogs.com/NeilZhang/p/8454890.html

为求得最优的W值,使损失函数 f(W)取最小值。

解决思路一: 一般来说,只要判断j''(W)< 0,那么 j'(W) = 0 时,j(W)具有最小值,获得的W矩阵解,就为最佳的W参数组了。 (需要一次将所有数据堆到矩阵中,受限于计算机内存)

解决思路二:使用梯度上升/ 下降方法,来寻找最佳参数。

(在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。)


摘自网络:https://www.cnblogs.com/pinard/p/5970503.html

梯度下降法和最小二乘法相比,梯度下降法需要选择步长,而最小二乘法不需要。梯度下降法是迭代求解,最小二乘法是计算解析解。如果样本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有优势,计算速度很快。但是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的梯度下降法比较有优势。


摘自网络:https://www.cnblogs.com/pinard/p/5970503.html(要点)

    在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。对于在点(x0,y0)的具体梯度向量就是(∂f/∂x0, ∂f/∂y0)T.或者▽f(x0,y0),如果是3个参数的向量梯度,就是(∂f/∂x, ∂f/∂y,∂f/∂z)T,以此类推。

    那么这个梯度向量求出来有什么意义呢?他的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x0,y0),沿着梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。

  首先来看看梯度下降的一个直观的解释。比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。

梯度下降算法大概的思路是:我们首先随便给W一个初始化的值,然后改变W值让j(W)的取值变小,不断重复改变W使j(W)变小的过程直至j(W)约等于最小值。

首先我们给W一个初始值,然后向着让j(W)变化最大的方向更新W的取值,如此迭代。公式如下:

W = W - a *  ∂j(W) / ∂W (对f(W)进行求W偏导,复合函数求导)

化简,第j次迭代:

W = W - a * (Zi-h(Xi)) * Xi

展开式:

[w0,w1,w2....]T =  [w0,w1,w2....]T  - a * (Zi -  [w0,w1,w2....]T * [xi0,xi1,..........]) *[xi0,xi1,..........]T  i为第i个样本, a为步长;

如果数据不止一个,那么:

[w0,w1,w2....]T =  [w0,w1,w2....]T  -   a * ∑n i=1  (      (Zi -  [w0,w1,w2....])T * [xi0,xi1,..........])   *  [xi0,xi1,..........]T      )


注意: 为了让矩阵计算顺利,让Xm= 1

使用批量梯度上升算法求W,在样本不多的情况下

for j  in R

   W = W + a  *XT (Z-H)

W(1*n) = [w0,w1,w2....wn]T

X(m*n) = [ x00, x01.....x0n

      x10, x11.....x0n

        xm0, x11.....xmn]

Z(m*1) =  [Z0,Z1,Z2,... Zm]T

H(m*1) =   W T X


使用随机梯度上升求W,在样本 很多的情况下:

for i  in  样本:

  W = W + a  *XT (Z-H)

W(1*n) = [w0,w1,w2....wn]T

X(1*n)  = [ xi0, xi1.....xin]

Z = Zi

H = WX

*不必一次将所有学习数据堆到一个矩阵中,不受内存限制。


摘自知乎:
因为刚刚看到《机器学习实战》的这一章节,一开始研究书中的梯度上升算法代码使确实懵逼了一下,不过自己推导了一番,作者确实采用的梯度上升算法,只不过是稍微绕了一点。下面我就写一下推导的过程,为简单起见,将一些符号进行简化,设样本的类别标签为,回归系数为,样本矩阵为,误差为,步长为。那么我们的目标是
最小化误差(因为是列向量)
反过来就是最大化,为消去因子,此处最大化   (关键是这里,将下降转化为上升)

拆开来就是:
到这就可以用梯度上升算法了,对求导可以得出
(矩阵求导可以参考周志华的《机器学习》,网上也有很多教程)
因此更新回归系数的公式就是:
这就是书中章节的梯度上升算法的一个推导过程。我感觉在从这里面可以看出梯度上升算法和梯度下降算法分别是用来求最大值和最小值,也许仅仅使一个负号的差别。
 

学习笔记69_Logistic回归的更多相关文章

  1. TensorFlow 深度学习笔记 逻辑回归 实践篇

    Practical Aspects of Learning 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎star,有 ...

  2. 莫烦PyTorch学习笔记(四)——回归

    下面的代码说明个整个神经网络模拟回归的过程,代码含有详细注释,直接贴下来了 import torch from torch.autograd import Variable import torch. ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归

    机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归 关键字:Logistic回归.python.源码解析.测试作者:米仓山下时间:2018- ...

  4. UFLDL深度学习笔记 (二)SoftMax 回归(矩阵化推导)

    UFLDL深度学习笔记 (二)Softmax 回归 本文为学习"UFLDL Softmax回归"的笔记与代码实现,文中略过了对代价函数求偏导的过程,本篇笔记主要补充求偏导步骤的详细 ...

  5. ufldl学习笔记与编程作业:Logistic Regression(逻辑回归)

    ufldl学习笔记与编程作业:Logistic Regression(逻辑回归) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听 ...

  6. [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法

    前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...

  7. Deep Learning(深度学习)学习笔记整理系列之(四)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  8. Deep Learning(深度学习)学习笔记整理系列之(三)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  9. ufldl学习笔记和编程作业:Softmax Regression(softmax回报)

    ufldl学习笔记与编程作业:Softmax Regression(softmax回归) ufldl出了新教程.感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量 ...

随机推荐

  1. 详解http报文(2)-web容器是如何解析http报文的

    摘要 在详解http报文一文中,详细介绍了http报文的文本结构.那么作为服务端,web容器是如何解析http报文的呢?本文以jetty和undertow容器为例,来解析web容器是如何处理http报 ...

  2. Nebula Graph 技术总监陈恒:图数据库怎么和深度学习框架进行结合?

    引子 Nebula Graph 的技术总监在 09.24 - 09.30 期间同开源中国·高手问答的小伙伴们以「图数据库的设计和实践」为切入点展开讨论,包括:「图数据库的存储设计」.「图数据库的计算设 ...

  3. Linux Shell 基础知识(二)

    1.本文知识结构 2.文件的查询与检索 2.1. cd 目录切换 找到文件/目录位置:cd 切换到上一个工作目录: cd - 切换到home目录: cd or cd ~ 显示当前路径: pwd 更改当 ...

  4. MySQL 数据库删除表中重复数据

    采集数据的时候,由于先期对页面结构的分析不完善,导致采漏了一部分数据.完善代码之后重新运行 Scrapy,又采集了一些重复的数据,搜了下删除重复数据的方法. N.B. 删除数据表的重复数据时,请先备份 ...

  5. FFmpeg(五) 重采样相关函数理解

    一.重采样流程 重采样(解码音频数据之后格式不可以直接播放,需要重采样,类似图像的像素转换) 1.分配上下文 2.设置参数(分为(前几个是)输出格式和(后几个)输入格式,两个相对应的) 可以通过改变样 ...

  6. zend studio 13.6 导入项目及其他设置

    1. 先创建一个新的项目:file -> new -> project 2. 创建新项目之后,在左侧的项目目录上右键 -> import 到此导入项目, 完成! 设置编码utf-8 ...

  7. Spring Cloud之Zuul

    API网关是一个更为智能的应用服务器,它的存在就像是整个微服务架构系统的门面一样,所有的外部客户端访问都需要经过它来进行调度和过滤.它除了要实现请求路由.负载均衡.校验过滤等功能之外,还需要更多能力, ...

  8. sudo 提示 'xxx is not in the sudoers file.This incident will be reported.的解决方法'

    在使用 Linux 的过程中,有时候需要临时获取 root 权限来执行命令时,一般通过在命令前添加 sudo 来解决. 但是第一次使用 sudo 时,有可能会得到这样一个错误提示 xxx is not ...

  9. MySQL学习(二)索引原理及其背后的数据结构

    首先区分几个概念: 聚集索引 主索引和辅助索引(即二级索引) innodb中每个表都有一个聚簇索引(clustered index ),除此之外的表上的每个非聚簇索引都是二级索引,又叫辅助索引(sec ...

  10. cocos2d-x 3.2锚点,Point,addchild,getcontensize

    一,锚点 打个比方.在墙挂一幅画时,要钉一个钉子,那个钉子就是锚点. 然后挂图时,钉子(锚点)放在要订的位置(position),订下去.完成(贴图结束). 贴图的基本点,锚点默认为(0.5,0.5) ...