机器学习与深度学习04-逻辑回归02

news2025/6/2 0:13:39

目录

    • 前文回顾
    • 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.特征工程是什么

特征工程是机器学习和数据科学中的关键任务,它涉及选择、转换和创建特征,以便提高模型的性能和效果。
主要目标:将原始数据转化为机器学习模型可以理解和有效利用的特征表示形式,在逻辑回归以及其他机器学习模型中,特征工程非常重要,因为它直接影响模型的性能和泛化能力,特征工程包括以下几个方面:

  1. 特征选择:选择最相关和有用的特征,消除不相关的特征,以减少数据维度并提高模型的解释性。这有助于降低模型的复杂度,减少过拟合的风险
  2. 特征变换:对特征进行变换,使其更适合模型的假设。例如,对数变换、标准化、归一化等变换可以使数据更符合线性模型的假设
  3. 特征创建:通过组合、交叉或聚合现有特征来创建新的特征。这可以帮助模型捕获更复杂的关系和模式
  4. 处理缺失值:选择合适的方法来处理缺失值,如填充缺失值、删除包含缺失值的样本等
  5. 处理类别特征:将类别特征(离散型特征)进行编码,如独热编码、标签编码等,以便模型可以处理它们

在逻辑回归中,特征工程非常重要的原因包括:

  • 影响模型性能:逻辑回归的性能很大程度上取决于输入特征的质量和相关性。好的特征工程可以提高模型的准确性和泛化能力
  • 减少过拟合:精心设计的特征工程可以减少模型对训练数据的过拟合风险,从而提高模型对新数据的泛化能力
  • 解释性:逻辑回归通常用于解释性建模,良好的特征工程可以增加模型的可解释性,帮助理解模型的决策依据
  • 计算效率:精简的特征集合可以提高模型的计算效率,减少训练和推理时间

总之,特征工程是一个关键的环节,可以极大地影响逻辑回归模型的性能和实用性,在建立逻辑回归模型之前,务必仔细考虑和执行特征工程步骤,以确保模型能够从数据中学到有用的模式和关系

8.逻辑回归的预测结果如何

