逻辑回归(logistics regression)与 softmax

分类与回归的区别

我们可以按照任务的种类,将任务分为回归任务和分类任务。那这两者的区别是什么呢?按照较官方些的说法,输入变量与输出变量均为连续变量的预测问题是回归问题,输出变量为有限个离散变量的预测问题成为分类问题.
通俗一点讲,我们要预测的结果是一个数,比如要通过一个人的饮食预测一个人的体重,体重的值可以有无限多个,有的人50kg,有的人51kg,在50和51之间也有无限多个数.这种预测结果有无限多种可能的问题,我们会训练出一个模型,传入参数后得到这个确定的数,这类问题我们称为回归问题.预测的这个变量(体重)因为有无限多种可能,在数轴上是连续的,所以我们称这种变量为连续变量.
我们要预测一个人身体健康或者不健康,预测会得癌症或者不会得癌症,预测他是水瓶座,天蝎座还是射手座,这种结果只有几个值或者多个值的问题,我们可以把每个值都当做一类,预测对象到底属于哪一类.这样的问题称为分类问题.如果一个分类问题的结果只有两个,比如"是"和"不是"两个结果,我们把结果为"是"的样例数据称为"正例",讲结果为"不是"的样例数据称为"负例",对应的,这种结果的变量称为离散型变量.

逻辑回归

逻辑回归不是回归

从名字来理解逻辑回归,我们前一段讲到回归任务是结果为连续型变量的任务,logistics regression是用来做分类任务的。

逻辑回归算法原理及公式推导

求解目标

逻辑回归的目的是,对于给定的X,我们算出y’。其中y’表示在X的情况下y=1的概率。
在这里插入图片描述
那么这里的y’怎么算呢?按照线性回归的思想,我们可以假设:
在这里插入图片描述
但是这里有个问题:在逻辑回归中,y’表示在X的情况下y=1的概率。所以我们计算出来的y’应该是界于[0,1]之间。为了解决这个问题,我们引入sigmiod函数对上面的式子进行处理。使y’界于[0,1]之间
在这里插入图片描述
至此,问题就已经结束了,我们只需要将式子中的参数w,b求出来就可以了。

损失函数

那么如何才能算出最合适的w,b呢?这里我们需要设置一个损失函数L(X),当损失函数最小的时候,w,b就是最合适的。
这里我们将L(x)设定为:在这里插入图片描述
这个函数就是我们逻辑回归(logistics regression)的损失函数,我们叫它交叉熵损失函数。

什么是交叉熵损失函数

交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性。

交叉熵公式表示为:
在这里插入图片描述
p ( x ) 来表示样本的真实分布,q ( x ) 来表示模型所预测的分布。在机器学习训练网络时,输入数据与标签常常已经确定,那么真实概率分布p ( x ) 也就确定下来了,所以p ( x )在这里就是一个常量y。由于交叉熵表示真实概率分布P ( x ) 与预测概率分布Q ( x ) 之间的差异,值越小表示预测的结果越好。所以在机器学习中常常使用交叉熵损失函数来计算loss就行了。

梯度下降

对L(X)求极大值,得到参数的估计值。这样,问题就变成了以对数似然函数为目标函数的最优化问题,我们可以使用梯度下降法来求解:
在这里插入图片描述
至此,找到了梯度下降中的方向,只要给定一个步长就可以用迭代的方式来求待求参数,迭代的公式为:
在这里插入图片描述
至此逻辑回归算法的全部过程结束。

逻辑回归怎么处理非线性分类问题

如果要解决非线性问题,需要对输入做非线性变换。例如对特征先进行交叉,再输入逻辑回归算法。
举例来说,假设特征A和B线性不可分,那我们把这两个特征进行组合,当成一个特征不就行了吗?
这也是为什么facebook提出了GBDT+LR的组合,通过GBDT做特征交叉然后输入LR中,这样即可以实现特征的交叉又可以解决非线性的问题。

总结

逻辑回归的优点有以下几点:
1、模型的可解释性比较好,从特征的权重可以看到每个特征对结果的影响程度。
2、输出结果是样本属于类别的概率,方便根据需要调整阈值。
3、训练速度快,资源占用少。
而缺点是:
1、准确率并不是很高。因为形式非常简单(非常类似线性模型),很难去拟合数据的真实分布。
2、处理非线性数据较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据。
3、很难处理数据不平衡的问题。

softmax简介

逻辑回归只能处理二分类问题,处理多分类问题需要使用softmax。
在机器学习尤其是深度学习中,softmax是个非常常用而且比较重要的函数,尤其在多分类的场景中使用广泛。他把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1。

softmax函数的数学形式定义

在这里插入图片描述
可以看到,softmax函数解决了从一个原始的n维向量,向一个n维的概率分布映射的问题。那么在多分类问题中,假设分类数是n,模型希望预测的就是某样本在n个分类上的概率分布。如果用深度学习模型进行建模,那么最后输出层的形式是由n个神经元组成的,再把n个神经元的输出结果作为一个n维向量输入最终的softmax函数,在最后的输出中得到最终的多分类概率分布。在一个神经网络中,softmax输出层的结构如下图所示。
在这里插入图片描述

损失函数

与逻辑回归一样,softmax函数往往和交叉熵损失函数一起使用:
在这里插入图片描述
其中,ti 表示真实值,yi表示求出的softmax值。当预测第i个时,可以认为ti=1。此时损失函数变成了:
在这里插入图片描述

梯度下降

接下来对Loss求导:
在这里插入图片描述
上面的结果表示,我们只需要正向求出yi ,将结果减1就是反向更新的梯度,导数的计算是不是非常简单!

总结

可以看出,softmax函数和交叉熵的配合,不仅在数学含义上完美统一, 而且在梯度形式上也非常简洁。基于上式的梯度形式,通过梯度反向传播的方法,即可完成整个神经网络权重的更新。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值