【机器学习】突破分类瓶颈:用逻辑回归与Softmax回归解锁多分类世界

损失函数与优化器:从「梯度是怎么被造出来的」到「梯度是怎么被用掉的」 本文揭示损失函数与优化器本质一体:优化器仅依赖损失产生的梯度,而损失决定梯度的方向、尺度与噪声特性。错误的损失选择(如分类用MSE)会导致梯度失衡,使优化器失效;不同损失(如Huber、Focal)通过调控梯度分布影响优化过程。实测表明,归约方式、标签结构与损失配对直接决定梯度行为,进而影响收敛性与泛化。核心观点:选对损失,才是让优化器“看得懂”的前提。 阅读详情

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!
请添加图片描述

🍋1. 引言

在机器学习中,分类问题是最常见的一类问题。无论是二分类还是多分类,解决这些问题的算法有很多,其中逻辑回归、Softmax回归和集成学习方法在实际应用中被广泛使用。但在实际数据中,类别不平衡问题可能会影响模型的效果,如何有效地解决这一问题也是一个亟待解决的难题。

🍋2. 逻辑回归

概述:逻辑回归(Logistic Regression)是一种用于二分类问题的经典线性分类器,目标是通过训练数据集的特征来预测某一类别的概率。

模型原理: 逻辑回归的核心是使用sigmoid函数将线性组合的输出映射到[0,1]区间,用于二分类问题:

在这里插入图片描述
其中,𝑤是权重,𝑏是偏置,𝑋是输入特征。

🍋代码实现

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report

# 生成数据集
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, random_state=42)

# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 训练模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估
print(classification_report(y_test, y_pred))

优缺点:

  • 优点:模型简单,计算开销小,容易解释。
  • 缺点:对于非线性问题效果差,容易受到异常值影响。

🍋3. Softmax回归

概述:Softmax回归(Softmax Regression)是逻辑回归的扩展,处理多分类问题。它将输入的线性组合映射到多个类别的概率值。

模型原理: Softmax函数是对逻辑回归的扩展,公式为:
在这里插入图片描述

​
是偏置。

🍋代码实现

from sklearn.linear_model import LogisticRegression

# 使用Softmax回归处理多分类问题
model = LogisticRegression(multi_class='multinomial', solver='lbfgs')
model.fit(X_train, y_train)

y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))

优缺点:

  • 优点:可以处理多分类问题,适用于线性可分问题。
  • 缺点:当类别数量很多时,计算复杂度较高。

🍋4. 集成学习

概述:集成学习是一种通过结合多个弱学习器来提高模型性能的方法。常见的集成学习方法有Bagging、Boosting和Stacking。

from sklearn.ensemble import RandomForestClassifier

# 随机森林分类器
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, y_train)

y_pred = rf.predict(X_test)
print(classification_report(y_test, y_pred))

🍋5. 类别不平衡问题

概述:在现实世界中,很多分类任务会面临类别不平衡的问题,即某一类别的样本数量远远少于其他类别。这会导致模型倾向于预测样本较多的类别,降低模型的整体性能。

解决方法:

  • 重采样:通过增加少数类样本或减少多数类样本来平衡数据集。
  • 加权损失函数:对模型在少数类样本上的误差给予更大的惩罚。
  • 集成方法:例如SMOTE与Boosting结合来提高少数类的预测能力。

🍋代码示例(重采样)

from imblearn.over_sampling import SMOTE

# 过采样
smote = SMOTE()
X_res, y_res = smote.fit_resample(X_train, y_train)

# 训练模型
model = LogisticRegression()
model.fit(X_res, y_res)

y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))

🍋6. 逻辑回归案例(Iris数据集)

我们将通过以下步骤进行分析:

  • 加载数据:选择Iris数据集。
  • 数据预处理:包括数据分割与标准化。
  • 训练模型:使用逻辑回归训练模型。
  • 评估模型:通过混淆矩阵、准确率等评估模型效果。

Iris数据集包含150个样本,分别来自3个不同种类的鸢尾花(Setosa、Versicolor、Virginica)。每个样本有4个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。目标是根据这些特征来预测鸢尾花的种类。

# 导入需要的库
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

