线性回归原理推导与应用(九):逻辑回归多分类问题的原理与推导

普通的逻辑回归只能针对二分类问题,也就是分类结果为是和不是,好和不好等问题,而实际应用中还会有多分类的问题,例如金融行业信用评分中需要将用户分为好,中,差三类,对企业信用评级要划分为低风险,中风险,高风险等等。要想实现多个类别的分类,我们必须要改进logistic回归,让其适应多分类问题。

逻辑回归多分类模型是二分类模型的拓展。主要有OVO/OVR和Softmax回归等拓展方法,其中,OVO/OVR是基于二分类模型的一种通用拓展方法。而Softmax回归是修改逻辑回归的损失函数,让其适应多分类问题。

OVO/OVR

一对一分类器(OvO,One Vs One)

​ 对于OvO策略,我们将训练样本中的 n n n 个类别两两配对,从而产生 n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2 个分类任务(也就是就是组合 C n 2 C_n^2 Cn2)。我们每次拿其中的两类去训练一个分类器,最终将训练出 n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2 个分类器。当预测一组数据时,分别用这 n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2个分类器进行预测,最终的结果为所有预测结果中最多的那一个(即投票选出结果)。

接下来举一个栗子来帮助大家理解OvO的分类过程。

假设现在数据集的分布如下图所示(其中A,B,C代表训练数据的类别)
在这里插入图片描述

OvO首先从训练集中划分不同的两个类别的组合来训练出多个分类器。因为例子中是三类,所以两两分类后会有 C 3 2 C_3^2 C32=3 个分类器,如下图所示(其中每一个矩形框代表一种划分):
在这里插入图片描述
在预测阶段,只需要将样本分别扔给训练阶段训练好的3个分类器进行预测,相当于进行三次逻辑回归二分类,最后将3个分类器预测出的结果进行投票统计,票数最高的结果为预测结果。假设样本是符合A分类的,那么这一个样本在3个分类器中的结果如下图所示:
在这里插入图片描述
在三个分类器中会有两个分类结果为A分类,次数最多,所以最终结果就判断分类结果为A

一对其余分类器(OvR,One Vs Rest)

​ 对于OvR策略,枚举每一种类别,将枚举到的类别作为正例而其他的统一作为反例,这样只需要训练 n n n 个分类器。当预测一组数据时,分别用这 n n n个分类器进行预测,选取结果为正例 (只可能有一个为正例) 的类别作为最终结果。

同样来举一个栗子来帮助大家理解OvO的分类过程。和上面一样假设现在有A,B,C共3个分类的训练数据集:
在这里插入图片描述
OvR在训练阶段取一种样本作为一类,将剩余的所有类型的样本看做另一类,
在这里插入图片描述

这样就形成了3个二分类问题,对应有3个分类器。
在这里插入图片描述

在预测阶段,只需要将样本分别扔给训练阶段训练好的3个分类器进行预测,最后选概率最高的类别作为最终结果。如下图所示
在这里插入图片描述

区别

从具体的分类流程可以知道OvO用时较多,在类别较多的情况下 C n 2 C_n^2 Cn2个分类器个数远远多于OvR的 n n n个分类器。但OvO分类结果更准确,因为每一次二分类时都用真实的类型进行比较,没有混淆其它的类别;

Softmax

对于二分类问题,我们可以使用Sigmod函数(又称Logistic函数)。将 ( − ∞ , + ∞ ) (-\infty, +\infty) (,+)范围内的数值映射成为一个 ( − 1 , 1 ) (-1, 1) (1,1)区间的数值,一个 ( − 1 , 1 ) (-1, 1) (1,1)区间的数值恰好可以用来表示概率。

而为了能将线性回归后的数值进行多分类,需要输出每个类别的概率,这样就可以选择一个概率最高的类别作为预测结果,从而实现多分类。使用的Softmax的公式如下
Softmax ( z i ) = e z i ∑ j e z j \text{Softmax}(z_{i}) = \frac{e^{z_i}}{\sum_j e^{z_j}} Softmax(zi)=jezjezi

Softmax公式大致就是对数据做了归一化,可以让计算出的所有的值都是 [0, 1] 之间的(因为概率必须是 [0, 1]),且所有的值加起来等于 1。用实际数据举个栗子,如下:
在这里插入图片描述
可以看到softmax将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!

参考文章:
https://zhuanlan.zhihu.com/p/45230536
https://www.zhihu.com/question/273645014
https://blog.csdn.net/alw_123/article/details/98869193
https://blog.csdn.net/qq_44350242/article/details/112372860

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/89062.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JPA将大数据量的Excel文件导入到数据库中

在日常的数据处理中,经常碰到Excel的数据,需要将Excel的数据导入到数据库中。 Excel数据的预处理 将sheet分拆为不同的文件 如果一个文件中有太多的sheet,在处理的时候,对计算机的内存要求很高,为了避免内存崩溃。预…

异步爬虫---

代码结构分析 这是一个同步新闻爬虫程序,主要包含以下几个部分: 们把爬虫设计为一个类,类在初始化时,连接数据库,初始化logger,创建网址池,加载hubs并设置到网址池。 爬虫开始运行的入口就是r…

04 dnsmasq 的环境搭建

前言 这里介绍一下 dnsmasq 的调试环境的搭建 这是一种比较常见的开远的 dns 服务器 git 仓库在 git://thekelleys.org.uk/dnsmasq.git dnsmasq 的编译 首先是 clone 代码, git clone git://thekelleys.org.uk/dnsmasq.git 然后是开始编译 dnsmasq 最顶层的目录结构如下…

