逻辑回归及逻辑回归的评估指标

news2025/1/10 21:17:59

一、逻辑回归介绍

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。

1.逻辑回归的应用场景
  • 广告点击率
  • 是否为垃圾邮件
  • 是否患病
  • 金融诈骗
  • 虚假账号

这些例子都是属于两个类别之间的判断。简单来说,逻辑回归就是解决二分类问题的利器。

2.逻辑回归的原理
  1. 定义逻辑函数:逻辑回归使用逻辑函数(sigmoid函数)将线性回归模型的输出转换为一个概率值。逻辑函数的定义如下:
    s i g m o i d ( z ) = 1 / ( 1 + e x p ( − z ) ) sigmoid(z) = 1 / (1 + exp(-z)) sigmoid(z)=1/(1+exp(z))
    其中,z是线性回归模型的输出,exp()是自然指数函数。

  2. 构建线性回归模型:假设有一个包含n个特征的样本x,对应的特征权重为w,截距项为b。线性回归模型的输出为:
    z = w 0 x 0 + w 1 x 1 + . . . + w n x n + b z = w₀x₀ + w₁x₁ + ... + wₙxₙ + b z=w0x0+w1x1+...+wnxn+b
    其中,x₀为常数项,取值为1。

  3. 应用逻辑函数:将线性回归模型的输出z带入逻辑函数中,得到样本属于某个类别的概率p。p的取值范围在0到1之间。
    p = s i g m o i d ( z ) = 1 / ( 1 + e x p ( − z ) ) p = sigmoid(z) = 1 / (1 + exp(-z)) p=sigmoid(z)=1/(1+exp(z))

  4. 设置阈值:为了进行分类,需要将概率值p转化为二分类的结果。通常,可以设置一个阈值,如0.5。当p大于等于0.5时,将样本预测为正类(1),否则预测为负类(0)。

  5. 模型训练与参数估计:使用训练数据集,通过最大似然估计或梯度下降等优化方法,估计模型的参数w和b,使得模型对训练数据的预测与实际标签尽可能一致。

二、逻辑回归的损失及优化

1.损失

在逻辑回归中,常用的损失函数是二元交叉熵损失函数(Binary Cross-Entropy Loss),也称为对数损失函数(Log Loss)。

对于二元分类问题,给定一个样本的真实标签y(0或1)和逻辑回归模型的预测概率p,二元交叉熵损失函数可以定义为:
L ( y , p ) = − [ y ∗ l o g ( p ) + ( 1 − y ) ∗ l o g ( 1 − p ) ] L(y, p) = -[y * log(p) + (1 - y) * log(1 - p)] L(y,p)=[ylog(p)+(1y)log(1p)]
其中,y是样本的真实标签,p是逻辑回归模型预测样本属于正例(类别1)的概率。

无论何时,我们都希望损失函数值,越小越好

  • 当y=1时,我们希望p值越大越好
  • 当y=0时,我们希望p值越小越好

对于逻辑回归问题,完整的损失函数是将所有训练样本的二元交叉熵损失函数的平均值或总和。

假设有m个训练样本,每个样本的真实标签为yᵢ(0或1),逻辑回归模型的预测概率为pᵢ。那么完整的损失函数可以定义为:
L ( w , b ) = ( 1 / m ) ∗ Σ [ − y i ∗ l o g ( p i ) − ( 1 − y i ) ∗ l o g ( 1 − p i ) ] L(w, b) = (1/m) * Σ[-yᵢ * log(pᵢ) - (1 - yᵢ) * log(1 - pᵢ)] L(w,b)=(1/m)Σ[yilog(pi)(1yi)log(1pi)]
其中,w是特征权重向量,b是截距项。

2.优化

同样使用梯度下降算法,去减少损失函数的值。这样去更新逻辑回归前面对应算法的权重参数,提升原本属于1类别的概率,降低原本是0类别的概率。