# 1. 加载Iris数据集
iris = load_iris()
X = iris.data  # 特征
y = iris.target  # 标签

# 2. 数据分割:80%训练数据,20%测试数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 3. 数据标准化:逻辑回归对特征的尺度比较敏感
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 4. 训练逻辑回归模型
logreg = LogisticRegression(max_iter=200)
logreg.fit(X_train, y_train)

# 5. 在测试集上进行预测
y_pred = logreg.predict(X_test)

# 6. 模型评估
print("分类报告:")
print(classification_report(y_test, y_pred))

# 7. 混淆矩阵
cm = confusion_matrix(y_test, y_pred)
print("混淆矩阵:")
print(cm)

# 可视化混淆矩阵
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()

代码分析

  1. 加载Iris数据集:
  • 使用sklearn.datasets.load_iris()加载Iris数据集,数据集已经包含了4个特征和相应的类别标签。
  1. 数据分割:
  • 使用train_test_split将数据分割为训练集和测试集,80%的数据用于训练,20%的数据用于测试。
  1. 数据标准化:
  • 逻辑回归对输入特征的尺度非常敏感,因此我们对数据进行标准化(均值为0,方差为1),使用StandardScaler完成这一操作。
  1. 训练逻辑回归模型:
  • 使用LogisticRegression()创建一个逻辑回归模型,并在训练集上进行训练。max_iter=200指定最大迭代次数,以确保算法收敛。
  1. 预测与评估:
  • 使用训练好的模型对测试集进行预测,并通过classification_report显示分类的准确性、精确度、召回率和F1-score等评估指标。
    使用confusion_matrix计算混淆矩阵,进一步分析模型的分类效果。
  1. 混淆矩阵可视化:
  • 使用Seaborn的heatmap函数将混淆矩阵可视化,更直观地展示分类效果。

🍋评估结果

分类报告如下:
在这里插入图片描述
混淆矩阵如下:
在这里插入图片描述

根据分类报告和混淆矩阵的结果,我们可以得出以下结论:

  • 完美的分类结果:模型的精确度、召回率和F1分数都为1.00,说明模型在每个类别上都没有错误预测,完美地分辨了三个不同种类的鸢尾花。
  • 没有误分类:混淆矩阵显示每个类别的所有样本都被正确分类,没有出现任何误分类的情况。
  • 数据集的简单性:由于Iris数据集是一个相对简单且清晰的分类问题,尤其是在特征与类别之间的边界非常明确时,逻辑回归能够非常好地进行分类。

🍋结论

本文对逻辑回归、Softmax回归、集成学习方法进行了详细分析,并讨论了类别不平衡问题及其解决方法。通过实验验证,选择合适的分类算法和解决方案能够显著提高模型在实际任务中的性能。

希望这篇博客能够为你提供全面的分类问题解决方案,同时帮助理解如何在复杂场景下处理类别不平衡问题,感兴趣的同学别忘了三连哦

在这里插入图片描述

挑战与创造都是很痛苦的,但是很充实。

机器学习之Softmax回归模型 Softmax在机器学习中有非常广泛的应用,但是刚刚接触机器学习的人可能对Softmax的特点以及好处并不理解,其实你了解了以后就会发现,Softmax计算简单,效果显著,非常好用。我们先来直观看一下,Softmax究竟是什么意思我们知道max,假如说我有两个数,a和b,并且a>b,如果取max,那么就直接取a,没有第二种可能但有的时候我不想这样,因为这样会造成分值小的那个饥饿。所以我希望分... 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第三百零五篇 计算机系统中的各类运算操作01

编号类型领域运算操作运算类型算法算法的详细设计及数学分析参数列表及参数的数值设计应用场景 (100+条)集合运算​1集合运算关系代数并集 (Union)集合运算归并排序去重合并两个集合,去除重复元素。时间复杂度 O(n+m),n,m为两集合大小。输入:集合A, B。输出:A∪B。数据集成、多表结果合并、去重后的全量数据提取。2集合运算关系代数交集 (Intersection)集合运算哈希交集找出同时属于两个集合的元素。平均时间复杂度 O(min(n,m)),最坏 O(n*m)。输入:集合A, B。输出:A∩

weixin_49199313的博客 1389

