机器学习与深度学习04-逻辑回归02
目录
- 前文回顾
- 6.正则化在逻辑回归中的作用
- 7.特征工程是什么
- 8.逻辑回归的预测结果如何
- 9.什么是ROC曲线和AUC值
- 10.如何处理类不平衡问题
- 11.什么是交叉验证
前文回顾
上一篇文章地址:链接
6.正则化在逻辑回归中的作用
逻辑回归中,正则化是一种用于控制模型复杂度的技术,它对模型的参数进行约束,以防止过拟合。正则化通过在损失函数中引入额外的正则化项来实现,这些正则化项对参数的大小进⾏惩罚,逻辑回归中常用的正则化⽅法包括L1正则化和L2正则化,它们的作用是:
L1正则化(Lasso正则化)
- 作用:L1正则化通过向损失函数添加参数的绝对值之和来惩罚模型中的大参数,从而促使一些参数变为零。这实现了特征选择,可以使模型更加稀疏,剔除不重要的特征,提高模型的泛化能力
- L1正则化项:L1正则化项的形式是 α ∑ j = 1 p ∣ β j ∣ \alpha \sum_{j = 1}^{p} |\beta_{j}| α∑j=1p∣βj∣,其中α是正则化参数, β j \beta_{j} βj是模型的参数。这个项在优化过程中导致一些参数 β j \beta_{j} βj变为零,从而进行特征选择
- 适用情况:L1正则化适用于高维数据集,或者当你怀疑只有少数几个特征对问题有重要影响时
L2正则化(Ridge正则化)
- 作用:L2正则化通过向损失函数添加参数的平方和来惩罚模型中的大参数,但不会使参数变为零,它只是压缩参数的值。L2正则化有助于减轻多重共线性问题,稳定模型的估计
- L2正则化项:L2正则化项的形式是 α ∑ j = 1 p β j 2 \alpha \sum_{j = 1}^{p} \beta_{j}^{2} α∑j=1pβj2,其中α是正则化参数, β j \beta_{j} βj是模型的参数
- 适用情况:L2正则化适用于多重共线性问题,或者当你认为所有特征都对问题有一定影响时,但不希望有过大的参数
总的来说,L1和L2正则化都有助于控制模型的复杂度,防止过拟合。它们的主要区别在于:
- L1 正则化倾向于产生稀疏模型,即一些参数变为零,实现了特征选择
- L2 正则化不会使参数变为零,而是对参数进行缩小,有助于减轻多重共线性问题
选择哪种正则化方法通常取决于数据的性质和问题的需求。在某些情况下,可以同时使用L1和L2正则化,称为弹性网络正则化,以综合两者的优点。正则化参数α的选择通常需要通过交叉验证等技术来确定
7.特征工程是什么
特征工程是机器学习和数据科学中的关键任务,它涉及选择、转换和创建特征,以便提高模型的性能和效果。
主要目标:将原始数据转化为机器学习模型可以理解和有效利用的特征表示形式,在逻辑回归以及其他机器学习模型中,特征工程非常重要,因为它直接影响模型的性能和泛化能力,特征工程包括以下几个方面:
- 特征选择:选择最相关和有用的特征,消除不相关的特征,以减少数据维度并提高模型的解释性。这有助于降低模型的复杂度,减少过拟合的风险
- 特征变换:对特征进行变换,使其更适合模型的假设。例如,对数变换、标准化、归一化等变换可以使数据更符合线性模型的假设
- 特征创建:通过组合、交叉或聚合现有特征来创建新的特征。这可以帮助模型捕获更复杂的关系和模式
- 处理缺失值:选择合适的方法来处理缺失值,如填充缺失值、删除包含缺失值的样本等
- 处理类别特征:将类别特征(离散型特征)进行编码,如独热编码、标签编码等,以便模型可以处理它们
在逻辑回归中,特征工程非常重要的原因包括:
- 影响模型性能:逻辑回归的性能很大程度上取决于输入特征的质量和相关性。好的特征工程可以提高模型的准确性和泛化能力
- 减少过拟合:精心设计的特征工程可以减少模型对训练数据的过拟合风险,从而提高模型对新数据的泛化能力
- 解释性:逻辑回归通常用于解释性建模,良好的特征工程可以增加模型的可解释性,帮助理解模型的决策依据
- 计算效率:精简的特征集合可以提高模型的计算效率,减少训练和推理时间
总之,特征工程是一个关键的环节,可以极大地影响逻辑回归模型的性能和实用性,在建立逻辑回归模型之前,务必仔细考虑和执行特征工程步骤,以确保模型能够从数据中学到有用的模式和关系
8.逻辑回归的预测结果如何
逻辑回归的预测结果是一个介于0和1之间的概率值,表示给定输入样本属于正类别的概率。具体来说,逻辑回归模型对于输入样本的预测结果可以通过以下步骤获得:
- 线性组合:首先,模型将输入样本的特征与对应的权重(系数)相乘,然后将它们相加,得到一个实数值。这个实数值表示了线性组合的结果
线性组合 = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β n x n 线性组合=\beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \cdots + \beta_{n}x_{n} 线性组合=β0+β1x1+β2x2+⋯+βnxn
其中, β 0 \beta_{0} β0是截距(偏置项), β 1 \beta_{1} β1, β 2 \beta_{2} β2,…, β n \beta_{n} βn是特征的权重(系数), x 1 , x 2 , ⋯ , x n x_{1},x_{2},\cdots,x_{n} x1,x2,⋯,xn是输入特征的值。 - 逻辑函数:然后,模型将线性组合的结果输入到逻辑函数(Sigmoid函数)中,将其映射到[0, 1]范围内的概率值:
预测概率 = 1 1 + e − ( β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β n x n ) 预测概率 = \frac{1}{1 + e^{-(\beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \cdots + \beta_{n}x_{n})}} 预测概率=1+e−(β0+β1x1+β2x2+⋯+βnxn)1
这个概率值表示输入样本属于正类别的概率,模型的系数(权重,coefficient) β 1 \beta_{1} β1, β 2 \beta_{2} β2,…, β n \beta_{n} βn表示了每个特征对于预测结果的影响程度。系数的正负和大小告诉了我们特征对于预测是正向还是负向的影响,以及影响的相对强度。正系数表示增加该特征的值将增加样本属于正类别的概率,负系数表示增加该特征的值将减少样本属于正类别的概率
模型的系数通常在训练过程中通过最大似然估计或其他优化算法来学习。系数的值可以提供有关特征的重要性和影响的信息,可以用于特征选择、可解释性分析和模型解释。系数的绝对值越大,表示对应特征的影响越显著 - 分类决策:通常,可以将预测概率与一个阈值(通常为0.5)进行比较,以进行最终的分类决策。如果预测概率大于或等于阈值,则将样本分类为正类别(1),否则分类为负类别(0)
9.什么是ROC曲线和AUC值
ROC曲线(Receiver Operating Characteristic Curve)和AUC值(Area Under the ROC Curve)是用于评估二分类模型性能的常用工具
- ROC曲线
- ROC曲线是一种图形化工具,用于可视化二分类模型的性能。它以不同的分类阈值为横轴,以真正例率(True Positive Rate,也称为召回率)为纵轴,绘制出模型在不同阈值下的性能表现
- ROC曲线的横轴表示模型的假正例率(False Positive Rate),计算方式为:假正例率 = 1 - 特异度(True Negative Rate)
- ROC曲线中的每个点对应于不同的分类阈值,根据阈值的变化,计算真正例率和假正例率,然后绘制出曲线。ROC曲线越靠近左上角,模型性能越好
- ROC曲线的优点是不受类别不平衡问题的影响,能够展示模型在各种不同阈值下的性能表现
- AUC值
- AUC是ROC曲线下方的面积,被称为“Area Under the ROC Curve”。AUC值的范围通常在0.5和1之间,其中0.5表示模型的性能等同于随机猜测,1表示完美分类器
- AUC值提供了一种单一的数值度量,用于总结ROC曲线的整体性能。通常情况下,AUC值越接近1,模型的性能越好
- AUC值有一个重要的性质:如果随机选择一个正类别样本和一个负类别样本,分类器的预测概率对正负样本的排序是正确的概率(即正类别样本的预测概率大于负类别样本的预测概率)
ROC曲线和AUC值是用于评估二分类模型性能的重要工具。它们不仅可以帮助你理解模型的表现,还可以用于比较不同模型的性能。当需要在不同分类阈值下权衡召回率和假正例率时,ROC曲线很有用。而AUC值则提供了一种简洁的方式来总结模型的性能,对于大多数分类问题都是一个有用的评估指标,ROC曲线和AUC值用来评估逻辑回归模型在二分类问题中的以下性能方面:
- 分类准确度:虽然ROC曲线和AUC值本身并不提供分类准确度的度量,但它们可以帮助你了解模型在不同阈值下的性能表现,从而帮助你调整阈值以满足特定的分类准确度要求。通过查看ROC曲线,你可以选择一个阈值,使模型在召回率和假正例率之间达到平衡,从而满足你的分类准确度需求
- 召回率和假正例率:ROC曲线以不同的分类阈值为横轴,分别显示了模型的召回率(True Positive Rate,也称为敏感性)和假正例率(False Positive Rate)。这对于评估模型的敏感性和特异性非常有用。高召回率表示模型能够识别出较多的正类别样本,而低假正例率表示模型能够有效控制误报
- 模型性能比较:ROC曲线和AUC值可用于比较不同模型的性能。如果一个模型的ROC曲线位于另一个模型的上方,并且具有更高的AUC值,那么通常可以认为它在分类任务中具有更好的性能
- 模型稳定性:通过观察ROC曲线,你可以评估模型在不同阈值下的性能稳定性。如果曲线变化不大,说明模型在不同分类阈值下都表现良好,具有稳定性
10.如何处理类不平衡问题
逻辑回归模型可能面临的一些问题包括:
- 类不平衡问题:当正类别和负类别的样本数量差异很大时,模型可能倾向于偏向于多数类,而忽略少数类。这会导致模型的性能不均衡,对少数类的识别能力较弱
- 多重共线性:当特征之间存在高度相关性时,逻辑回归模型的参数估计可能变得不稳定,导致难以解释的结果
- 过拟合:如果模型过于复杂或特征数量过多,逻辑回归模型可能过拟合训练数据,表现良好的泛化能力较差
- 特征选择:选择合适的特征对模型性能至关重要。错误的特征选择可能导致模型性能下降
- 阈值选择:逻辑回归模型的输出是一个概率值,需要选择合适的阈值来进行分类决策,不同的阈值可能导致不同的性能表现
以下是一些处理类不平衡问题的方法:
- 重采样:
- 过采样:增加少数类的样本数量,可以通过复制已有的少数类样本或生成合成样本来实现
- 欠采样:减少多数类的样本数量,可以通过删除一些多数类样本来实现
- 合成采样:结合过采样和欠采样策略,以平衡样本分布
- 使用不同的类权重:
- 通过设置类别权重参数,赋予不同类别的样本不同的权重,以便模型更关注少数类。在许多机器学习框架中,可以使用参数来调整类别权重。
- 生成合成样本:
- 利用生成对抗网络(GANs)或其他合成数据生成方法,生成合成的少数类样本,以平衡类别分布。
- 集成方法:
- 使用集成方法如随机森林、梯度提升树等,这些方法对类不平衡问题具有较强的鲁棒性
- 改变阈值:
- 调整分类阈值,以便更好地适应类别不平衡问题。通常情况下,减小阈值可以增加对少数类的识别能力
- 使用不同的评估指标:
- 使用类别不平衡问题友好的评估指标,如准确率、精确度、召回率、F1分数、ROC曲线和AUC值等,以更全面地评估模型性能
最佳的处理类不平衡问题的方法取决于具体情况和数据集的性质。通常,需要尝试不同的方法并评估它们的效果以找到最适合特定问题的方法
11.什么是交叉验证
交叉验证是一种评估机器学习模型性能的统计技术。它将数据集分成训练集和测试集的多个子集,然后多次训练和测试模型,以便更全面地评估模型在不同数据子集上的性能表现,交叉验证的主要目的是:
- 评估模型泛化能力:交叉验证可以帮助我们评估模型在未见过的数据上的性能,而不仅仅是在训练数据上的性能。这有助于检测模型是否过拟合或欠拟合
- 减少随机性:将数据集分成多个子集并多次训练模型,有助于减少随机性对性能评估的影响。这使得我们能够更可靠地评估模型的性能
在逻辑回归中使用交叉验证的原因包括:
- 模型选择:交叉验证可以帮助选择逻辑回归模型的超参数,如正则化参数(如L1或L2正则化的强度)。通过在不同的数据子集上进行验证,可以找到使模型性能最优的参数配置
- 性能评估:交叉验证提供了一个更准确的模型性能评估方法,以便在不同数据子集上评估模型的性能。这有助于识别模型是否具有一般化能力,以及是否需要进一步改进
- 处理数据不平衡:如果数据集中存在类不平衡问题,交叉验证可以确保在每个数据子集上都有足够的正类别和负类别样本,从而更准确地评估模型的性能。
- 可解释性:逻辑回归通常用于解释性建模,而交叉验证可以帮助确定哪些特征对模型性能具有重要影响,从而增强了模型的可解释性
常见的交叉验证方法包括k折交叉验证(k - fold cross - validation)、留一交叉验证(leave - one - out cross - validation, LOOCV)等。k折交叉验证将数据集分成k个子集,其中k - 1个子集用于训练,剩余的1个子集用于测试,这一过程重复k次,每个子集都有机会充当测试集。最后,计算k次测试的平均性能来评估模型。交叉验证通常是在机器学习中评估模型性能的重要步骤,有助于更可靠地了解模型的表现而k折交叉验证用于评估机器学习模型的性能。它将数据集分成k个近似相等的子集(通常是5或10),然后进行k次模型训练和性能评估,每次选择一个子集作为验证集,其余子集用于训练模型。这个过程的目标是确保每个子集都充当过验证集,以便全面评估模型的性能
下集预告:决策树
相关文章:
机器学习与深度学习04-逻辑回归02
目录 前文回顾6.正则化在逻辑回归中的作用7.特征工程是什么8.逻辑回归的预测结果如何9.什么是ROC曲线和AUC值10.如何处理类不平衡问题11.什么是交叉验证 前文回顾 上一篇文章地址:链接 6.正则化在逻辑回归中的作用 逻辑回归中,正则化是一种用于控制模…...
CQF预备知识:Python相关库 -- NumPy 基础知识 - 通用函数
文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。 通用函数 另请参阅 通用函数(ufunc) 通用函数(或简称 ufunc)是一种对 ndarrays 进行逐元素操…...

