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. [Note] Clipboard.js 使用

    clipboard.js是一个用来设置剪切板的库,小巧无依赖,但用法有点诡异,必须依赖一个DOM元素 据作者说,由于浏览器相关安全策略的缘故,无法使用下面这种方式来设置剪切板 clipboard.co ...

  2. 终端-Linux命令之非交互SSH密码验证-Sshpass

    Sshpass是使用SSH所谓的"交互式键盘密码身份验证"以非交互方式执行密码身份验证的工具 通俗来说就是 使用ssh密码登录 是需要在连接时手动输入密码的,没办法明文连接,如下图 ...

  3. Redis面试篇 -- Redis主从复制原理

        Redis一般是用来支撑读高并发的,为了分担读压力,Redis支持主从复制.架构是主从架构,一主多从, 主负责写,并且将数据复制到其它的 slave 节点,从节点负责读. 所有的读请求全部走从 ...

  4. Java自动化测试框架-01 - TestNG之入门篇 - 大佬的鸡肋,菜鸟的盛宴(详细教程)

    TestNG是什么? TestNG按照官方的定义: TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框 ...

  5. ES6——箭头函数与普通函数的区别

    ES6标准新增了一种新的函数:Arrow Function(箭头函数). 为什么叫Arrow Function?因为它的定义用的就是一个箭头: 语法: //1.没有形参的时候 let fun = () ...

  6. The Troublesome Frog

    In Korea, the naughtiness of the cheonggaeguri, a small frog, is legendary. This is a well-deserved ...

  7. Ubuntu 16.04安装snort含问题解决

    源码方式安装 wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz tar xvzf daq-2.0.6.tar.gz cd daq- ...

  8. wampserver 运行橙色,80端口没有被占用,查看错误日志方法

    wampserver运行时橙色,经检查80端口并没有被占用,试了很多种方法都无效,去查看错误日志吧 1.以管理员身份打开CMD 注意这里必须是管理员身份的CMD ,powershell不行的 进入wa ...

  9. Centos7安装及配置DHCP服务

    DHCP服务概述: 名称:DHCP  - Dynamic Host Configuration Protocol  动态主机配置协议. 功能:DHCP(Dynamic Host Configurati ...

  10. 第二章Java内存区域与内存溢出异常

    第二章 Java内存区域与内存溢出异常 一.概述 对与Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每个new操作去写delete/free代码,不容易出现内存泄露和内存溢出问 题, ...