Logistic回归和Softmax回归

假设训练数据集为{(x1,y1),(x2,y2),...(xm, ym)},即有m个样本,令x=[x0, x1, ..., xn]T,x0=1,即每个样本有n个特征,y∈{0, 1}。假设训练数据集为{(x1,y1),(x2,y2),...(xM, yM)},即有M个样本,softmax回归使用交叉熵损失函数来学习最优的参数矩阵W,对样本进行分类。是由所有类别的后验概率组成的向量,第c个元素就是预测为第c类的概率,比如[0.05, 0.01, 0.9, 0.02, 0.02],预测为第3类。

MR_BOLT的博客 896

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 11 算法篇

在百万级虚拟机、百万级租户的超大规模云环境中,核心算法挑战包括:挑战维度具体问题算法需求技术复杂度规模性​百万级对象并发管理分布式算法、分区算法极高(NP-hard问题)多租户​租户间隔离与资源共享公平性算法、隔离算法高(多目标优化)动态性​资源需求实时变化自适应算法、在线算法高(实时决策)异构性​硬件/负载/需求差异分类算法、匹配算法中高(多维度优化)经济性​资源利用率与成本平衡优化算法、博弈论算法高(多目标博弈)以下是按领域分类的详细算法列表:算法名称数学建模表达核心思想时间复杂度适用场景推理步骤首次适

weixin_49199313的博客 1398

【机器学习】多项逻辑斯蒂回归/softmax回归推导与求解

1. 多项逻辑斯蒂回归模型 多项逻辑斯蒂回归模型(multi-nominal logistic regression model),又称为Softmax Regression,是一个用来预测离散型随机变量的不同可能结果的概率的模型,用于进行多项分类。 前面在逻辑斯蒂回归原理推导与求解中讲到的逻辑斯蒂回归模型是二项分类模型,用于二分类。将其推广为多项分类,假设离散型随机变量的取值集合是,那么多项...

齐在的专栏 1万+

【信息科学与工程学】【安全领域】第六十七篇 防火墙产品02

传统DDoS防御基于静态阈值,在复杂、自适应的攻击下(如脉冲攻击、低速攻击)效果不佳。将防火墙的防御动作(如触发清洗、调整限速阈值、更新黑白名单)建模为智能体的动作,通过与环境(网络流量)的交互学习最优防御策略。

weixin_49199313的博客 691

网格自适应_Comsol案例解析17:自适应网格的使用

本期导读自适应网格细化有许多优势,比如可以不用对网格进行全局加密,增加计算精度,又会降低求解自由度。本期仍然以气泡上升案例为例,在两相流模块中使用自适应网格。【打开案例模型】【修改网格】适当让气泡边界加密,注意,曲率因子越小,曲线上的网格越密【添加自适应网格】使用默认的参数即可,这里的误差指示器用的是水平集phi。可以根据具体求解模型选择适当的自变量作为误差指示器。【口诀】默认的一般是最...

weixin_28726871的博客 5681

机器学习->监督学习->logistic回归,softMax回归

本篇博文来总结一下回归模型里面两个非常重要的模型。 logistic回归 softMAX回归 Logistic回归logistics回归虽然有“回归”两字但是却是分类模型,并且是个二分类模型。logistics回归是个线性分类模型,有着线性的决策边界,但是有着非线性的激活函数去估计后验概率。下面就从数学层面讲讲logistics回归。 首先介绍下sigmoid函数 其函数图像: 显然sigmo

村头陶员外的博客 4323

【NLP】语言模型的发展历程 (1)

N-gram模型是一种基于统计语言模型的文本分析算法,它用于预测文本中下一个词出现的概率,基于前面出现的n-1个词的序列。这里的n代表序列中元素的数量,因此称为N-gram。Unigram:N=1,每个单词的出现概率独立计算,不考虑上下文。Bigram:N=2,基于前一个单词预测当前单词的联合概率模型。Trigram:N=3,考虑前两个单词来预测当前单词的联合概率模型,更复杂但可能更准确。

酒酿小圆子呀~ 1668

Logistic回归与Softmax回归

