机器学习算法 - 逻辑回归

逻辑回归是一种广泛应用于统计学和机器学习领域的回归分析方法,主要用于处理二分类问题。它的目的是找到一个最佳拟合模型来预测一个事件的发生概率。以下是逻辑回归的一些核心要点:

基本概念

  • 输出:逻辑回归模型的输出是一个介于0和1之间的概率值,通常表示为 P(Y=1|X),即在给定自变量 X 的条件下,因变量 Y 等于1的概率。
  • 函数形式:逻辑回归通常使用 Sigmoid 函数(或逻辑函数)作为其链接函数,将线性回归模型的输出映射到0和1之间。Sigmoid 函数的数学表达式为: σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+ez1 其中 z 是模型的线性部分,即 z = β 0 + β 1 x 1 + β 2 x 2 + … + β n x n z = \beta_0 + \beta_1x_1 + \beta_2x_2 + \ldots + \beta_nx_n z=β0+β1x1+β2x2++βnxn
  • 估计方法:逻辑回归的参数估计通常通过最大似然估计(MLE)方法完成。最大似然估计是寻找一组参数,使得观测到的样本数据出现的概率最大。

损失函数

在逻辑回归中使用的对数损失函数(交叉熵损失)定义如下:

L ( y , p ) = − 1 N ∑ i = 1 N [ y i log ⁡ ( p i ) + ( 1 − y i ) log ⁡ ( 1 − p i ) ] L(y, p) = -\frac{1}{N} \sum_{i=1}^{N} \left[y_i \log(p_i) + (1 - y_i) \log(1 - p_i)\right] L(y,p)=N1i=1N[yilog(pi)+(1yi)log(1pi)]

优化算法

梯度下降法

梯度下降法通过迭代减少损失函数的方式来更新模型的参数。参数更新的公式如下:

θ n e w = θ o l d − α ∇ θ L ( θ ) \theta_{new} = \theta_{old} - \alpha \nabla_\theta L(\theta) θnew=θoldαθL(θ)

在这里插入图片描述

牛顿法

牛顿法利用损失函数的二阶导数(海森矩阵)来更新参数,更新公式为:

θ n e w = θ o l d − H − 1 ∇ θ L ( θ ) \theta_{new} = \theta_{old} - H^{-1} \nabla_\theta L(\theta) θnew=θoldH1θL(θ)

拟牛顿法(例如BFGS)

拟牛顿法不直接计算海森矩阵,而是使用其近似值来更新参数,更新公式为:

θ n e w = θ o l d − B − 1 ∇ θ L ( θ ) \theta_{new} = \theta_{old} - B^{-1} \nabla_\theta L(\theta) θnew=θoldB1θL(θ)

在这里插入图片描述

模型评估

