logistic回归分类与softmax回归

article/2025/9/12 5:07:17

目录

Logistic回归

逻辑回归的定义式:

损失函数

梯度下降

Logistic回归防止过拟合:

Softmax回归:

loss函数

逻辑回归与Softmax回归的联系

与神经网络的关系

logistic回归(多分类)和softmax的关系:

YOLOV3中的逻辑分类应用


Logistic回归

Logistic回归(LR):是一种常用的处理二分类问题的模型。

二分类问题中,把结果y分成两个类,正类和负类。因变量y∈{0, 1},0是负类,1是正类。线性回归的输出值在负无穷到正无穷的范围上,并不好区分是正类还是负类。因此引入非线性变换,把线性回归的输出值压缩到(0, 1)之间,那就成了Logistic回归,使得≥0.5时,预测y=1,而当<0.5时,预测y=0。

逻辑回归的定义式:

,x代表样本的特征向量。

其中,

为sigmoid函数,

可以理解为预测为正类的概率,即后验概率的取值范围是(0, 1)。。

所以Logistic回归模型就是:

判断类别:

对loss函数求导得到:

当类别y=1时,损失随着的减小而增大,为1时,损失为0;

当类别y=0时,损失随着的增大而增大,为0时,损失为0。

损失函数

这个损失函数叫做对数似然损失函数,也叫:交叉熵损失函数(cross entropy loss)。这个损失函数是个凸函数,因此可以用梯度下降法求得使损失函数最小的参数。

梯度下降

Logistic回归防止过拟合:

在损失函数中加入参数θj的L2范数,限制θj的大小,以解决过拟合问题,那么加入正则化项的损失函数为:

相应的,此时的梯度下降算法为:

重复以下步骤直至收敛:

Softmax回归:

Softmax回归处理多分类问题,假设函数 形式如下:

和逻辑回归一样,得到:

loss函数

其中的1{.}是一个指示性函数,即当大括号中的值为真时,该函数的结果就为1,否则其结果就为0。

然后计算损失函数的偏导函数,得到:


 
之后就可以用如果要用梯度下降法,或者L-BFGS法求得未知参数。

 

看上面的推到我们可以发现,对每一个参数减去一个参数,最后的结果没有影响。其实softmax 回归中对参数的最优化解不只一个,每当求得一个优化参数时,如果将这个参数的每一项都减掉同一个数,其得到的损失函数值也是一样的,这说明解不是唯一的。

之所以会出现这样的现象,因为损失函数不是严格非凸的,也就是说在局部最小值点附近是一个”平坦”的,所以在这个参数附近的值都是一样的了。
为避免出现这样的情况,加入正则项(比如说,用牛顿法求解时,hession矩阵如果没有加入规则项,就有可能不是可逆的从而导致了刚才的情况,如果加入了规则项后该hession矩阵就不会不可逆了),加入正则项后的loss函数表达式为:

加入正则项后的loss函数
 
此时loss函数的偏导函数为:
 

同样的,我们在逻辑回归中,也可以加上正则项。

逻辑回归与Softmax回归的联系

softmax 回归是逻辑回归的一般形式,两者之间的联系:当类别数k = 2 时,softmax 回归退化为逻辑回归,softmax 回归的假设函数为:
 
利用softmax回归参数冗余的特点,我们令 ,并且从两个参数向量中都减去向量,得到:


 
因此,用来表示,我们就会发现 softmax 回归器预测其中一个类别的概率为,另一个类别概率的为,这与逻辑回归是一致的。

与神经网络的关系


神经网络是一个多层次的分类模型,其实logistic回归和softmax回归可以看出最简单的神经网络,结构如下图所示:


  
一般的神经网络有输入层,隐含层以及输出层构成,而上图中只有输入层和输出层,而没有隐含层。神经网络处理二分类时,输出层为一个节点,但处理K(K>2)分类问题时,数据节点为K个,这个logistic回归和softmax回归保持一致。值得注意的,在神经网络中的最后一层隐含层和输出层就可以看成是logistic回归或softmax回归模型,之前的层只是从原始输入数据从学习特征,然后把学习得到的特征交给logistic回归或softmax回归处理。
因此,可以把处理分类问题的神经网络分成两部分,特征学习和logistic回归或softmax回归。