Logistic回归与Softmax回归是基于回归思想解决分类问题的经典算法。Logistic回归专用于二分类问题,而Softmax回归扩展至多分类问题。两者都通过概率建模实现分类决策,并使用对数几率变换建立线性关系。Logistic回归通过三阶数学变换(概率→几率→对数几率→Sigmoid函数)构建分类模型,最终用线性回归拟合对数几率,并通过Sigmoid函数将线性预测值映射为分类概率。

qq_36756312的博客 905

Isaac Sim仿真平台学习(2)系统架构

isaac sim系统架构

weixin_75067193的博客 2699

VScode高效开发STM32:头文件路径配置全解析

本文详细解析了在VScode中高效开发STM32项目的核心步骤——头文件路径配置。针对常见的“找不到头文件”问题,文章深入剖析了IntelliSense的工作原理,并提供了手把手创建和解读c_cpp_properties.json配置文件的完整指南,包括includePath、defines、compilerPath等关键项的设置,帮助开发者彻底解决红色波浪线错误,实现精准的代码提示与跳转。

weixin_28835789的博客 340

Python机器学习:从零基础到项目实战

当您翻开此书,您正踏入一场数据与智慧的修行。机器学习,并非冰冷的符码,而是机器模拟人类洞察世界的法门。本书将带您,以Python为舟,泛游于算法之海。我们不只传授“术”,更探求其后的“道”——从数据的生灭流转中观照规律,于模型的迭代演进里体悟得失。愿您合上书卷时,收获的不仅是驾驭数据的技能,更有一双洞悉复杂、化繁为简的“智慧之眼”。现在,让我们一同启程。

YunWisdom 969

Visual SLAM算法笔记

最近在学习SLAM算法,这里作为阅读笔记记录和总结一下。对经典的单目SLAM/VO算法做了摘要和总结,比如Nister VO、MonoSLAM、PTAM、ORB-SLAM、LSD-SLAM、SVO、DSO等,对几个单目和IMU的融合算法也做了简单总结,比如MSCKF、OKVIS、IMU-Preintegration等。

MulinB的技术博客 3万+

神经网络的解析

神经网络(Neural Network, NN),全称人工神经网络(Artificial Neural Network, ANN),是一种模仿生物神经系统(尤其是人类大脑)结构和工作原理,通过大量人工神经元的连接与协同,实现对数据的学习、特征提取和预测决策的机器学习模型。其核心价值在于“自主学习”——无需人工手动设计特征,模型可通过对大量标注数据的训练,自动挖掘数据中的潜在规律和特征,进而对未知数据进行准确预测。

2401_87737950的博客 375

【一文读懂】卫星轨道的轨道参数(六根数)和位置速度矢量转换及其在终端距离、相对速度和多普勒频移计算中的应用

本文首先介绍了卫星轨道的六根数参数:半长轴 a、偏心率 e、轨道倾角 i、升交点赤经 Ω、近地点幅角 ω 以及真近点角 ν,并探讨了如何利用这些参数计算卫星与地面终端之间的距离、相对速度及由此产生的多普勒频移。利用开普勒运动公式计算当前瞬间的轨道半径;根据真近点角 ν 在围心坐标系中计算位置矢量和速度矢量;利用旋转矩阵(依次旋转 ω、i、Ω)将围心坐标系的状态矢量转换到地心惯性坐标系;最终结合地面终端信息,计算卫星与终端的欧氏距离、沿视线的相对速度及多普勒频移。

u011376987的博客 9498

【simulink模型】独立悬架振动模型,七自由度整车simulink模型

车辆悬架系统的设计对提升车辆行驶平顺性和操纵稳定性具有重要意义。本文构建了独立悬架的振动仿真模型以及七自由度整车动力学模型,基于 Simulink 平台实现对模型的动态响应仿真。通过对比不同工况下的车辆振动响应,验证了模型的准确性与实用性。研究结果为车辆悬架系统的优化设计提供了有力支持。

2401_84610415的博客 1584

机器学习----Softmax回归

本篇博客主要是参考吴恩达教授的Ufldl教程,教程链接如下: http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92 OK!开启,本次的学习之旅吧!     1、Softmax回归解决什么问题呢? 通过前面的学习,我们知道线性回归解决的连续值的预测,逻辑回归解决的是离散值的预测,而且针对二分类问题。那么问题来了,

