【机器学习】一文掌握逻辑回归全部核心点(下)。

逻辑回归核心点-下

  • 1、引言
  • 2、逻辑回归核心点
    • 2.5 特征工程
      • 2.5.1 特征缩放
      • 2.5.2 多项式特征
    • 2.6 多分类
      • 2.6.1 一对多(One-vs-Rest,OvR)策略
      • 2.6.2 一对一(One-vs-One,OvO)策略
      • 2.6.2 比较
    • 2.7 评估指标
      • 2.7.1 准确率
      • 2.7.2 精确率
      • 2.7.3 召回率
      • 2.7.4 F1分数
      • 2.7.5 混淆矩阵(Confusion Matrix)
      • 2.7.6 均方误差(Mean Squared Error, MSE)
      • 2.7.7 均方根误差(Root Mean Squared Error, RMSE)
      • 2.7.8 平均绝对误差(Mean Absolute Error, MAE)
      • 2.7.9 R²(Coefficient of Determination)
  • 3、总结

1、引言

接着上篇《【机器学习】一文掌握逻辑回归全部核心点(上)。》我们继续来聊逻辑回归的核心要点。

2、逻辑回归核心点

2.5 特征工程

2.5.1 特征缩放

  • 归一化(Normalization):将数据视为向量,再将向量除以其范数(通常采用L2范数),有量纲,对应sklearn中normalize方法。它针对数据集中单个样本进行缩放,适合依赖样本间相似性的算法。但会改变数据集中特征数值的分布,因此不适合依赖特征预测的算法。

  • 标准化(Standardization):对数据大小按照标准方法进行调整,使值位于特定范围内,无量纲。这主要针对数据集中单个特征进行缩放。标准化方法有两种:

    • Min-Max标准化:最大-最小值区间缩放,即减去最小值,再除以极差。标准化后数据位于[0,1]内,无量纲,对应sklearn中minmax_scale方法。
    • Z-score标准化:即减去均值,再除以标准差。这是最常用的标准化方法。
  • 特征缩放的优势:

    • 帮助梯度下降法更快速地收敛。
    • 避免“NaN 陷阱”,即模型中的一个数值因超出浮点精确率限制而变成NaN,导致所有其他数值也因数学运算而变成NaN。
    • 使模型为每个特征确定合适的权重,避免模型对范围较大的特征投入过多精力。

2.5.2 多项式特征

  • 多项式特征生成

    • 特征乘积:这是最简单的方法,通过将两个或多个原始特征的乘积作为新的特征。例如,如果有两个特征x1和x2,可以生成一个新的特征x1*x2。这种方法在逻辑回归中特别有用,因为它可以帮助捕捉特征之间的交互作用。
    • 幂次特征:通过将原始特征提升到不同的幂次来生成新的特征。例如,对于一个特征x,可以生成x2、x3等作为新的特征。这有助于捕捉数据的非线性关系。
    • 多项式扩展:使用像sklearn.preprocessing.PolynomialFeatures这样的工具来进行多项式扩展。这种工具可以自动生成所有可能的特征组合和幂次,从而创建一个高维的特征空间。
  • 多项式特征应用

    • 回归问题:在回归问题中,多项式特征可以帮助捕捉数据中的非线性关系,从而提高回归模型的准确性。例如,在预测房价时,房屋面积的平方或立方可能是一个重要的特征。
    • 分类问题:在分类问题中,多项式特征同样可以帮助提高模型的性能。通过捕捉特征间的交互作用和非线性关系,多项式特征可以增强分类器的判别能力。
    • 特征选择:多项式特征生成后,通常需要进行特征选择,以消除冗余和无关的特征,提高模型的泛化能力。这可以通过使用特征选择算法或基于模型的特征选择方法来实现。

2.6 多分类

一对多(One-vs-Rest,OvR)和一对一(One-vs-One,OvO)是用于处理多类别分类问题的两种不同策略。这两种策略都是基于二分类器的组合,将多类别问题转化为多个二分类问题。

2.6.1 一对多(One-vs-Rest,OvR)策略

在一对多策略中,对于具有 个类别的问题,每个类别都训练一个二分类器。对于第 个类别,训练一个二分类器,将该类别的样本标记为正类别(1),其他所有类别的样本标记为负类别(0)。因此,针对每个类别都有一个独立的二分类器。

在测试阶段,将样本输入到所有的二分类器中,最终选择预测概率最高的类别作为最终的预测结果。一对多策略的优势在于每个二分类器只需关注一个类别,相对简单和高效。

2.6.2 一对一(One-vs-One,OvO)策略