logistic回归(多分类)和softmax的关系:

我们已经知道,普通的logistic回归只能针对二分类(Binary Classification)问题,要想实现多个类别的分类,我们必须要改进logistic回归,让其适应多分类问题。

关于这种改进,有两种方式可以做到。

第一种方式是直接根据每个类别,都建立一个二分类器,带有这个类别的样本标记为1,带有其他类别的样本标记为0。假如我们有k个类别,最后我们就得到了k个针对不同标记的普通的logistic分类器。

第二种方式是修改logistic回归的损失函数,让其适应多分类问题。这个损失函数不再笼统地只考虑二分类非1就0的损失,而是具体考虑每个样本标记的损失。这种方法叫做softmax回归,即logistic回归的多分类版本。

我们首先简单介绍第一种方式。

对于二分类问题,我们只需要一个分类器即可,但是对于多分类问题,我们需要多个分类器才行。假如给定数据集X\epsilon R^{^{m\times n}},它们的标记Y\epsilon R^{^{k}},即这些样本有k个不同的类别。

我们挑选出标记为c(c\leq k)的样本,将挑选出来的带有标记c的样本的标记置为1,将剩下的不带有标记c的样本的标记置为0。然后就用这些数据训练出一个分类器,我们得到h_{c}(x)(表示针对标记c的logistic分类函数)。

按照上面的步骤,我们可以得到k个不同的分类器。针对一个测试样本,我们需要找到这k个分类函数输出值最大的那一个,即为测试样本的标记:

下面我们介绍softmax回归。

对于有k个标记的分类问题,分类函数是下面这样:

在这里,我们将上式的所有的组合起来,用矩阵\Theta_{1},\Theta_{2}....\Theta_{k}来表示,即:\

这时候,softmax回归算法的代价函数如下所示(其中sign(expression is true)=1):

我们可以把logistic回归的损失函数改为如下形式:

很显然,softmax是logistic的推广,一般化。

但是,需要特别注意的是,对于p(y^{(i)}=c|x^{(i)},\Theta ),softmax回归和logistic回归的计算方式是不同的(不大明白哪里不同),不管是二分类还是多分类,都是一个主要区别。

对于选择softmax分类器还是k个logistic分类器,取决于所有类别之间是否互斥。所有类别之间明显互斥用softmax分类器,所有类别之间不互斥有交叉的情况下最好用k个logistic分类器。

参考:logistic回归(二分类)和Softmax回归的关系、logistic回归(多分类)和Softmax的关系_hahaha_2017的博客-CSDN博客_softmax 逻辑回归

YOLOV3中的逻辑分类应用

先回顾下YOLOv1的损失函数

yolov2的损失函数
只是在yolov1基础上改动了关于bbox的w和h的损失计算方式 即从:

去掉了w和h的二次根号,作者认为没有必要。

YOLOv3的损失函数
是在yolov2基础上改动的,最大的变动是分类损失换成了二分交叉熵,这是由于yolov3中剔除了softmax改用logistic。

一项一项分析损失函数

  • 中心坐标误差

  • 置信度误差

首先需要知道,置信度误差使用交叉熵来表示。另外需要清楚不管anchor box是否负责某个目标,都会计算置信度误差。因为置信度表示:框出的box内确实有物体的自信程度和框出的box将整个物体的所有特征都包括进来的自信程度。具体可以参考博客。
损失函数分为两部分:有物体,没有物体,其中没有物体损失部分还增加了权重系数。添加权重系数的原因是,对于一幅图像,一般而言大部分内容是不包含待检测物体的,这样会导致没有物体的计算部分贡献会大于有物体的计算部分,这会导致网络倾向于预测单元格不含有物体。因此,我们要减少没有物体计算部分的贡献权重,比如取值为:0.5。
第一项是:存在对象的bounding box的置信度误差。带有I_{ij}^{obj} 意味着只有"负责"(IOU比较大)预测的那个bounding box的置信度才会计入误差。
第二项是:不存在对象的bounding box的置信度误差。因为不存在对象的bounding box应该老老实实的说"我这里没有对象",也就是输出尽量低的置信度。如果它不恰当的输出较高的置信度,会与真正"负责"该对象预测的那个bounding box产生混淆。其实就像对象分类一样,正确的对象概率最好是1,所有其它对象的概率最好是0。

  • 分类误差

