内容简介:主要解决问题:分类问题---二分类问题如果需要解决多分类问题--- softmax 回归什么是分类?
1. 逻辑回归的应用背景
主要解决问题:分类问题---二分类问题
如果需要解决多分类问题--- softmax 回归
什么是分类?
分类是监督学习的一个核心问题,在监督学习中,当输出变量Y取有限个离散值时,预测问题便成为分类问题。这时,输入变量X可以是离散的,也可以是连续的。监督学习从数据中学习一个分类模型或分类决策函数,称为分类器。分类器对新的输入进行输出的预测,称为分类。
与线性回归的区别:线性回归预测输出的是(-∞,+∞)
而逻辑回归输出的是{0,1},这里面0我们称之为负例,1称之为正例。
如果分类器用的是回归模型,并且已经训练好了一个模型,可以设置一个阈值:
如果 ,则预测 ,既y属于正例
如果 ,则预测 ,既y属于负例
但是对于二分类问题来说,线性回归模型的输出值 可以大于1也可以小于0,所以我们需要一个函数,将输出转换到0和1之间。这里我们引入一个函数,sigmoid函数
这里g代表的就是这个函数:
图像如下:
这个函数的导数:
1.1 为什么要用 sigmoid 函数
我们可以从熵的角度,来理解一下这个问题。熵原本是信息熵中的概念,用在概率分布上可以表示这个分布中所包含的不确定度,熵越大不确定度越大。所以大家可以想象到,均匀分布熵最大,因为基本新数据是任何值的概率都均等。
而我们现在关心的是,给定某些假设之后,熵最大的分布。也就是说这个分布应该在满足我假设的前提下越均匀越好。比如大家熟知的正态分布,正是假设已知均值和方差后熵最大的分布。
回过来看逻辑回归,这里假设了什么呢?首先,我们在建模预测 ,并认为 服从伯努利二项分布,所以我们只需要知道 ;其次我们需要一个线性模型,所以 。接下来我们就只需要知道 是什么就行了。而我们可以通过最大熵原则推出的这个 ,就是 函数。其实还有一种解释可以看成伯努利二项分布的指数族形式,也就是 函数。
2. 逻辑回归
逻辑回归的数学表达模型:
其中 是参数,输出的直观解释:
对于给定的输入 , 时估计的概率
例如:对于肿瘤问题(恶性/良性),输入变量为肿瘤的大小 ,表示的是病人的肿瘤有70%的可能是恶性的。
较正式的说法可以如下表示:
给定输入 ,参数化的 (参数空间), 时的概率。数学上可以如下表示:
2.1 损失函数
这里我们选择对数似然损失函数作为逻辑回归的损失函数
损失函数为:
前面的 可以去掉,化简为:
注意中括号中的公式正是对逻辑回归进行最大似然估计中的最大似然函数
将两个合在一起
有了这个我们可以求出逻辑回归的最大似然函数
对数似然函数为:
对数似然取最大值等价于损失函数取最小值
2.2 梯度下降法
算法流程:
(1)初始化 (随机初始化)
(2)进行迭代,新的 能够使得 更小
(3)如果 能够继续减小,返回(2)
其中, 称为学习率或步长
这其中最主要的就是求解 的梯度,即梯度方向
注意,这个算法和线性回归里的梯度下降算法几乎是一致的,除了 的表示不同。
2.3 为什么损失函数不用最小二乘
也就是损失函数为什么不应平方损失而是选择用交叉熵。原因是平方损失在训练的时候会出现一定的问题。当预测值与真实值之间的差距过大时,这时候参数的调整就需要变大,但是如果使用平方损失,训练的时候可能看到的情况是预测值和真实值之间的差距越大,参数调整的越小,训练的越慢。
如果使用平方损失作为损失函数,损失函数如下
其中 表示真实值, 表示预测值。
对参数求梯度
由此可以看出,参数 除了跟真实值与预测值之间的差距有关外,还和激活函数的该点的导数有关,跟激活函数的梯度成正比,常见的激活函数是 函数,当这个点越靠近上边或者下边的时候梯度会变得非常小,这样会导致当真实值与预测值差距很大时,参数变化的非常缓慢,与我们的期望不符合。
而使用交叉熵损失在更新参数的时候,当误差越大时,梯度也就越大,参数调整也能更大更快。
参考文献:
1、李航,统计学习方法,清华大学出版社,2012
2、https://blog.csdn.net/qikaihuting/article/details/78518263
知乎原文链接:
https://zhuanlan.zhihu.com/p/53387812
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
High Performance Python
Micha Gorelick、Ian Ozsvald / O'Reilly Media / 2014-9-10 / USD 39.99
If you're an experienced Python programmer, High Performance Python will guide you through the various routes of code optimization. You'll learn how to use smarter algorithms and leverage peripheral t......一起来看看 《High Performance Python》 这本书的介绍吧!