在一对一策略中,对于具有 个类别的问题,每两个类别之间训练一个二分类器。因此,对于 个类别,需要 个二分类器。对于每个二分类器,只包含两个类别的样本,其他所有类别的样本都被忽略。

在测试阶段,将样本输入到所有的二分类器中,每个分类器产生一个预测结果。最终通过投票或其他集成方法,选择得票最多的类别作为最终的预测结果。

2.6.2 比较

  • 计算复杂度:一对多策略通常比一对一策略更快,因为需要训练的二分类器数量较少。

  • 存储开销:一对一策略在类别较多时可能需要较大的存储开销,因为需要存储多个二分类器。

  • 类别不平衡:一对多策略在处理类别不平衡时可能更稳健,因为每个分类器关注一个类别。

  • 预测时间:一对多策略的预测时间通常更短,因为只需进行 次预测。

选择使用一对多还是一对一策略通常取决于具体的问题和数据集。在实际应用中,一对多策略更为常见。某些算法,如支持向量机(SVM),在类别较多时可能更适合使用一对一策略。

2.7 评估指标

2.7.1 准确率

准确率是分类任务中最常用的评估指标之一,它表示模型正确预测的样本数与总样本数之比。然而,当数据集存在类别不平衡问题时,准确率可能不是一个很好的指标。

公式:

Accuracy = TP + TN TP + TN + FP + FN \text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{TN} + \text{FP} + \text{FN}} Accuracy=TP+TN+FP+FNTP+TN

代码示例

from sklearn.metrics import accuracy_score  y_true = [0, 1, 1, 0, 1, 1]  
y_pred = [0, 1, 0, 0, 1, 1]  accuracy = accuracy_score(y_true, y_pred)  
print(f"Accuracy: {accuracy}")

2.7.2 精确率

精确率是指模型预测为正例的样本中,真正为正例的样本所占的比例。它有助于了解模型在预测为正例的样本中的准确性。
公式:
Precision = TP TP + FP \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} Precision=TP+FPTP
代码示例

from sklearn.metrics import precision_score  y_true = [0, 1, 1, 0, 1, 1]  
y_pred = [0, 1, 0, 0, 1, 1]  precision = precision_score(y_true, y_pred)  
print(f"Precision: {precision}")

2.7.3 召回率

召回率是指所有真正的正例样本中,被模型正确预测为正例的样本所占的比例。它有助于了解模型在识别所有正例样本时的能力。

公式
Recall = TP TP + FN \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} Recall=TP+FNTP

代码示例

from sklearn.metrics import recall_score  y_true = [0, 1, 1, 0, 1, 1]  
y_pred = [0, 1, 0, 0, 1, 1]  recall = recall_score(y_true, y_pred)  
print(f"Recall: {recall}")

2.7.4 F1分数

F1 分数是精确率和召回率的调和平均值,用于综合考虑精确率和召回率的表现。当精确率和召回率都很高时,F1 分数也会很高。
公式

F 1 = 2 × Precision × Recall Precision + Recall F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1=2×Precision+RecallPrecision×Recall

代码示例

from sklearn.metrics import f1_score  y_true = [0, 1, 1, 0, 1, 1]  
y_pred = [0, 1, 0, 0, 1, 1]  f1 = f1_score(y_true, y_pred)  
print(f"F1 Score: {f1}")

2.7.5 混淆矩阵(Confusion Matrix)

混淆矩阵展示了模型预测结果的实际情况,包括真正例(TP)、假正例(FP)、真反例(TN)和假反例(FN)。通过混淆矩阵,可以直观地了解模型在各种情况下的表现。

代码示例

from sklearn.metrics import confusion_matrix  y_true = [0, 1, 1, 0, 1, 1]  
y_pred = [0, 1, 0, 0, 1, 1]  cm = confusion_matrix(y_true, y_pred)  
print(f"Confusion Matrix:\n{cm}")

2.7.6 均方误差(Mean Squared Error, MSE)

MSE 是回归任务中常用的评估指标,它计算了模型预测值与真实值之间平方差的平均值。MSE 越小,说明模型的预测性能越好。

RMSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} RMSE=n1i=1n(yiy^i)2

代码示例

from sklearn.metrics import mean_squared_error  y_true = [3, -0.5, 2, 7]  
y_pred = [2.5, 0.0, 2, 8]  mse = mean_squared_error(y_true, y_pred)  
print(f"MSE: {mse}")

2.7.7 均方根误差(Root Mean Squared Error, RMSE)

RMSE 是 MSE 的平方根,它同样用于衡量模型预测值与真实值之间的误差。与 MSE 相比,RMSE 的单位与真实值的单位相同,更容易解释。
公式:

RMSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} \ RMSE=n1i=1n(yiy^i)2  

代码示例

from sklearn.metrics import mean_squared_error
import numpy as npy_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]mse = mean_squared_error(y_true, y_pred)
rmse = np.sqrt(mse)print(f"RMSE: {rmse}")

2.7.8 平均绝对误差(Mean Absolute Error, MAE)

MAE 计算了模型预测值与真实值之间绝对误差的平均值。与 MSE 和 RMSE 不同,MAE 对误差的敏感性较低,可以更好地反映模型在极端情况下的性能。
MAE = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1nyiy^i

2.7.9 R²(Coefficient of Determination)

R² 表示模型解释的变异度与总变异度的比例。R² 的值越接近 1,说明模型的拟合效果越好。然而,需要注意的是,当数据集中的变量之间存在多重共线性时,R² 的值可能会过高,此时需要谨慎解读。

公式:
R 2 = 1 − ∑ i = 1 n ( y i − y ^ i ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2} R2=1i=1n(yiyˉ)2i=1n(yiy^i)2

3、总结

看到这里,关于逻辑回归的核心点的内容都讲完了。
逻辑回归在许多领域有着广泛应用,包括但不限于信用评分、疾病诊断、市场营销中的用户行为预测等。它的简洁性和有效性使其成为许多机器学习项目的基础构建块。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 多个名企认证讲师等
  • 认证金牌面试官
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注小鱼,学习机器学习领域的知识。

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

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

相关文章

动手做一个最小RAG——TinyRAG

Datawhale干货 作者:宋志学,Datawhale成员 大家好,我是不要葱姜蒜。 接下来我会带领大家一步一步地实现一个简单的RAG模型,这个模型是基于RAG的一个简化版本,我们称之为Tiny-RAG。Tiny-RAG是一个基于RAG的简化版本&am…

SpringBoot源码

SpringBoot核心前置内容 1.Spring注解编程的发展过程 1.1 Spring 1.x 2004年3月24日,Spring1.0 正式发布,提供了IoC,AOP及XML配置的方式。 在Spring1.x版本中提供的是纯XML配置的方式,也就是在该版本中必须要提供xml的配置文件…

八、词嵌入语言模型(Word Embedding)

