逻辑回归损失函数

文章目录

    • 1.基础简析
      • 交叉熵损失函数(Cross-Entropy Loss)
      • 对数似然损失函数(Log-Likelihood Loss)
    • 2.关键步骤
    • 3.案例

1.基础简析

逻辑回归(Logistic Regression)是一种广泛应用于分类问题的统计模型,它使用了一个称为逻辑函数(Sigmoid function)的非线性变换来预测一个事件发生的概率。在逻辑回归中,常用的损失函数是交叉熵损失函数(Cross-Entropy Loss)或者对数似然损失函数(Log-Likelihood Loss)。这两个表述实际上是等价的,只是视角不同。

交叉熵损失函数(Cross-Entropy Loss)

对于二分类问题,假设我们有一个实例 (x_i),其真实标签为 (y_i)((y_i \in {0, 1})),模型预测的概率为 (p_i = \sigma(z_i)),其中 (z_i = w^Tx_i + b) 是线性组合的输出((w) 为权重向量,(b) 为偏置项,(\sigma) 为 sigmoid 函数),交叉熵损失函数定义为:

[L = -\frac{1}{N} \sum_{i=1}^{N} [y_i \log(p_i) + (1-y_i) \log(1-p_i)]]

这里,(N) 是样本数量,(y_i) 是实际标签,(p_i) 是模型预测该样本属于正类的概率。

对数似然损失函数(Log-Likelihood Loss)

从对数似然的角度看,如果我们将每个样本的预测看作是一个伯努利试验,那么整个数据集的似然函数可以写作所有单个样本似然的乘积。最大化似然等同于最小化对数似然的负值,这自然导出了与上面相同的交叉熵表达式。因此,对数似然损失也是:

[L = -\sum_{i=1}^{N} [y_i \log(p_i) + (1-y_i) \log(1-p_i)]]

在实际应用中,为了方便计算,通常会对这个公式进行小的调整,比如添加一个正则化项来防止过拟合,但这不影响其基本形式。

通过优化这个损失函数(通常是使用梯度下降法或其变种),逻辑回归模型能够学习到最佳的参数 (w) 和 (b),从而使得预测概率 (p_i) 尽可能接近真实标签 (y_i),进而提高分类的准确性。

2.关键步骤

在逻辑回归的训练过程中,通过不断迭代调整模型参数(权重 (w) 和偏置 (b)),以减小损失函数 (L) 的值,达到模型优化的目的。这一过程具体包括以下几个关键步骤:

  1. 初始化参数:首先给模型的参数 (w) 和 (b) 设置初始值,这可以是随机值或者是零。

  2. 计算预测概率:对于每个样本 (x_i),计算其属于正类的概率 (p_i = \sigma(z_i)),其中 (z_i = w^T x_i + b),(\sigma) 是sigmoid函数,定义为 (\sigma(z) = \frac{1}{1 + e^{-z}})。

  3. 计算损失:利用上述提到的交叉熵损失函数公式,计算当前参数下整个数据集的损失 (L)。

  4. 梯度计算:接下来,需要计算损失函数关于每个参数的梯度,即损失函数对 (w) 和 (b) 的偏导数。这些梯度指示了参数更新的方向和步长。对于逻辑回归的交叉熵损失,梯度计算可得:

    • 对于权重 (w_j):(\frac{\partial L}{\partial w_j} = \frac{1}{N} \sum_{i=1}^{N}(p_i - y_i)x_{ij})
    • 对于偏置 (b):(\frac{\partial L}{\partial b} = \frac{1}{N} \sum_{i=1}^{N}(p_i - y_i))
  5. 参数更新:根据梯度下降的规则,使用学习率 (\alpha) 来调整参数,使其沿负梯度方向移动,以期望减少损失。更新公式如下:

    • (w_j = w_j - \alpha \frac{\partial L}{\partial w_j})
    • (b = b - \alpha \frac{\partial L}{\partial b})
  6. 迭代:重复步骤2至5,直到满足某个停止条件,比如损失函数的改变小于一个很小的阈值,或者达到预设的最大迭代次数。

  7. 正则化:为了防止过拟合,可以在损失函数中加入正则项(如L1或L2正则化),这会影响梯度计算和参数更新的过程,但基本的迭代优化框架保持不变。

通过这一系列步骤,逻辑回归模型逐渐学习到数据中的模式,并能够在新的数据上做出更准确的分类预测。

3.案例

下面是一个使用Python和scikit-learn库实现逻辑回归的简单代码案例,用于处理二分类问题。假设我们有一组特征数据X和对应的标签数据y