visual studio2019+vcpkg管理第三方库

下载 vcpkg官方教程 git clone https://github.com/microsoft/vcpkg.git cd vcpkg && bootstrap-vcpkg.bat注意:git clone一直失败,我直接在github仓库下载的zip,一样可以 设置环境变量 E:\software\vcpkg 安装你想要的库 比如…

logger2js - JavaScript日志与调试工具库

logger2js - JavaScript日志与调试工具库 logger2js是一个功能强大的前端JavaScript日志与调试工具库,提供了丰富的日志输出、性能测试和代码调试功能。该库支持配置化引入,包含5种皮肤风格和丰富的API接口,如 a l e r t 增强方法、 alert增…

影像组学5:Radiomics Score的计算

Rad-score(全称 Radiomics score,影像组学评分)是通过数学模型将影像组学提取的多个特征整合为一个综合性指标,从而简化临床分析与决策。 前文已介绍影像组学的病灶分割、特征提取及筛选流程,本节将重点阐述 Rad-scor…

性能测试——搭建Prometheus+Grafana平台(超详细版)

一、搭建influxdb prometheus grafana Jmeter监控平台 1、目的:对性能测试的结果进行持久化存储。 2、每个组件介绍 Jmeter:性能测试工具,可以收集到服务器的性能测试指标:统计TPS、响应时间、线程数、错误率等信息。influxd…

微服务--nacos+feign

微服务使用到了我们的多模块开发,父级工程可以在modules管理子模块 子模块中也会定义父模块 1. Nacos注册中心 Nacos已成为Java微服务生态的事实标准组件,在2023年中国Java开发者调研中占比达62%。其优势在于将服务发现与配置管理统一,显著降…

基于Python的二手房源信息爬取与分析的设计和实现,7000字论文编写

摘要 本文设计并实现了一个基于 Python 的二手房源信息爬取与分析系统。该系统通过网络爬虫技术自动从房地产网站获取二手房源信息,经过数据清洗、存储后进行多维度分析,并通过可视化界面展示分析结果。系统采用模块化设计,包括爬虫模块、数…

力扣HOT100之栈:739. 每日温度

这道题是单调栈的一个经典应用,这里我们使用单调递减的栈(从栈底到栈顶单调递减)来实现,首先我们创建一个与temperatures大小一致的全0数组result,然后我们通过一个for循环,通过下标访问的方式遍历所有元素…

vue3 报错Missing semicolon

快速定位问题: 一、在git中对比改动,实在不行重置。 二、找分号或逗号 三、误碰键盘,多了空格or一些字母,删除即可。如下

在pyCharm中创建新的conda环境

在conda中创建pychars环境 打开 CMD 或 PowerShell 或 Anaconda Prompt 输入以下命令: conda create -n pychars python3.10你可以把 3.10 换成你需要的 Python 版本,如 3.9、3.11 等。 创建完成后激活环境: conda activate pychars在 Py…

如何确定某个路由器的路由表?(计算机网络)

以下题为例 题目说要路由表关键是目的网络地址和下一跳地址 那么我们第一步先确定目的网络地址。 一共有四个网络,即有四个目的网络地址:15.0.0.0 20.0.0.0 30.0.0.0 40.0.0.0 下一跳地址就是去往目地网络的下一个ip地址 。 我们这里是要的…

ubuntu 系统 多条命令通过 bash 脚本执行

ubuntu 系统 多条命令通过 bash 脚本执行。 1、新建sh脚本。 vim run.sh 2、示例命令,写入run.sh文件内,具体命令如下: #!/bin/bash# 切换到指定目录 cd /work_space/build/bin# 执行程序 ./demo 3、给sh脚本权限。 chmod x run.sh 4、执行sh脚本…

《拆解问题的技术》笔记

思维导图 拆解问题的技术 拆解职场难题 拆解项目难题 拆解简报企划难题 拆解学习难题 拆解人生难题

langChain构建ChatRobot(1)—基础对话

摘要:本文介绍利用langChain核心组件Models里的Chat Models构建基本的Chatbot,能实现简单的问答。 文章目录 概述Chat Model1. message对象1.1 消息类型介绍:1.2 使用场景: 2. 利用ChatModel构建简单的 Chatbot2.1 实现基本的问答…

行为模式-迭代器模式

定义: Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.(它提供一种方法访问一个容器对象中各个元素,而又不需暴露该 对象的内部细节。) 迭代器模式通…

图像处理算法的学习笔记

一、常见噪声简介 1. 高斯噪声 最普遍,最难用肉眼精确判断。图像整体看起来"颗粒感"很强,像蒙了一层半透明的"薄纱"或"雪花点"(就像老式电视的雪花屏),覆盖整个画面。噪声点是细小的、…

《Java开发工具全解析:从基础到前沿》

一、引言 在当今数字化时代,软件开发犹如一座庞大而复杂的大厦,支撑着我们生活中方方面面的应用。而 Java,作为软件开发领域中极为重要的一门编程语言,宛如大厦的基石,发挥着不可替代的关键作用。 自 1995 年正式诞生…

[11-4]SPI通信外设 江协科技学习笔记(5个知识点)

1 2 3 TDR、TXE、RDR、RXNE 这些术语通常与串行通信接口有关,特别是在使用 UART(通用异步收发传输器)或 USART(通用同步/异步收发传输器)时。下面是每个术语的含义和用途: • TDR(Transmit Data Register)&…