词嵌入(Word Embedding, WE),任务是把不可计算、非结构化的词转换为可以计算、结构化的向量,从而便于进行数学处理。 一个更官方一点的定义是:词嵌入是是指把一个维数为所有词的数量的高维空间(one-hot形式…

小迪安全36WEB 攻防-通用漏洞XSS 跨站MXSSUXSSFlashXSSPDFXSS

#XSS跨站系列内容:1. XSS跨站-原理&分类&手法 XSS跨站-探针&利用&审计XSS跨站另类攻击手法利用 XSS跨站-防御修复&绕过策略 #知识点: 1、XSS 跨站-原理&攻击&分类等 2、XSS 跨站-MXSS&UXSS&FlashXss&PDFXSS 等 1、原…

HCS-华为云Stack-计算节点内部网络结构

HCS-华为云Stack-计算节点内部网络结构 图中表示的仅为计算节点是两网口的模式,如果是四网口模式,系统会再自动创建一个网桥出来 图中未画出存储平面和Internal Base平面,它们和tunnel bearing、External OM-样,都是通过trunk0的…

信息系统项目管理师006:车联网(1信息化发展—1.2现代化基础设施—1.2.3车联网)

文章目录 1.2.3 车联网1.体系框架2.链接方式3.场景应用 记忆要点总结 1.2.3 车联网 车联网是新一代网络通信技术与汽车、电子、道路交通运输等领域深度融合的新兴产业形态。智能网联汽车是搭载先进的车载传感器、控制器、执行器等装置,并融合现代通信与网络技术&…

Linux常用命令之top监测

(/≧▽≦)/~┴┴ 嗨~我叫小奥 ✨✨✨ 👀👀👀 个人博客:小奥的博客 👍👍👍:个人CSDN ⭐️⭐️⭐️:传送门 🍹 本人24应届生一枚,技术和水平有限&am…

for、while、do While、for in、forEach、map、reduce、every、some、filter的使用

for、while、do While、for in、forEach、map、reduce、every、some、filter的使用 for let arr [2, 4, 6, 56, 7, 88];//for for (let i 0; i < arr.length; i) {console.log(i : arr[i]) //0:2 1:4 2:6 3:56 4:7 5:88 }普通的for循环可以用数组的索引来访问或者修改…

代码随想录day32 Java版

62.不同路径 public static int uniquePaths(int m, int n) {int[][] dp new int[m][n];//初始化for (int i 0; i < m; i) {dp[i][0] 1;}for (int i 0; i < n; i) {dp[0][i] 1;}for (int i 1; i < m; i) {for (int j 1; j < n; j) {dp[i][j] dp[i-1][j]dp…

Java享元模式源码剖析及使用场景

享元模式 一、介绍二、基本原理三、企业资源管理系统中使用案例三、Java 中的字符串常量池使用了享元模式四、总结优缺点以及使用经验 一、介绍 享元模式是一种结构型设计模式&#xff0c;旨在最大程度地减少内存使用或计算开销。这种模式通过共享对多个类似对象实例所需的状态…

04 数据结构之队列

循环队列 /* squence_queue.h */ #ifndef _SQUENCE_QUEUE_H_ #define _SQUENCE_QUEUE_H_#include <stdio.h> #include <string.h> #include <stdlib.h>#define QUEUE_SIZE 128 #define DEBUG(msg) \printf("--%s--, %s", __func__, msg)typedef i…

SAP BTP Hyperscaler PostgreSQL都有哪些Performance监控 (一)

前言 SAP BTP云平台中&#xff0c;除了自身的HANA数据库作为首选以外&#xff0c;它还支持PostgreSQL的整套服务&#xff0c;并以PaaS的形式提供给客户。你可以按照实例为单位进行购买申请不同标准规格的PG实例&#xff0c;然后构建自己的业务逻辑。Hyperscaler是这套产品或方…

【Python-Docx库】Word与Python的完美结合

今天给大家分享Python处理Word的第三方库&#xff1a;Python-Docx。 什么是Python-Docx&#xff1f; Python-Docx是用于创建和更新Microsoft Word&#xff08;.docx&#xff09;文件的Python库。 日常需要经常处理Word文档&#xff0c;用Python的免费第三方包&#xff1a;Pyt…

【Linux】Shell及Linux权限

Shell Shell的定义 Shell最简单的定义是&#xff1a;命令行解释器。 Shell的主要任务&#xff1a;1. 将使用者的命令翻译给核心进行处理。2.将核心的处理结果翻译给使用者 为什么要有Shell? 使用者和内核的关系就相当于两个完全陌生的外国人之间的关系&#xff0c;他们要进…

springboot、vue、uniapp项目的部署和运行(超链接可直接跳过去)

springboot、vue项目环境配置 1、首先要安装jdk、maven、mysql、nodejs 软件安装 2、安装idea、HbuilderX、navicat 运行项目 3、运行springboot项目、运行vue项目、运行uniapp项目

Dockerfile编写实践篇

Docker通过一种打包和分发的软件&#xff0c;完成传统容器的封装。这个用来充当容器分发角色的组件被称为镜像。Docker镜像是一个容器中运行程序的所有文件的捆绑快照。当使用Docker分发软件&#xff0c;其实就是分发这些镜像&#xff0c;并在接收的机器上创建容器。镜像在Dock…

Linux:线程互斥与同步

目录 线程互斥 锁的初始化 加锁 解锁 锁的初始化 锁的原理 死锁 线程同步 方案一&#xff1a;条件变量 条件变量初始化 等待 唤醒 条件变量的代码示例 基于阻塞队列的生产消费模型 方案二&#xff1a;POSIX信号量 初始化信号量&#xff1a; 销毁信号量 等待信…

JAVA基础-数据结构一(线性表、链表、栈、队列)

一、数组线性表&#xff08;ADT&#xff09; 线性表&#xff1a;又称动态数组&#xff0c;核心是动态数组&#xff0c;可以自行扩容&#xff0c;支持增删改查四种功能 java中有ArrayList也可以自行扩容&#xff0c;二者功能较为相似&#xff0c;且ArrayList也支持转换为数组。 …

中国大学生计算机设计大赛--智慧物流挑战赛基础

文章目录 一、Ubuntu基础1.1 基本操作1.2 文本编辑 二、ROS基础介绍2.1 概念与特点2.2 基本结构2.3 创建工程2.4 节点和节点管理器2.5 启动文件 三、ROS通信机制3.1 话题3.2 服务3.3 动作3.4 参数服务器 四、ROS可视化工具4.1 rviz4.2 rqt4.3 tf 五、Python实现简单的ROS节点程…

01-分析同步通讯/异步通讯的特点及其应用

同步通讯/异步通讯 微服务间通讯有同步和异步两种方式 同步通讯: 类似打电话场景需要实时响应(时效性强可以立即得到结果方便使用),而且通话期间不能响应其他的电话(不支持多线操作)异步通讯: 类似发邮件场景不需要马上回复并且可以多线操作(适合高并发场景)但是时效性弱响应…