模型的评估主要通过以下几个指标:

  • 准确率(Accuracy):
    Accuracy = Number of Correct Predictions Total Number of Predictions \text{Accuracy} = \frac{\text{Number of Correct Predictions}}{\text{Total Number of Predictions}} Accuracy=Total Number of PredictionsNumber of Correct Predictions

  • 精确率(Precision):
    Precision = True Positives True Positives + False Positives \text{Precision} = \frac{\text{True Positives}}{\text{True Positives + False Positives}} Precision=True Positives + False PositivesTrue Positives

  • 召回率(Recall):
    Recall = True Positives True Positives + False Negatives \text{Recall} = \frac{\text{True Positives}}{\text{True Positives + False Negatives}} Recall=True Positives + False NegativesTrue Positives

  • F1 分数
    F1 Score = 2 × Precision × Recall Precision + Recall \text{F1 Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1 Score=2×Precision+RecallPrecision×Recall

ROC 曲线(Receiver Operating Characteristic curve)和 AUC 分数(Area Under the Curve)是评估二分类模型性能的重要工具。这些工具特别有用于评估模型在不同分类阈值下的性能。以下是ROC曲线和AUC分数的详细解释:

ROC 曲线

ROC曲线是一个图形工具,用于显示在各种阈值设置下,分类模型识别出类别的能力。ROC曲线的X轴是假正率(False Positive Rate, FPR),Y轴是真正率(True Positive Rate, TPR)。这两个比率定义如下:

  • 真正率 (TPR):也称为敏感性,计算公式为真正例(True Positives, TP)除以所有实际正例的数量(TP 加上假负例,False Negatives, FN):
    [
    TPR = \frac{TP}{TP + FN}
    ]

  • 假正率 (FPR):计算公式为假正例(False Positives, FP)除以所有实际负例的数量(FP 加上真负例,True Negatives, TN):
    [
    FPR = \frac{FP}{FP + TN}
    ]

在绘制ROC曲线时,通过改变分类的阈值(如概率阈值),系统会产生一系列不同的TPR和FPR值,从而形成一条曲线。

AUC 分数

AUC分数是ROC曲线下的面积,这个值介于0和1之间。AUC值提供了一个量化模型在区分两个类别的能力的单一数值。AUC值的解释如下:

  • AUC = 1:表示模型有完美的区分能力,能完全区分正类和负类。
  • AUC = 0.5:表示模型没有区分能力,其性能相当于随机猜测。
  • AUC < 0.5:表示模型表现还不如随机猜测,这在实际应用中通常意味着模型或数据处理有严重问题。
为何使用ROC和AUC
  • 不依赖特定阈值:ROC曲线考虑了所有可能的分类阈值,所以它可以展示出模型在所有情况下的综合性能。
  • 不平衡数据的评估:对于数据集类别极不平衡的情况,比如一个类的样本量远大于另一个类,ROC曲线和AUC分数仍然是有效的评估指标。

总的来说,ROC曲线和AUC分数是衡量和比较不同模型在二分类问题上性能的强大工具,特别是在处理具有不同分类阈值或不平衡数据集的场景中。这些工具帮助研究人员和开发者选择最佳模型,优化模型设置,以达到更高的分类性能。

应用和局限

  • 应用:逻辑回归被广泛应用于医疗、金融、社会科学和市场营销等领域。例如,在信用评分、疾病诊断和客户流失预测中,逻辑回归模型能够基于历史数据预测个体事件的发生概率。
  • 局限性:虽然逻辑回归在处理二分类问题上表现优秀,但它假设数据特征与对数几率是线性关系,并且对多分类问题处理较为复杂。此外,当特征空间中存在多重共线性时,模型的性能可能会受到影响。

逻辑回归案例

下面是一个使用 Python 中的 scikit-learn 库实现逻辑回归模型的简单例子。这个例子将涵盖数据加载、模型训练、预测以及性能评估。我们将使用经典的鸢尾花数据集(Iris dataset),这是一个多分类问题,但为了适用于逻辑回归,我们将其简化为二分类问题(区分鸢尾花的一个种类与其他种类)。

1. 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, auc
2. 加载和准备数据
# 加载数据
data = load_iris()
X = data.data
y = data.target

# 将问题简化为二分类问题
y = (y == 2).astype(np.int)  # 选择一种类别(比如类别2)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
3. 创建和训练逻辑回归模型
# 创建逻辑回归模型实例
model = LogisticRegression()

# 训练模型
model.fit(X_train, y_train)
4. 进行预测和评估
# 预测测试集
y_pred_prob = model.predict_proba(X_test)[:, 1]  # 获取正类的预测概率

# 计算 ROC 曲线和 AUC 分数
fpr, tpr, thresholds = roc_curve(y_test, y_pred_prob)
roc_auc = auc(fpr, tpr)

# 绘制 ROC 曲线
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()
总结

在这个例子中,我们首先导入了必要的库,然后加载了鸢尾花数据集,并将其简化为一个二分类问题。接下来,我们创建了一个逻辑回归模型,并用训练数据对其进行了训练。最后,我们对测试数据进行了预测,并通过绘制 ROC 曲线和计算 AUC 分数来评估模型的性能。这个例子展示了如何在 Python 中简单快速地实现和评估逻辑回归模型。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】队列详解(Queue)

文章目录 有关队列的概念队列的结点设计及初始化队列的销毁判空和计数入队操作出队操作 有关队列的概念 队列:只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端…

Redis不同数据类型value存储

一、Strings redis中String的底层没有用c的char来实现&#xff0c;而是使用SDS数据结构( char buf[])。 缺点:浪费空间 优势: 1.c字符串不记录自身的长度&#xff0c;所以获取一个字符串长度的复杂度是O(N),但是SDS记录分配的长度alloc,已使用长度len&#xff0c;获取长度的…

CSS文字描边,文字间隔,div自定义形状切割

clip-path: polygon( 0 0, 68% 0, 100% 32%, 100% 100%, 0 100% );//这里切割出来是少一角的正方形 letter-spacing: 1vw; //文字间隔 -webkit-text-stroke: 1px #fff; //文字描边1px uniapp微信小程序顶部导航栏设置透明&#xff0c;下拉改变透明度 onP…

[js] 递归,数组对象根据某个值进行升序或者降序

一、效果图 1.1 父级 1.2 父级与子级 二、代码 升序降序&#xff0c;只要把 a.num - b.num 改成 b.num - a.num <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, i…

pycharm 将项目连同库一起打包及虚拟环境的使用

目录 一、创建虚拟环境 1、用 anaconda 创建 2、Pycharm 直接创建 二、虚拟环境安装第三方库 1、创建项目后&#xff0c;启动终端(Alt F12)&#xff0c;或者点击下方标记处。 2、使用 pip 或者 conda 来进行三方库的安装或卸载 3、将项目中的库放入文档&#xff0c;便于…

Dual Aggregation Transformer for Image Super-Resolution论文总结

题目&#xff1a;Dual Aggregation Transformer&#xff08;双聚合Transformer&#xff09; for Image Super-Resolution&#xff08;图像超分辨&#xff09; 论文&#xff08;ICCV&#xff09;&#xff1a;Chen_Dual_Aggregation_Transformer_for_Image_Super-Resolution_ICCV…

Android之给Button上添加按压效果

一、配置stateListAnimator参数实现按压效果 1、按钮控件 <Buttonandroid:id"id/mBtnLogin"android:layout_width"match_parent"android:layout_height"48dp"android:background"drawable/shape_jfrb_login_button"android:state…

腾讯共享WiFi项目的加盟方式有哪些?

在这个互联互通的时代&#xff0c;共享经济的浪潮正以前所未有的力量席卷全球&#xff0c;而腾讯作为中国互联网巨头之一自然不会错过这场盛宴。其推出的腾讯共享WiFi项目自问世以来就备受瞩目&#xff0c;它不仅为用户提供便捷的上网服务&#xff0c;更为创业者打开了一个全新…

Language2Pose: Natural Language Grounded Pose Forecasting # 论文阅读

URL https://arxiv.org/pdf/1907.01108 TD;DR 19 年 7 月 cmu 的文章&#xff0c;提出一种基于 natural language 生成 3D 动作序列的方法。通过一个简单的 CNN 模型应该就可以实现 Model & Method 首先定义一下任务&#xff1a; 输入&#xff1a;用户的自然语言&…

win10电脑桌面便签纸怎么设置?添加桌面便签方法

对于上班族来说&#xff0c;电脑桌面上的电子便签纸是一项不可或缺的工具。在快节奏的工作环境中&#xff0c;我们经常需要随时记录重要信息、安排工作任务&#xff0c;而电子便签纸以其便捷性和实时性成为了我们的得力助手。 想象一下&#xff0c;在紧张的项目讨论中&#xf…

mysql 细分

索引选择性 索引列的唯一值数量 / 表中的总行数 mysql如何优化-CSDN博客 批量问题 批处理默认是逐条发送 SQL 到数据库的&#xff0c;没有充分利用数据库提供的原生批处理能力&#xff0c;需要额外的配置来启用真正的批处理支持&#xff0c;如使用ExecutorType.BATCH 自定…

提升网络性能,解决网络故障,了解AnaTraf网络流量分析仪

在当今数字化时代&#xff0c;网络性能监测与诊断(Network Performance Monitoring and Diagnosis,NPMD)成为了企业和个人关注的焦点。随着网络流量不断增长&#xff0c;确保网络的稳定性和高效性变得更加重要。在这个领域&#xff0c;AnaTraf网络流量分析仪是您不可或缺的得力…

自然资源-土地征收成片开发知识梳理

自然资源-土地征收成片开发知识梳理 1、什么是成片开发 &#xff1f; 自然资源部印发的《土地征收成片开发标准&#xff08;试行&#xff09;》对成片开发的概念做了界定&#xff0c;成片开发是指在国土空间规划确定的城镇开发边界内的集中建设区&#xff0c;由县级以上地方人…

章十二、数据库(1) —— 概述、MySQL数据库、SQL、DDL、DML、DQL、多表设计

为什么学习数据库&#xff1a; ● 实现数据持久化到本地&#xff1b; ● 使用完整的管理系统统一管理&#xff0c;可以实现结构化查询&#xff0c;方便管理&#xff1b; 一、 数据库概述 ● 数据库 数据库&#xff08;DataBase&#xff09;为了方便数据的 存储 和 管理 &…

LLM记录:五一 Llama 3 超级课堂

LLM记录&#xff1a;五一 Llama 3 超级课堂 想玩大模型&#xff0c;自己又没那个环境&#xff0c;参加五一 Llama 3 超级课堂&#xff0c;简单记录一下llama3-8b的相关体验&#xff0c;实在是邀请不到人&#xff0c;还好后面开放了24G显存&#xff0c;好歹模型能跑起来了&…

TCP UDP

传输层 端口号 tcp udp 网络层 IP地址 IP TCP&#xff0c;UDP 1&#xff0c;TCP是面向链接的协议&#xff0c;而UDP是无连接的协议; 2&#xff0c;TCP协议的传输是可靠的&#xff0c;而UDP协议的传输“尽力而为” 3&#xff0c;TCP可以实现流控&#xff0c;但UDP不行;…

怎么找回回收站里删除的XLS文件?5个恢复方法

我们经常会使用到XLS文件来存储和整理数据。然而有时候由于误操作或不小心&#xff0c;我们可能会将重要的XLS文件删除&#xff0c;并且这些文件可能还被清空出了回收站。面对这种情况许多人会感到焦虑和无助。但是不必过于担心&#xff0c;因为有专门的软件可以帮助我们找回这…

如何使用 ArcGIS Pro 制作地震动画

在做某些汇报的时候&#xff0c;除了图文&#xff0c;如果有动画肯定会成为加分项&#xff0c;这里为大家介绍一下如何使用 ArcGIS Pro 制作地震动画&#xff0c;希望能对你有所帮助。 添加时间 在图层属性内&#xff0c;选择时间选项卡&#xff0c;图层时间选择每个要素具有…

技巧:无脑秒解“已知前序\后序与中序遍历序列,求后序\前序遍历序列”

目录 举例一 1、画坐标系&#xff1a; 2、填表&#xff1a; 3、连线 举例二 1、画坐标系 2、填表 3、连线 原理 这是一个笔试技巧&#xff0c;对代码能力没有什么提高。 可以用&#xff0c;但是代码也要会写&#xff0c;那才是根基。 相对于传统方法&#xff0c;此方法非常的快…

1725 ssm资产管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java ssm资产管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/…