文档章节

逻辑回归与softmax回归

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:46
字数 754
阅读 10
收藏 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
粉丝 61
博文 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

没有更多内容

加载失败,请刷新页面

加载更多

Java中的移位运算符

国庆给自己放了个小长期二十几天,回来继续更新专栏 上一篇文章我们说了Java里的二进制,知道了计算机是以0和1来处理数据的,在阅读源码的过程中,经常会看到这些符号<< ,>>,>>>,这些符号...

SuShine
29分钟前
2
0
linux版QQ

下载地址在这 http://yun.tzmm.com.cn/index.php/s/XRbfi6aOIjv5gwj Appimage包不用做什么别的处理,安装啥的都不需要。。找到文件所在目录,终端中修改一下文件的权限 chmod 777 QQ-2017112...

悲催的古灵武士
34分钟前
1
0
咕泡-MyBatis 实用篇作业

1. Mapper在spring管理下其实是单例,为什么可以是一个单例? 首先,mapper 内部不包含 成员字段,无状态单例是安全的 另外,一直存在不用每次调用都new 一个新实例 2. MyBatis在Spring集成下...

职业搬砖20年
38分钟前
2
0
MQTT协议的初浅认识之连接建立

MQTT百科 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布...

亚林瓜子
54分钟前
1
0
OpenStack部署都有哪些方式

对于每一个刚接触到OpenStack的新人而言,安装无疑是最困难的,同时这也客观上提高了大家学习OpenStack云计算的技术门槛。想一想,自己3年前网上偶然接触到OpenStack时,一头茫然,手动搭建一...

tututu_jiang
55分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部