​​​​​​​

首先需要知道分类误差也是选择了交叉熵作为损失函数。当第i个网格的第j个anchor box负责某一个真实目标时,那么这个anchor box所产生的bounding box才会去计算分类损失函数。


参考:【论文理解】yolov3损失函数_DLUT_yan的博客-CSDN博客_yolov3损失函数


http://chatgpt.dhexx.cn/article/rAEOO1C3.shtml

相关文章

spss-logistic回归

logistic回归的因变量可以是二分类的&#xff0c;也可以是多分类的&#xff0c;但是二分类的更为常用&#xff0c;也更加容易解释&#xff0c;多类可以使用softmax方法进行处理。 Logistic回归分析也用于研究影响关系&#xff0c;即X对于Y的影响情况。Y为定类数据&#xff0c;…

logistic回归——PYTHON实现

logistic回归——PYTHON实现 概述&#xff1a; ​ logistic回归又称logistic回归分析&#xff0c;是一种线性回归模型。logistic回归应用最广泛的是处理二分类问题。比如&#xff0c;探讨引发疾病的危险因素&#xff0c;判断该病人是否患有该病&#xff1b;探讨房价的涨跌&am…

二项logistic回归案例分析(附操作数据)

当因变量数据类型为分类变量时&#xff0c;线性回归不再适用&#xff0c;应当做logistic回归。根据因变量分类水平的不同&#xff0c;具体包括二项logistic回归、多项logistic回归和有序logistic回归。 1.案例背景与分析策略 1.1 案例背景介绍 现收集到银行贷款客户的个人、…

Logistic回归--实例

逻辑回归 Logistic回归一种二分类算法&#xff0c;它利用的是Sigmoid函数阈值在[0,1]这个特性。Logistic回归进行分类的主要思想是&#xff1a;根据现有数据对分类边界线建立回归公式&#xff0c;以此进行分类。其实&#xff0c;Logistic本质上是一个基于条件概率的判别模型(D…

SPSS(八)logistic回归(图文+数据集)

SPSS&#xff08;八&#xff09;logistic回归 我们之前的线性回归也好、线性回归衍生方法也好、非线性回归也好&#xff0c;因变量的类型都是连续性的&#xff0c;假如因变量的类型是分类的呢&#xff1f;logistic回归针对的是二分类的因变量 logistic回归 基于线性回归模型…

2.2、logistic回归

一、什么是logistics回归 首先我们先要了解回归的概念&#xff0c;现有一些数据点&#xff0c;我们用 一条直线对这些点进行拟合&#xff0c;该线称为最佳拟合直线&#xff0c;这个拟合过程就称作回归。logistic回归虽然说是回归&#xff0c;但确是为了解决分类问题&#xff0…

Logistic Regression(逻辑回归)详细讲解

Logistic Regression(逻辑回归) 以前在学校学到Logistic Regression的时候&#xff0c;虽然最后会使用&#xff0c;但是对于许多地方有很多的疑惑&#xff0c;今天在这里详细梳理一下Logistic Regression的过程&#xff1a; Logistic Regression逻辑回归 回归的思想Logistic R…

第13章Stata Logistic回归分析

目录 13.1二元Logistic回归分析 案例延伸 延伸1&#xff1a;设定模型预测概率得具体值 延伸2&#xff1a;使用Probit模型对二分类因变量进行拟合 13.2多元Logistic回归分析 案例延伸 延伸&#xff1a;根据模型预测每个样本视力低下程度的可能性 13.3有序Logistic回归 …

机器学习笔记-Logistic回归

0 - 回顾 l i n e a r r e g r e s s i o n linear\ regression linear regression如果使用平方错误的话&#xff0c;我们可以很方便的解析出最好的 w w w是什么。即 w b e s t X † y w_{ best}X^{\dagger} y wbest​X†y 1 - 逻辑斯蒂回归问题 1.1 - 问题的提出 从一个人…

