文档章节

逻辑回归与softmax回归

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:46
字数 754
阅读 11
收藏 1

深度神经网路已经在语音识别,图像识别等领域取得前所未有的成功。本人在多年之前也曾接触过神经网络。本系列文章主要记录自己对深度神经网络的一些学习心得。


第四篇,谈谈我对逻辑回归和softmax回归的一点理解。网络上对逻辑回归和softmax回归论述也很多,包括各种不同语言的代码,都可以下载到。


1.  逻辑回归源于线性回归模型。

     线性回归问题的自变量是连续变量,而逻辑回归问题的自变量一般是取值为离散的名义变量,例如,男,女。逻辑回归是对因变量和自变量之前发生关系的概率解释。例如,某种疾病的发生与抽烟的关系,这种关系可以解释为抽烟会导致这种疾病发生的概率值。当逻辑回归用于分类的时候,分类器的阈值点就是0.5。


2. 优化算法

    回归问题是统计学里面最基础的问题。在统计学里面,一般采用最大似然和最小二乘法直接导出解析解。具体可以参考任何一般统计学的教材。其解析解里面有一个矩阵的逆。求逆和伪逆运算有一些快速算法可以利用。所以对于数据量小的回归问题,直接用解析解就可以快速的得到模型的参数。而对于数据挖掘,海量数据导致内存的开销巨大,这时候直接求解析解是不现实的。于是,在机器学习相关的教程里面,对于回归问题,描述的都是迭代算法。基于随机梯度下降的迭代算法的好处是,内存开销小。


3. 对开源softmax回归的一点解释

   对深度学习的开源代码中有一段softmax的代码,下载链接如下:

   https://github.com/yusugomori/DeepLearning

   这个开源的代码是实现了深度网络的常见算法,包括c,c++,java,python等不同语言的版本。


  softmax回归中有这样一段代码:

void LogisticRegression_softmax(LogisticRegression *this, double *x) {
  int i;
  double max = 0.0;
  double sum = 0.0;


  for(i=0; i<this->n_out; i++) if(max < x[i]) max = x[i];
  for(i=0; i<this->n_out; i++) {
    x[i] = exp(x[i] - max);
    sum += x[i];
  }

  for(i=0; i<this->n_out; i++) x[i] /= sum;
}


乍一看这段代码,发现它和文献中对softmax模型中参数优化的迭代公式中是不一样!其实,如果没有那个求最大值的过程,直接取指数运算就一样的。而加一个求最大值的好处在于避免数据的绝对值过小,数据绝对值太小可能会导致计算一直停留在零而无法进行。就像对数似然函数,似然函数取对数防止概率过小一样。








本文转载自:http://www.cnblogs.com/celerychen/archive/2013/06/03/3588199.html

共有 人打赏支持
abcijkxyz
粉丝 63
博文 6196
码字总数 1876
作品 0
深圳
项目经理
私信 提问
python机器学习案例系列教程——逻辑回归/逻辑分类器

全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 LR:逻辑分类(Logistic Classification),是一种线性分类模型 理解LR 把每个特征对分类结果的“作用”加起来——这就是线性模型...

luanpeng825485697
01/03
0
0
Python3机器学习实践:Softmax回归【实例:鸢尾花分类】

Softmax回归可看作逻辑回归的扩展,用于解决多分类问题。 鸢尾花数据集是机器学习中比较常用的,数据集包含150条数据,共分为3类:setosa, versicolor, virginica,每类50条数据,每个数据包...

AiFan
07/02
0
0
回归(regression)与分类(classification)的区别

回归与分类的不同 1.回归问题的应用场景 回归问题通常是用来预测一个值,如预测房价、未来的天气情况等等,例如一个产品的实际价格为500元,通过回归分析预测值为499元,我们认为这是一个比较...

断桥残雪断桥残雪
2015/12/14
11.4K
0
回归与分类

分类(regression)和回归(classification)区别 两者在于输出变量的类型 分类和回归均是监督学习问题,区别在于学习函数的预测输出是类别还是值。 回归问题的要求是:给定一个新的模式,根...

Alex142857
2016/11/05
25
0
神经网络常用激活函数对比:sigmoid VS sofmax(附python源码)

首发地址:https://yq.aliyun.com/articles/73661 更多深度文章,请关注:https://yq.aliyun.com/cloud Softmax函数与Sigmoid函数之间的区别 作者介绍: Saimadhu Polamuri:是一名自学成才的...

uncle_ll
2017/07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CDH安装SENTRY

1. 背景 虽然在集群上部署了kerberos认证,但是kerberos只是对用户层面进行认证,凡是认证通过的用户都有全量的访问权限,这很不安全,需要进一步对用户的权限进行控制,Sentry 的作用就是这...

hblt-j
15分钟前
1
0
Ubuntu 18.04 PostgreSQL 11 apt 默认安装某些问题解析

首先默认安装软件(本文以PostgreSQL 11.1为例,其他版本类似)。 sudo apt install postgresql-11 等待软件自动安装并完成配置,启动服务。 服务状态如下: vmware@vmware-virtual-machine:...

白豆腐徐长卿
15分钟前
1
0
一步步动手实现高并发的Reactor模型 —— Kafka底层如何充分利用多线程优势去处理网络I/O与业务分发

一、从《Apeche Kafka源码剖析》上搬来的概念和图 Kafka网络采用的是Reactor模式,是一种基于事件驱动的模式。熟悉Java编程的读者应该了解Java NIO提供了Reactor模式的API。常见的单线程Jav...

Anur
19分钟前
1
0
数字信号处理各种处理及图象

https://wenku.baidu.com/view/b1bb67f1f90f76c661371a75.html?sxts=1544696459935

whoisliang
22分钟前
1
0
rabbitmq学习

使用docker安装rabbit docker run -d --hostname my-rabbit --name rabbit -p 8080:15672 rabbitmq:management--hostname:指定容器主机名称--name:指定容器名称-p:将mq端口号映射到本地...

元谷
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部