三、逻辑回归API

  • sklearn.linear_model.LogisticRegression(solver=“liblinear”,penalty=“l2”,C=1.0)

    • solver可选参数:(“liblinear”,“sag”,“saga”,“newton-cg”,“lbfgs”)
      • 默认:”liblinear“;用于优化问题的算法。
      • 对于小数据集来说,"liblinear"是个不错的选择,而”sag“和”saga“对于大型数据集会更快。
      • 对于多分类问题,只有”newton-cg“,”sag“,”saga“和”lbfgs“可以处理多项损失;”liblinear“仅限于二分类问题。
    • penalty:正则化种类
    • C:正则化力度

    默认将类别数量少的当作正例。

    LogisticRegression方法相当于SGDClassifier(loss=“log”,penalty""),SGDClassifier实现了一个普通的随机梯度下降算法(SG),而使用LogisticRegression(实现了SAG)

四、逻辑回归的评估指标

  1. 准确率(Accuracy):准确率是最常见的评估指标,表示模型预测正确的样本数与总样本数之比。
  2. 精确率(Precision):精确率衡量模型在所有预测为正例的样本中,真正例的比例。
  3. 召回率(Recall):召回率衡量模型在所有真实正例中,正确预测为正例的比例。
  4. F1分数(F1 Score):F1分数是精确率和召回率的调和平均值,综合考虑了两者的性能。

这些评估指标可以帮助我们全面评估逻辑回归模型的性能。准确率衡量了整体预测的准确性,精确率和召回率则关注了模型在正例预测和真实正例之间的匹配情况。F1分数综合考虑了精确率和召回率,适用于平衡精确率和召回率的情况。

除了上述指标,还可以考虑使用混淆矩阵、ROC曲线和AUC(Area Under the Curve)等指标来评估逻辑回归模型的性能,具体选择哪种指标取决于具体问题和需求。

五、混淆矩阵

1.混淆矩阵

在分类任务下,预测结果与真实结果之间存在四种不同的组合,构成混淆矩阵(适用于多分类)

在这里插入图片描述

由上图可以看出,当预测结果与真实结果一样时,才是真的;预测结果与真实结果不一致时,是伪

2.精确率(Precision)与召回率(Recall)
  • 精确率(Precision):精确率衡量模型在所有预测为正例的样本中,真正例的比例。 精确率可以计算为:
    P r e c i s i o n = T P / ( T P + F P ) Precision = TP / (TP + FP) Precision=TP/(TP+FP)

  • 召回率(Recall):召回率衡量模型在所有真实正例中,正确预测为正例的比例。召回率可以计算为:
    R e c a l l = T P / ( T P + F N ) Recall = TP / (TP + FN) Recall=TP/(TP+FN)

3.其他分类评估方法
  • F1分数(F1 Score):F1分数是精确率和召回率的调和平均值,综合考虑了两者的性能。F1分数可以计算为:

F 1 S c o r e = 2 ∗ ( P r e c i s i o n ∗ R e c a l l ) / ( P r e c i s i o n + R e c a l l ) F1 Score = 2 * (Precision * Recall) / (Precision + Recall) F1Score=2(PrecisionRecall)/(Precision+Recall)

4.分类评估API
  • sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None)

    • y_true:真实目标值
    • y_pred:预测的目标值
    • labels:指定类别对应的数字
    • target_names:目标类别名称
    • return:每个类别精确率与召回率
# 5.精确率\召回率指标评价
ret = classification_report(y_true=y_test,y_pred=y_pre,labels=(2,4),target_names=("良性","恶性"))
print(ret)
5.如何衡量样本不均衡下的评估?

假设这样一个情况,如果有99个样本癌症,1个样本非癌症,不管怎样我全都预测正例(默认癌症为正例),准确率就为99%。但是这样效果并不好,会有一个误诊的,这属于很严重的医学事故。这就是样本不均衡下的评估问题。

  • 怎样判断样本是否均衡?

    在二分类问题中,若两个分类的比例大于4:1,则认为这个样本不均衡。

    在样本不均衡的情况下,就需要ROC曲线和AUC指标来进行评估

六、ROC曲线与AUC指标

1.TPR与FPR
  • TPR=TP/(TP+FN)
    • 所有真实类别为1的样本中,预测类别为1的比例
  • FPR=FP/(FP+TN)
    • 所有真实类别为0的样本中,预测类别为1的比例
2.ROC曲线