# 导入所需库
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
import pandas as pd
import numpy as np# 假设数据已经加载到DataFrame中,X为特征,y为标签
# X = pd.DataFrame(...)  # 特征数据
# y = pd.Series(...)     # 标签数据# 如果没有现成的数据,我们可以创建一些模拟数据
np.random.seed(0)
X = np.random.rand(100, 2)  # 创建100行2列的随机特征数据
y = (X[:, 0] + X[:, 1] > 1).astype(int)  # 根据特征生成二元分类标签# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 初始化逻辑回归模型
logreg = LogisticRegression(max_iter=10000)  # max_iter设置较高以避免收敛警告# 训练模型
logreg.fit(X_train, y_train)# 预测测试集
y_pred = logreg.predict(X_test)# 计算并打印准确率
print("Accuracy of logistic regression classifier on test set: {:.2f}".format(logreg.score(X_test, y_test)))# 输出混淆矩阵
confusion_matrix = metrics.confusion_matrix(y_test, y_pred)
print("Confusion Matrix:\n", confusion_matrix)

这段代码首先导入了必要的库,并创建了一组简单的模拟数据来演示逻辑回归模型的训练和测试过程。然后,它将数据划分为训练集和测试集,初始化逻辑回归模型,并用训练数据拟合模型。最后,它对测试集进行预测,并计算模型的准确率及混淆矩阵,以评估模型性能。

请注意,实际应用中,您需要根据自己的数据集调整数据读取和预处理部分的代码。

在上述基础之上,如果我们想进一步优化模型或者进行模型的评估,可以考虑以下几个方面:

  1. 交叉验证:使用交叉验证来更稳健地评估模型性能,而不仅仅依赖于一次分割得到的训练集和测试集。
  2. 超参数调优:通过网格搜索或随机搜索等方法调整逻辑回归模型的超参数,如正则化强度 C,以找到最优参数组合。
  3. 特征选择与工程:基于特征的重要性分析,选择或构建更有预测力的特征。
  4. 模型评估指标:除了准确率之外,还可以考虑查准率(Precision)、查全率(Recall)、F1分数等其他评估指标,特别是对于类别不平衡的数据集。

下面是这些概念如何融入代码的示例:

from sklearn.model_selection import cross_val_score, GridSearchCV
from sklearn.metrics import classification_report# 使用交叉验证评估模型
cv_scores = cross_val_score(logreg, X, y, cv=5)  # 5折交叉验证
print("Cross-validation scores: ", cv_scores)
print("Mean cross-validation score: {:.2f}".format(np.mean(cv_scores)))# 超参数调优
param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100]}  # 设置要搜索的参数范围
grid_search = GridSearchCV(logreg, param_grid, cv=5)
grid_search.fit(X_train, y_train)# 输出最佳参数组合
print("Best parameters found: ", grid_search.best_params_)# 使用最佳参数重新训练模型
best_logreg = grid_search.best_estimator_
y_pred_best = best_logreg.predict(X_test)# 打印分类报告
report = classification_report(y_test, y_pred_best)
print("\nClassification Report:\n", report)

这段代码展示了如何使用5折交叉验证评估模型的稳定性和平均性能,以及如何通过GridSearchCV进行超参数调优来找到模型的最佳配置。最后,利用找到的最佳参数重新训练模型,并使用classification_report输出详细的分类评估指标,包括精确度、召回率、F1分数等,这有助于更全面地理解模型在不同类别上的表现。

😍😍 海量H5小游戏、微信小游戏、Web casualgame源码😍😍
😍😍试玩地址: https://www.bojiogame.sg😍😍
😍看上哪一款,需要源码的csdn私信我😍

————————————————

​最后我们放松一下眼睛
在这里插入图片描述

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

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

相关文章

C++进阶 继承

目录 继承的概念及定义 继承概念 继承定义 定义格式 继承关系和访问限定符 继承基类成员访问方式的变化 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 构造函数 拷贝构造函数 赋值运算符重载 析构函数 总结 继承与友元 继承与静态成员 浅谈复杂…

Scott Brinker:消除噪音越来越难?这是一个越来越有效的营销渠道

合作伙伴成为更有效的渠道 对于普通读者来说,我看好生态系统并不奇怪。我一直主张,平台生态系统可以解决不断变化、高度多样化的市场格局中的许多挑战。这也是我在HubSpot和公司的技术合作伙伴生态系统所关注的。 在本月早些时候的文章中,我…

SpringMVC源码深度解析(中)

接上一遍博客《SpringMVC源码深度解析(上)》继续聊。最后聊到了SpringMVC的九大组建的初始化,以 HandlerMapping为例,SpringMVC提供了三个实现了,分别是:BeanNameUrlHandlerMapping、RequestMappingHandlerMapping、RouterFunctio…

AI一站式科研写作利器:PaperPal

文章目录 在线编辑Word 插件 在线编辑 PaperPal是一款面向科研人员的写作工具,支持在线编辑以及Word插件。下面以在线编辑为例,详述PaperPal的润色功能。 进入网页后,点击【新建在线文档】,即可开启润色功能,界面如下…