基于ELK的分布式日志实时分析与可视化系统设计
目录 一、ELK平台介绍 1.ELK概述 2.Elasticsearch 3.Logstash 4.Kibana 二、部署ES群集 1.资源清单 2.基本配置 3.安装Elasticsearch(elk1上、elk2上、elk3上) 4.安装logstash(elk1上) 5.Filebeat 6.安装Kibana&#x…...
@Async 注解 走的是主线程 还是子线程呢
Asyncz注解所在的包 package org.springframework.scheduling.annotation; Async 注解在Spring框架中用于标记一个方法为异步方法。当这个方法被调用时,它不会阻塞调用线程,而是会在一个单独的线程中执行。因此,Async 注解走的是子线程&…...
前端面经 React 组件常见的声明方式
react类组件和函数式组件 函数组件返回值的内容就是要渲染的内容 函数组件使用useState更新状态 ,使用类中变量更新 常见hook 官方 : useEffect 处理副作用,请求APIuseState 更新UIuseLayout 同步更新,会阻塞进程,…...

酒店管理系统设计与实现
本科毕业设计(论文) 设计(论文)题目 酒店管理系统设计与实现 学生姓名 学生学号 所在学院 专业班级 校内指导教师 李建 企业指导教师 毕业设计(论文)真实性承诺及声明 学生对毕业设计(论文)真实性承诺 本人郑重声明:所提交的毕业设计(论文)作品是本人在指导教师的指…...