在这里插入图片描述

  • ROC(Receiver Operating Characteristic)曲线是用于评估二分类模型性能的一种常用工具。它通过绘制分类器在不同阈值下的真正例率(True Positive Rate,TPR)与假正例率(False Positive Rate,FPR)之间的关系来展示模型在正例和反例之间的权衡。

  • ROC曲线的横轴是FPR,纵轴是TPR。在绘制ROC曲线时,我们通过改变分类器的阈值来计算不同情况下的TPR和FPR。

  • 理想情况下,一个性能良好的分类器的ROC曲线应该尽可能地靠近左上角,即TPR接近1且FPR接近0。这表示分类器在最小化假正例的同时,能够最大化真正例的分类。对角线上的点(FPR = TPR)代表了随机猜测的分类器。

3.AUC指标
  • AUC(Area Under the Curve)是ROC曲线下的面积,是一种常用的评估指标,用于度量二分类模型的性能。AUC值的范围在0到1之间,值越接近1表示分类器的性能越好值越接近0.5表示分类器的性能越接近于随机猜测
  • 当AUC值接近1时,说明模型能够很好地将正样本排在负样本之前;当AUC值接近0.5时,说明模型的性能等同于随机猜测;当AUC值小于0.5时,说明模型的性能较差,甚至比随机猜测还要差。
  • AUC作为一种综合评估指标,相对于简单的准确率或精确率等指标,能够更全面地反映分类器的性能,尤其在类别不平衡的情况下更为有效它不受分类阈值的影响,能够对分类器在不同阈值下的性能进行比较和评估。
4.AUC计算API
  • from sklearn.metrics import roc_auc_score

    • sklearn.metrics.roc_auc_score(y_true,y_score)
      • 计算ROC曲线面积,即AUC值
      • y_true:每个样本的真实类别,必须为0(反例),1(正例)标记
      • y_score:预测得分,可以是正类的估计概率、置信值或者分类器方法的返回值
  • AUC只能用来评价二分类

  • AUC非常适合评价样本不均衡中的分类器性能

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

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

相关文章

【腾讯云FinOps Crane 集训营】快速搭建一个 Kubernetes+Crane 环境,以及如何基于 Crane 优化你的集群和应用初体验

文章目录 一、活动介绍二、环境搭建三、安装本地的 Kind 集群和 Crane 组件四、界面截图五、主要功能六、整体架构七、Crane的优势八、总结参考文献 一、活动介绍 Crane 是由腾讯云主导开源的国内第一个基于云原生技术的成本优化项目,遵循 FinOps 标准,…

用java带你了解网络IO模型

目录 1.BIO1.1 简述1.2 代码示例1.3优点和缺点1.4 思考 2. NoBlockingIO2.1 简述2.2 代码示例2.3 优点和缺点2.4 思考 3. NIO(NewIO)3.1 简述3.2 代码示例3.3 优点和缺点3.3 思考 4. 扩展select/poll、epoll4.1 简述4.2 select/poll4.3 epoll4.4 扩展话题…

Linux之vim编辑器的使用

目录 一、vim是什么? 试验1: 二.命令模式继承用法: vim命令模式的快捷键: 光标移动: vim文本复制相关操作: vim文本编辑操作: 三.末行模式命令用法 部分快捷键: 四.vim编辑器的配置原理 一、vim是什么? vi…

Hive SQL语句的正确执行顺序

关于 sql 语句的执行顺序网上有很多资料,但是大多都没进行验证,并且很多都有点小错误,尤其是对于 select 和 group by 执行的先后顺序,有说 select 先执行,有说 group by 先执行,到底它俩谁先执行呢&#x…

智能结构诊断器:建筑结构健康的守护者

近年来,接二连三的自建房坍塌,超高层建筑震动,让建筑的健康和安全性成为了人们关注的焦点。为了确保建筑物的长期稳定性和安全性,迫切需要高效且准确的方法来监测结构的健康状况。智能结构诊断器的出现,让建筑结构监测…

大数据如何助力营销(5)活动复盘

在市场竞争日益激烈的今天,营销活动已经成为吸引用户、提升品牌影响力、增加销售转化的重要手段。然而,一场营销活动在举办后,往往难以评估活动的效果,而大数据技术将从方方面面、科学有效地复盘活动,并为下一次举办活…

chatgpt赋能Python-python_kbhit

Python kbhit - 帮助您掌握实时按键输入 如果您需要使用实时按键输入来控制您的Python程序,那么你需要知道的是Python kbhit。kbhit是一种允许用户实时按键输入并立即响应的技术。本文将介绍Python kbhit的用途和用法,并探讨实时输入如何帮助您掌控程序…