逻辑回归的预测结果是一个介于0和1之间的概率值,表示给定输入样本属于正类别的概率。具体来说,逻辑回归模型对于输入样本的预测结果可以通过以下步骤获得:

  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是输入特征的值。
  2. 逻辑函数:然后,模型将线性组合的结果输入到逻辑函数(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表示了每个特征对于预测结果的影响程度。系数的正负和大小告诉了我们特征对于预测是正向还是负向的影响,以及影响的相对强度。正系数表示增加该特征的值将增加样本属于正类别的概率,负系数表示增加该特征的值将减少样本属于正类别的概率
    模型的系数通常在训练过程中通过最大似然估计或其他优化算法来学习。系数的值可以提供有关特征的重要性和影响的信息,可以用于特征选择、可解释性分析和模型解释。系数的绝对值越大,表示对应特征的影响越显著
  3. 分类决策:通常,可以将预测概率与一个阈值(通常为0.5)进行比较,以进行最终的分类决策。如果预测概率大于或等于阈值,则将样本分类为正类别(1),否则分类为负类别(0)

9.什么是ROC曲线和AUC值

ROC曲线(Receiver Operating Characteristic Curve)和AUC值(Area Under the ROC Curve)是用于评估二分类模型性能的常用工具

  1. ROC曲线
    • ROC曲线是一种图形化工具,用于可视化二分类模型的性能。它以不同的分类阈值为横轴,以真正例率(True Positive Rate,也称为召回率)为纵轴,绘制出模型在不同阈值下的性能表现
    • ROC曲线的横轴表示模型的假正例率(False Positive Rate),计算方式为:假正例率 = 1 - 特异度(True Negative Rate)
    • ROC曲线中的每个点对应于不同的分类阈值,根据阈值的变化,计算真正例率和假正例率,然后绘制出曲线。ROC曲线越靠近左上角,模型性能越好
    • ROC曲线的优点是不受类别不平衡问题的影响,能够展示模型在各种不同阈值下的性能表现
  2. 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值用来评估逻辑回归模型在二分类问题中的以下性能方面:

  1. 分类准确度:虽然ROC曲线和AUC值本身并不提供分类准确度的度量,但它们可以帮助你了解模型在不同阈值下的性能表现,从而帮助你调整阈值以满足特定的分类准确度要求。通过查看ROC曲线,你可以选择一个阈值,使模型在召回率和假正例率之间达到平衡,从而满足你的分类准确度需求
  2. 召回率和假正例率:ROC曲线以不同的分类阈值为横轴,分别显示了模型的召回率(True Positive Rate,也称为敏感性)和假正例率(False Positive Rate)。这对于评估模型的敏感性和特异性非常有用。高召回率表示模型能够识别出较多的正类别样本,而低假正例率表示模型能够有效控制误报
  3. 模型性能比较:ROC曲线和AUC值可用于比较不同模型的性能。如果一个模型的ROC曲线位于另一个模型的上方,并且具有更高的AUC值,那么通常可以认为它在分类任务中具有更好的性能
  4. 模型稳定性:通过观察ROC曲线,你可以评估模型在不同阈值下的性能稳定性。如果曲线变化不大,说明模型在不同分类阈值下都表现良好,具有稳定性

10.如何处理类不平衡问题

逻辑回归模型可能面临的一些问题包括:

  1. 类不平衡问题:当正类别和负类别的样本数量差异很大时,模型可能倾向于偏向于多数类,而忽略少数类。这会导致模型的性能不均衡,对少数类的识别能力较弱
  2. 多重共线性:当特征之间存在高度相关性时,逻辑回归模型的参数估计可能变得不稳定,导致难以解释的结果
  3. 过拟合:如果模型过于复杂或特征数量过多,逻辑回归模型可能过拟合训练数据,表现良好的泛化能力较差
  4. 特征选择:选择合适的特征对模型性能至关重要。错误的特征选择可能导致模型性能下降
  5. 阈值选择:逻辑回归模型的输出是一个概率值,需要选择合适的阈值来进行分类决策,不同的阈值可能导致不同的性能表现

以下是一些处理类不平衡问题的方法:

  1. 重采样
    • 过采样:增加少数类的样本数量,可以通过复制已有的少数类样本或生成合成样本来实现
    • 欠采样:减少多数类的样本数量,可以通过删除一些多数类样本来实现
    • 合成采样:结合过采样和欠采样策略,以平衡样本分布
  2. 使用不同的类权重
    • 通过设置类别权重参数,赋予不同类别的样本不同的权重,以便模型更关注少数类。在许多机器学习框架中,可以使用参数来调整类别权重。
  3. 生成合成样本
    • 利用生成对抗网络(GANs)或其他合成数据生成方法,生成合成的少数类样本,以平衡类别分布。
  4. 集成方法
    • 使用集成方法如随机森林、梯度提升树等,这些方法对类不平衡问题具有较强的鲁棒性
  5. 改变阈值
    • 调整分类阈值,以便更好地适应类别不平衡问题。通常情况下,减小阈值可以增加对少数类的识别能力
  6. 使用不同的评估指标
    • 使用类别不平衡问题友好的评估指标,如准确率、精确度、召回率、F1分数、ROC曲线和AUC值等,以更全面地评估模型性能

最佳的处理类不平衡问题的方法取决于具体情况和数据集的性质。通常,需要尝试不同的方法并评估它们的效果以找到最适合特定问题的方法

11.什么是交叉验证

交叉验证是一种评估机器学习模型性能的统计技术。它将数据集分成训练集和测试集的多个子集,然后多次训练和测试模型,以便更全面地评估模型在不同数据子集上的性能表现,交叉验证的主要目的是:

  1. 评估模型泛化能力:交叉验证可以帮助我们评估模型在未见过的数据上的性能,而不仅仅是在训练数据上的性能。这有助于检测模型是否过拟合或欠拟合
  2. 减少随机性:将数据集分成多个子集并多次训练模型,有助于减少随机性对性能评估的影响。这使得我们能够更可靠地评估模型的性能

在逻辑回归中使用交叉验证的原因包括:

  1. 模型选择:交叉验证可以帮助选择逻辑回归模型的超参数,如正则化参数(如L1或L2正则化的强度)。通过在不同的数据子集上进行验证,可以找到使模型性能最优的参数配置
  2. 性能评估:交叉验证提供了一个更准确的模型性能评估方法,以便在不同数据子集上评估模型的性能。这有助于识别模型是否具有一般化能力,以及是否需要进一步改进
  3. 处理数据不平衡:如果数据集中存在类不平衡问题,交叉验证可以确保在每个数据子集上都有足够的正类别和负类别样本,从而更准确地评估模型的性能。
  4. 可解释性:逻辑回归通常用于解释性建模,而交叉验证可以帮助确定哪些特征对模型性能具有重要影响,从而增强了模型的可解释性

常见的交叉验证方法包括k折交叉验证(k - fold cross - validation)、留一交叉验证(leave - one - out cross - validation, LOOCV)等。k折交叉验证将数据集分成k个子集,其中k - 1个子集用于训练,剩余的1个子集用于测试,这一过程重复k次,每个子集都有机会充当测试集。最后,计算k次测试的平均性能来评估模型。交叉验证通常是在机器学习中评估模型性能的重要步骤,有助于更可靠地了解模型的表现而k折交叉验证用于评估机器学习模型的性能。它将数据集分成k个近似相等的子集(通常是5或10),然后进行k次模型训练和性能评估,每次选择一个子集作为验证集,其余子集用于训练模型。这个过程的目标是确保每个子集都充当过验证集,以便全面评估模型的性能

下集预告:决策树

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

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

相关文章

基于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…

酒店管理系统设计与实现

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

OpenCV---pointPolygonTest

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

Qt 的简单示例 -- 地址簿

这个工程里有两个窗口,都是QWidget派生的窗口 主窗口: 1. 运用了布局,按钮控件,单行编辑框,富文本编辑框等窗口部件; 2. 运用了 QMap 类; 3. 实现了点击按钮弹出子窗口的功能,这里子…

什么是DevOps的核心目标?它如何解决传统开发与运维之间的冲突?​

在当今数字化转型加速的时代,DevOps 已成为软件开发领域备受瞩目的明星理念。今天,本文将聚焦于 DevOps 的核心目标,并深入探讨它如何巧妙化解传统开发与运维之间的冲突,为大家揭开 DevOps 的神秘面纱并分享实用经验。本次介绍的与…

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,于是便想着将模型压缩一下。本文探索了两种压缩方法&…

如何用Python抓取Google Scholar

文章目录 [TOC](文章目录) 前言一、为什么要抓取Google Scholar?二、Google Scholar 抓取需要什么三、为什么代理对于稳定的抓取是必要的四、一步一步谷歌学者抓取教程4.1. 分页和循环4.2. 运行脚本 五、完整的Google Scholar抓取代码六、抓取Google Scholar的高级提…

Wireshark对usb设备进行抓包找不到USBPcap接口的解决方案

引言 近日工作需要针对usb设备进行抓包,但按照wireshark安装程序流程一步步走,即使勾选了安装USBPcap安装完成后开启wireshark依然不显示USBPcap接口,随设法进行解决。 最终能够正常显示USBPcap接口并能够正常使用进行抓包 解决方案&#x…

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…

lua的注意事项2

总之,下面的返回值不是10,a,b 而且

前端八股之HTML

前端秘籍-HTML篇 1. src和href的区别 src 用于替换当前元素,href 用于在当前文档和引用资源之间确立联系。 (1)src src 是 source 的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置&#xff1…

鲲鹏Arm+麒麟V10,国产化信创 K8s 离线部署保姆级教程

Rainbond V6 国产化部署教程,针对鲲鹏 CPU 麒麟 V10 的离线环境,手把手教你从环境准备到应用上线,所有依赖包提前打包好,步骤写成傻瓜式操作指南。别说技术团队了,照着文档一步步来,让你领导来都能独立完成…

【C++ Qt】认识Qt、Qt 项目搭建流程(图文并茂、通俗易懂)

每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论​: 本章将开启Qt的学习,Qt是一个较为古老但仍然在GUI图形化界面设计中有着举足轻重的地位,因为它适合嵌入式和多种平台而被广泛使用…

IoT/HCIP实验-1/物联网开发平台实验Part2(HCIP-IoT实验手册版)

文章目录 概述产品和设备实例的产品和设备产品和设备的关联单个产品有多个设备为产品创建多个设备产品模型和物模型设备影子(远程代理) 新建产品模型定义编解码插件开发编解码插件工作原理消息类型与二进制码流添加消息(数据上报消息&#xf…

Replacing iptables with eBPF in Kubernetes with Cilium

source: https://archive.fosdem.org/2020/schedule/event/replacing_iptables_with_ebpf/attachments/slides/3622/export/events/attachments/replacing_iptables_with_ebpf/slides/3622/Cilium_FOSDEM_2020.pdf 使用Cilium,结合eBPF、Envoy、Istio和Hubble等技术…

数学建模之最短路径问题

1 问题的提出 这个是我们的所要写的题目,我们要用LINGO编程进行编写这个题目,那么就是需要进行思考这个怎么进行构建这个问题的模型 首先起点,中间点,终点我们要对这个进行设计 2 三个点的设计 起点的设计 起点就是我们进去&am…