《昇思25天学习打卡营第24天|基于 MindSpore 实现 BERT 对话情绪识别》

1. BERT 模型概述 BERT(Bidirectional Encoder Representations from Transformers)是一个预训练的语言表示模型,可以应用于多种自然语言处理任务,包括对话情绪识别。BERT 通过双向 Transformer 编码器,能同时考虑句子…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 图像物体的边界(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

word 设置目录中英文字母大写改为小写

选中目录右击“字体”,设置“小型大写字母”。

【Vue3】工程创建及目录说明

【Vue3】工程创建及目录说明 背景简介开发环境开发步骤及源码 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日…

【LeetCode】从中序与后序遍历序列构造二叉树

目录 一、题目二、解法完整代码 一、题目 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7], …

谷粒商城实战笔记-40-前端基础-Vue-计算属性、监听器、过滤器

文章目录 一,计算属性1,用途2,用法2.1 定义View2.2 声明计算属性 3,注意事项 二,监听器1. 使用 watch 监听属性的变化 三,过滤器1,定义局部过滤器2,定义全局过滤器3,使用…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(六)-无人机直接C2通信

目录 引言 5.4 直接C2通信 5.4.1 概述 5.4.2 A2X直接C2通信服务的授权策略 5.4.3 USS使用A2X直接C2通信服务的C2授权程序 5.4.4 直接C2通信建立程序 引言 3GPP TS 23.256 技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别…

bs4模块使用(一)

1. 安装BS4 pip install beautifulsoup4 pip install lxml2. 对象种类 bs4将html文档解析成一个树形结构,每个节点都是python对象,大概可分为下面四种: 2.1 Tag 后面再详细介绍,先介绍最重要的两个属性 name soup Beautiful…

数据结构——队列(链式结构)

一、队列链式结构定义 队列的链式存储结构是一种用链表实现的队列,它不像顺序存储结构那样需要预先分配固定大小的空间。链式存储结构的队列由节点组成,每个节点包括数据和指向下一个节点的指针。队列的链式存储结构可以动态地分配内存,更灵活地处理数据。在链式存储结构中…

【java SE语法篇】1.运算符

目录 1. 运算符和表达式2. 算数运算符3. 隐式转换4. 强制转换5. 自增自减运算符6. 赋值运算符7. 扩展运算符8. 关系运算符9. 逻辑运算符9.1 & 和 | 的使用:9.2 ^(异或)的使用:9.3 !(取反)的使用&#x…

监控易直播回放2407期:IT监控平台可视化运维

主播:监控易技术经理 刘美玲 大家好,现在是7月18号下午2点,欢迎大家来到本次的直播分享。今天,我们将深入探讨IT监控平台的可视化实现。在这个信息化时代,IT设备的稳定性对于业务的连续性起着至关重要的作用。而IT监控…

Unity入门——引擎窗口

主要内容 1.窗口布局 2.Hierarchy层级窗口 3.Scene场景窗口 窗口布局 右上角layout选项 层级和场景窗口 Scene和Hierarchy 场景窗口和层级窗口是息息相关的,层级窗口中看到的内容就是场景窗口中的显示对象。 Hierar层级窗口 我们可以在Hierarchy窗口中创建…

项目部署上线(跨域问题的处理)

前言: 项目想要上线,前提是肯定需要一台服务器 我下面使用的是腾讯服务器和宝塔Linux的管理工具来进行项目的部署上线 服务器配置(初始化)-CSDN博客 项目部署: 我原来那篇文章写了用nginx的原生部署,不过我觉得那…

数据闭环的核心-Auto-labeling方案分享

1. 简介 BEV算法的开发已经到了深水区,各家都投入了大量的精力去做bev的落地开发,其中一块最关键的就是如何高效的完成BEV的数据标注,无论是BEV 3D 目标,BEV 去高精地图或者是BEV Occupancy。 相比于车端的感知算法,…

exo 大模型算力共享;Llama3-70B是什么

目录 exo 大模型算力共享 exo框架的特点 如何使用exo框架 注意事项 结论 Llama3-70B是什么 一、基本信息 二、技术特点 三、性能与应用 四、未来发展 exo 大模型算力共享 exo框架的特点 异构支持:支持多种不同类型的设备,包括智能手机、平板电脑、笔记本电脑以及高…

java之log4j反序列化

1 审计思路 以Log4j漏洞审计为案例,谈一谈审计如何快速的锁定通用型漏洞 1.1 确定源码是否引用了漏洞所属的开源组件 该项目是一个maven项目,直接在Pom文件中搜索log4j的jar包及版本引用问题,如果该版本受影 响,进入下一步 1.2 寻找漏洞的入口 1.3 逐个排查入口是否有效…