AI绘图学习心得分享-Midjourney绘画AI,让你少走一些弯路

本教程收集于:AIGC从入门到精通教程 AI绘图学习心得分享-Midjourney绘画AI,让你少走一些弯路 本篇没有什么长篇大论,全部都是实用心得总结。接下来,我们将分享关于Midjourney绘画AI的实用心得总结,包括构图指令结构、常用指令、操作技巧、常用风格词汇和构图词汇。 如果…

手机号码在网时长 API 实现广告投放和精准营销案例分析

引言 手机在网时长是指用户在移动网络上的在线时间,包括用户接入网络的时间和断开网络的时间。手机在网时长 API 是一种提供手机在网时长数据的编程接口,为开发者和服务提供商提供了获取和利用这些数据的能力。 本文旨在深入探讨手机在网时长 API 的技…

计算机视觉——day95 PANet:基于样本原型对齐的Few-Shot图像语义分割

PANet:基于样本原型对齐的Few-Shot图像语义分割 1. Introduction2. Related workFew-shot segmentation 3. Method3.1. Problem setting3.2. Method overview3.3. Prototype learning(原型学习)3.4. 非参数度量学习3.5. 原型对准正则化(PAR) 4. Experime…

MySQL高级 之 explain执行计划详解

使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。 explain执行计划包含的信息 其中最重要的字段为:id、type、key、rows、Extra 各字段详解 id select查询的序…

前端安全和防护:如何保护网站和用户信息的安全

第一章:引言 在当今数字化时代,随着互联网的飞速发展,网站已成为人们获取信息和进行交流的主要渠道。然而,随之而来的是对网站安全的日益关注。作为前端开发者和网站管理员,我们有责任确保用户的信息和网站的安全。本…

可分析表情和情绪的轻量化眼镜:Emteq OCOsense解析

近年来,越来越多VR头显开始尝试结合眼球追踪、手势追踪等生物识别技术,甚至在一些VR社交场景,也在探索将Avatar与面部识别功能结合。可以想象,未来生物识别与AR/VR等穿戴技术的关系将越来越紧密,尽管现阶段相关硬件在体…

Jenkins安装插件教程 牢记 Jenkis安装插件(plugin)的两种方法

目录 jenkins在线安装组件(plugin) jenkins离线安装组件(plugin) 前言:在jenkins学习使用或使用的过程中,由于网络的问题,在选择安装插件的时候,会出现某些插件安装失败。这是需要…

Word控件Spire.Doc 【列表】教程:在 Word 文档中插入列表

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

【MaxCompute】基于Package跨项目访问资源实践

背景 目前随着公司业务的不断扩展,各个业务线的数据也越来越多,如果所有数据都集中管理比较错综复杂。MaxCompute的跨项目访问资源比较适合这样的场景。每个业务线创建对应的project,自行管理数据。如果有需要访问其他业务线数据的诉求&…

python3 爬虫相关学习6:html 和 css 简要回顾

因为要学爬虫,需要了解下html内容,我之前大概看过,这算是回顾下 以下html简单回顾内容,跟着这个地址的教程看了一遍,感谢 https://www.w3school.com.cn/html/html_jianjie.asp 下面是笔记 目录 1 html 2 常用标签…

文件缓冲区概念和磁盘的存储原理以及软硬链接

目录 缓冲区 缓冲区执行概念 C语言缓冲区存在于FILE结构体中 用户缓冲区刷新到OS缓冲区的策略 发生重定向 redir未重定向。 redir重定向。 磁盘的存储原理 细讲: Inode table Date block Inode bitmap Block bitmap Group Descriptor Table super Block 在目录…

脑机接口科普0020——是否鸡娃

本文禁止转载!!!! 现在有很多人开始给小孩早教,鸡娃,幼儿园就开始学英语,小学就开始学初中的内容,初中就开始学高中的内容。高中后开始拼命的做卷子,准备考大学,考完大学放纵。大学毕业后失业。 关于是否…

Matlab进阶绘图第21期—三角方块热图

三角方块热图,顾名思义,就是仅保留方块热图数据矩阵的上三角或下三角部分。 三角方块热图简单明了,通过不同颜色、不同大小的圆形表示数据的大小,可以更加直观地对矩阵数据进行可视化表达。 本文使用自制的trisquareheatmap小工…