logistic回归详解

逻辑斯谛回归&#xff08;logistic regression&#xff09;是统计学习中的经典分类方法&#xff0c;虽然带有回归的字眼&#xff0c;但是该模型是一种分类算法&#xff0c;逻辑斯谛回归是一种线性分类器&#xff0c;针对的是线性可分问题。利用logistic回归进行分类的主要思想是…

机器学习笔记(六)Logistic回归

目录 一、什么是Logistics回归 二、sigmoid函数 三、梯度上升法 四、代码实现 数据导入 决策边界 梯度上升 五、总结 一、什么是Logistics回归 logistic回归是一种广义线性回归&#xff08;generalized linear model&#xff09;&#xff0c;因此与多重线性回归分析有很多相…

【机器学习】Logistic回归(重新整理)

Logistic回归学习笔记 Logistic回归学习线路预备知识&#xff1a;建议先去B站学习一下信息量&#xff0c;熵&#xff0c;BL散度&#xff0c;交叉熵的概念。Logistic回归的函数模型损失函数、损失最小化架构对数损失作为损失函数损失最小化架构 分类函数最大概率分类函数阈值分类…

C语言 fprintf 函数 - C语言零基础入门教程

目录 一.fprintf 函数简介二.fprintf 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.fprintf 函数简介 fprintf 是 C / C 中的一个格式化库函数&#xff0c;位于头文件 中&#xff0c;其作用是格式化输出到一个流文件中&#xff1…

【printf函数的具体用法】

一、printf&#xff08;&#xff09;函数 1、基本输出语句 printf()函数是C语言的输出函数&#xff0c;功能是按指定的输出格式把相应的参数值在标准的输出设备中显示出来。 printf 的格式 printf(格式控制串&#xff0c;参数1&#xff0c;参数2&#xff0c;…)&#xff0c;…

C语言printf函数详解

文章目录 1、类型符&#xff08;type&#xff09;2、宽度&#xff08;width&#xff09;3、对齐标志&#xff08;flags&#xff09;4、精度&#xff08;prec&#xff09;5、格式化输出到字符串6、版权声明 C语言格式化输出的函数有printf、sprintf和snprintf等&#xff0c;功能…

printf函数讲解

printf函数讲解 #include <stdio.h>/*辗转相除法求最大公约数*/ int gcd(int m, int n); int factrial(int a); int main(void){int m, n, t;scanf_s("%d %d", &m, &n);if (m < n){t m;m n;n t;}//n gcd(m, n);//printf("%d", n);pr…

C语言中fscanf和fprintf函数的使用

目录 一、前言 二、对比 1、scanf和fscanf&#xff1a; 2、printf和fprintf&#xff1a; 三、结论&#xff1a; 四、代码实现 1、fprintf相关代码 2、fscanf代码实现 3、 用fscanf和fprintf实现scanf和printf功能&#xff1a; 一、前言 在了解fscanf和fprintf之前我…

printf()函数详解

感谢博主的分享&#xff1a;https://me.csdn.net/blog/K346K346 1.printf()简介 printf()是C语言标准库函数&#xff0c;用于将格式化后的字符串输出到标准输出。标准输出&#xff0c;即标准输出文件&#xff0c;对应终端的屏幕。printf()申明于头文件stdio.h。 函数原型&am…

有关于fprintf()函数的用法

fprintf&#xff08;简介&#xff09; fprintf是C/C中的一个格式化库函数&#xff0c;位于头文件中&#xff0c;其作用是格式化输出到一个流文件中&#xff1b;函数原型为int fprintf( FILE *stream, const char *format, [ argument ]…)&#xff0c;fprintf()函数根据指定的格…

雷达理论的模糊函数

在雷达理论中&#xff0c;模糊与分辨是两个既有联系又有区别的概念。对多个目标来说&#xff0c;模糊就是不能分辨。雷达的分辨力取决于模糊图中心主瓣的宽度。雷达模糊度不仅考虑主瓣宽度&#xff0c;还考虑模糊图旁瓣的影响。因此&#xff0c;在研究雷达分辨理论之前&#xf…