OpenCV---pointPolygonTest
一、基本概念与用途 pointPolygonTest 是 OpenCV 中用于判断点与多边形关系的重要函数,常用于: 目标检测:判断像素点是否属于检测到的轮廓区域碰撞检测:检测物体是否重叠图像分割:确定点是否在分割区域内几何分析&am…...

Qt 的简单示例 -- 地址簿
这个工程里有两个窗口,都是QWidget派生的窗口 主窗口: 1. 运用了布局,按钮控件,单行编辑框,富文本编辑框等窗口部件; 2. 运用了 QMap 类; 3. 实现了点击按钮弹出子窗口的功能,这里子…...
Linux 下 C 语言实现工厂模式
Linux 下 C 语言实现工厂模式:设计理念与实战 🧠 一、工厂模式简介什么是工厂模式?C 语言实现设计模式的挑战 🏗️ 二、实现简单工厂模式(Simple Factory)1. 定义传感器接口(device.h࿰…...

什么是DevOps的核心目标?它如何解决传统开发与运维之间的冲突?
在当今数字化转型加速的时代,DevOps 已成为软件开发领域备受瞩目的明星理念。今天,本文将聚焦于 DevOps 的核心目标,并深入探讨它如何巧妙化解传统开发与运维之间的冲突,为大家揭开 DevOps 的神秘面纱并分享实用经验。本次介绍的与…...
RocketMQ 死信队列(DLQ)实战:原理 + 开发 + 运维 + 架构应用指南
🚀RocketMQ 死信队列(DLQ)实战:原理 开发 运维 架构应用指南 第一章:什么是死信队列(DLQ)? 1.1 死信队列定义 在 RocketMQ 中,死信队列(Dead Letter Que…...

Android studio 查看aar源码出现/* compiled code */
如图查看aar源码时看不到具体实现,在排除是sdk版本导致的问题后,下面说解决方法 打开设置,找到插件 输入decompiler 搜索 这个是自带的反编译工具,启用就好了...

用HTML5+JavaScript实现汉字转拼音工具
用HTML5JavaScript实现汉字转拼音工具 前一篇博文(https://blog.csdn.net/cnds123/article/details/148067680)提到,当需要将拼音添加到汉字上面时,用python实现比HTML5JavaScript实现繁琐。在这篇博文中用HTML5JavaScript实现汉…...

基于Java,SpringBoot,Vue,UniAPP医院预约挂号买药就诊病例微信小程序系统设计
摘要 随着医疗信息化的不断推进以及“互联网医疗”模式的广泛普及,传统医院挂号流程中存在的排队时间长、资源分配不均等问题日益凸显,急需通过数字化手段加以解决。本研究设计并实现了一套基于Java、SpringBoot、Vue与UniAPP技术栈的医院预约挂号微信小…...

ONNX模型的动态和静态量化
引言 通常我们将模型转换为onnx格式之后,模型的体积可能比较大,这样在某些场景下就无法适用。最近想在移动端部署语音识别、合成模型,但是目前的效果较好的模型动辄几个G,于是便想着将模型压缩一下。本文探索了两种压缩方法&…...
PHP 垃圾回收高级特性
PHP 垃圾回收高级特性 1. 循环引用与内存泄漏 单纯的引用计数在遇到循环引用时会导致内存泄漏,主要原因是引用计数无法正确识别那些仅通过循环引用相互关联但实际上已经不可达的对象。 1.1 引用计数的基本原理 引用计数是一种内存管理机制,通过维护每…...
OpenFeign vs MQ:微服务通信如何选型?详解同步与异步的适用场景
OpenFeign vs MQ:微服务通信如何选型?详解同步与异步的适用场景 引言 在微服务架构中,服务之间的通信方式直接影响系统的性能、可靠性和可维护性。常见的通信方式有 OpenFeign(同步HTTP调用) 和 MQ(消息队…...
如何用命令行将 PDF 表格转换为 HTML 表格
本文将介绍如何使用命令行将可填写的 PDF 表单转换为 HTML 表单。只需几行代码即可完成转换。将可填写的 PDF 表单转换为 HTML 表单后,你可以在网页上显示这些表单。本指南使用 FormVu 来演示转换过程。 使用命令行将可填写 PDF 表单转换为 HTML 表单 你可以通过命…...
html5的响应式布局的方法示例详解
以下是HTML5实现响应式布局的5种核心方法及代码示例: 1. 媒体查询(核心方案) /* 默认样式(移动优先) */ .container {padding: 15px; }/* 中等屏幕(平板) */ @media (min-width: 768px) {.container {padding: 30px;max-width: 720px;} }/* 大屏幕(桌面) */ @media …...

如何用Python抓取Google Scholar
文章目录 [TOC](文章目录) 前言一、为什么要抓取Google Scholar?二、Google Scholar 抓取需要什么三、为什么代理对于稳定的抓取是必要的四、一步一步谷歌学者抓取教程4.1. 分页和循环4.2. 运行脚本 五、完整的Google Scholar抓取代码六、抓取Google Scholar的高级提…...
电脑革命家测试版:硬件检测,6MB 轻量无广告 清理垃圾 + 禁用系统更新
各位电脑小白和大神们,我跟你们说啊!有个超牛的东西叫电脑革命家测试版,这是吾爱破解论坛的开发者搞出来的免费无广告系统工具集合,主打硬件检测和系统优化,就像是鲁大师这些软件的平替。下面我给你们唠唠它的核心功能…...

Wireshark对usb设备进行抓包找不到USBPcap接口的解决方案
引言 近日工作需要针对usb设备进行抓包,但按照wireshark安装程序流程一步步走,即使勾选了安装USBPcap安装完成后开启wireshark依然不显示USBPcap接口,随设法进行解决。 最终能够正常显示USBPcap接口并能够正常使用进行抓包 解决方案&#x…...
题目 3298: 蓝桥杯2024年第十五届决赛真题-兔子集结
题目 3298: 蓝桥杯2024年第十五届决赛真题-兔子集结 时间限制: 2s 内存限制: 192MB 提交: 2499 解决: 309 题目描述 在森林幽静的一隅,有一村落居住着 n 只兔子。 某个月光皎洁的夜晚,这些兔子列成一队,准备开始一场集结跳跃活动。村落中…...
Unity开发之Webgl自动更新程序包
之前让客户端更新webgl程序是在程序里写版本号然后和服务器对比,不同就调用 window.location.reload(true);之前做的客户端都是给企业用,用户数少看不出来啥问题。后来自己开发一个小网站,用户数量还是挺多,然后就会遇到各种各样的…...
深入理解设计模式之状态模式
深入理解设计模式之:状态模式(State Pattern) 一、什么是状态模式? 状态模式(State Pattern)是一种行为型设计模式。它允许一个对象在其内部状态发生改变时,改变其行为(即表现出不…...

Socket 编程 UDP
目录 1. UDP网络编程 1.1 echo server 1.1.1 接口 1.1.1.1 创建套接字 1.1.1.2 绑定 1.1.1.3 bzero 1.1.1.4 htons(主机序列转网络序列) 1.1.1.5 inet_addr(主机序列IP转网络序列IP) 1.1.1.6 recvfrom(让服务…...

Jenkins实践(8):服务器A通过SSH调用服务器B执行Python自动化脚本
Jenkins实践(8):服务器A通过SSH调用服务器B执行Python自动化脚本 1、需求: 1、Jenkins服务器在74上,Python脚本在196服务器上 2、需要在服务器74的Jenkins上调用196上的脚本执行Python自动化测试 2、操作步骤 第一步:Linux Centos7配置SSH免密登录 Linux Centos7配置S…...
Spring AI系列之Spring AI 集成 ChromaDB 向量数据库
1. 概述 在传统数据库中,我们通常依赖精确的关键词或基本的模式匹配来实现搜索功能。虽然这种方法对于简单的应用程序已经足够,但它无法真正理解自然语言查询背后的含义和上下文。 向量存储解决了这一限制,它通过将数据以数值向量的形式存储…...

lua的注意事项2
总之,下面的返回值不是10,a,b 而且...
主流电商平台的反爬机制解析
随着数据成为商业决策的重要资源,越来越多企业和开发者希望通过技术手段获取电商平台的公开信息,用于竞品分析、价格监控、市场调研等。然而,主流电商平台如京东、淘宝(含天猫)等为了保护数据安全和用户体验࿰…...