Sunshine_in_Moon的专栏 6760

YOLOv11改进策略【SPPF】| 将特征金字塔池化修改为:SPPCSPC,提升模型的特征提取能力和计算效率。

本文记录的是。YOLOv7中的SPPCSPC(Spatial Pyramid Pooling Cross Stage Partial Connections)模块是一种结合了(SPP)和(CSP)的改进结构,本文将其添加到YOLOv11中,

Limiiiing的博客 1822

机器学习算法之一-logistic回归、softmax模型

开始一个新的系列,换一换口味 分析机器学习算法的一般思路: 1、确定预测函数或者判别函数,一般表示为H函数; 2、确定Cost函数,表示的是预测输出值与训练数据之间的偏差; 3、确定优化算法。一、前言 logistic回归是常用的二分类模型,属于判别模型。softmax模型是logistic回归的多分类拓展。最大熵模型是由最大熵理论推导出来的,推导可以证明最大熵模型的极大似然估计与最大熵模

sinat_22336563的博客 1727

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【机器学习300问】139、Post-LN 和 Pre-LN 的区别?

Post-LN与Pre-LN的核心区别在于LayerNorm的位置:Post-LN在残差连接后,导致梯度需经LayerNorm变换,深层易出现梯度衰减或震荡;Pre-LN先做归一化,使输入稳定,残差路径梯度可无损回传,显著提升深层训练稳定性。尽管Pre-LN支持更深层次模型(如LLaMA、Qwen),但存在“深度诅咒”——深层贡献不足。相比之下,Post-LN浅层表现尚可,深层数易发散。因此,现代大模型普遍采用Pre-LN以保障训练可靠性。

qq_39780701的博客 397

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

机器学习基础|监督学习、标签、回归

网约车预估等待时长依赖监督学习中的回归任务。平台利用历史订单数据,以司机实际到达耗时为标签,通过上车点、时间、运力、路况等特征训练模型。模型不断优化预测值与真实耗时的误差,最终对新订单输出连续的预估等待时间,实现精准预测。

weixin_43971465的博客 244

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Hugging Face:成为机器学习界的“Github”

以下文章来源于OneFlow,作者OneFlow社区五年前,AI领域的知名研究者Andrej Karpathy发文称,传统人工编程属于“软件1.0”,“软件2

2601_96798011的博客 129

这7个小众Python库,才是机器学习工程化的降效神器

别再只盯着TensorFlow了:这7个小众Python库,才是机器学习工程化的降效神器在很多人的印象里,机器学习似乎就是高深莫测的数学公式、成千上万的GPU集群

2601_96797912的博客 171

机器学习——混淆矩阵(待更新)

二元: true表示真实==预测,positive表示预测值=1.

m0_61175448的博客 138

【机器学习300问】138、LayerNorm和BatchNorm的区别?

本文阐述了归一化与标准化在深度学习中的核心作用。输入层标准化可统一初始输入,但深层网络仍面临激活分布漂移。为此,提出BatchNorm与LayerNorm两种主流方法。

qq_39780701的博客 183

为什么生成对抗网络训练常不稳定,模式崩溃与判别器过强之间是什么关系?

当支持集不重叠时(即 $D$ 能完美区分真假),JS 散度为常数 $\log 2$,其梯度为 0。这意味着一旦 $D$ 训练得稍好,$G$ 就失去了学习方向,导致训练停滞。生成对抗网络(GAN)的训练本质上是生成器($G$)与判别器($D$)之间的非合作零和博弈。以下代码展示了如何通过梯度惩罚(Gradient Penalty)来约束判别器,避免其过强导致生成器梯度失效。判别器过强是导致模式崩溃的直接诱因之一,二者之间存在明确的**“梯度误导”**因果关系。

2402_84593233的博客 205
上一篇: 借助腾讯云轻量应用服务器优化双11电商促销活动:成本控制与性能提升的实践
下一篇: 基于华为云FunctionGraph和ModelArts的智能动漫头像生成:从自拍到AI风格化的编程
小馒头学python
小馒头学python 优质创作者: python技术领域 优质创作者: python技术领域
博客等级 码龄4年 1万+粉丝 252原创
评论 79
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馒头学python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值