机器学习算法 - 逻辑回归

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

基本概念

  • 输出:逻辑回归模型的输出是一个介于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.mzph.cn/bicheng/9561.shtml

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

相关文章

翻译《The Old New Thing》 - The performance cost of reading a registry key

The performance cost of reading a registry key - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20060222-11/?p32193 Raymond Chen 2006年2月22日 读取注册表键的性能成本 注册表是一个方便的场所&#xff0c;它以统一且多线程安全的方式…

使用 MSYS2 Qt6 发布绿色版的SDR软件无线电应用

文章目录 概要整体架构流程技术名词解释技术细节在启动器中为子进程设置路径和环境。如何迅速找齐所有的DLL 小结附件 概要 新接触软件定义无线电&#xff08;SDR&#xff09;的朋友一般都会一股脑的安装一些现有的SDR平台。无论是GNURadio还是SDR、SDRSharp、SDRAngel&#x…

C++map和set(个人笔记)

Cmap和set 1.set1.1set的使用1.1.1 set的模板参数列表1.1.2set的构造1.1.3set的迭代器1.1.4 set的容量1.1.5 set修改操作1.1.6 set的具体使用例子 2.map2.1map的使用2.1.1map的模板参数列表2.1.2map的构造2.1.3map的迭代器2.1.4 map的容量与元素访问2.1.5 map中元素的修改2.1.6…

模电·基本共基放大电路

基本共集放大电路 图1.(a)所示为基本共基放大电路&#xff0c;根据放大电路的组成原则&#xff0c;为使晶体管发射结正向偏置且 U B E &#xff1e; U o n {U\tiny BE}&#xff1e;{U\tiny on} UBE&#xff1e;Uon&#xff0c;在其输入回路加电源 V B B V\tiny BB VBB&#xf…

Photoshop中绘图及图像修饰工具的应用

Photoshop中绘图及图像修饰工具的应用 Photoshop中的颜色设置与取样前景色与背景色颜色取样 Photoshop中的颜色替换工具Photoshop中的渐变工具Photoshop中的描边命令Photoshop中的填充工具采用油漆桶进行填充采用填充命令进行填充 Photoshop中的擦除工具 Photoshop中的颜色设置…

SQL子查询练习

学习链接&#xff1a;https://sqlzoo.net/wiki/Window_LAG ● 【题目1】查询在欧洲(Europe)人均gdp大于英国 (United Kingdom)的国家名。人均国内生产总值&#xff08;人均GDP&#xff09;国内生产总值&#xff08;GDP&#xff09;/人口&#xff08;populaiton&#xff09;。…

智能奶柜:健康生活新风尚

智能奶柜&#xff1a;健康生活新风尚 在快节奏的都市生活中&#xff0c;健康与便利成为了现代人的双重追求。而在这两者交汇之处&#xff0c;智能奶柜应运而生&#xff0c;它不仅是科技与生活的完美融合&#xff0c;更是日常营养补给的智慧之选。 清晨的第一缕温暖 —— 新鲜…

pycharm编译器背景设置

最近&#xff0c;瞎逛的时候发现个好玩的&#xff0c;pycharm竟然可以设置背景了&#xff0c;也不知道是不是我太out了&#xff0c;觉得很有意思&#xff0c;略微记录一下 如下步骤&#xff1a; 第五步&#xff1a;选择自己的图片路径 第六步&#xff1a;设置图片透明度&…

【讲解下迭代加深搜索】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

自动驾驶系统中的数据闭环:挑战与前景

目录 自动驾驶概况 1.1自动驾驶分级 1.2自动驾驶国内发展 ​1.3自动驾驶架构模型 数据闭环的意义 2.1 搜集corner case的数据 2.2 提高模型的泛化能力 2.3 驱动算法迭代 数据闭环落地的痛点及对策 3.1 数据采集和使用的合规性问题 3.2 数据确权问题 3.3 数据采集…

Interpreting Super-Resolution Networks with Local Attribution Maps

CVPR2021 问题引入 主要针对的是深度模型的不可解释性&#xff0c;本文使用attribution analysis来分析输入的哪些像素对SR的结果贡献最大&#xff1b;本文提出了Local Attribution Maps&#xff0c;是一种归因方法&#xff0c;延伸了path integral gradient method&#xff…

CLI举例:通过URL分类控制用户访问的网站

华为CLI举例&#xff1a;通过URL分类控制用户访问的网站 配置基于URL分类的URL过滤功能&#xff0c;可以实现对用户访问的某一类网站的控制。既可以是FW自带的预定义分类&#xff0c;也可以是管理员配置的自定义分类。 组网需求 如图1所示&#xff0c;FW作为企业网关部署在网络…

华为OD机试【城市聚集度】(java)(200分)

1、题目描述 一张地图上有N个城市&#xff0c;城市和城市之间有且只有一条道路相连&#xff0c;要么直接相连&#xff0c;要么通过其他城市中转相连(可中转一次或多次)。城市与城市之间的道路都不会成环。 当切断通往某城市i的所有道路后&#xff0c;地图上将分成多个连通的城…

mongoDB分组查询

完整代码 //根据医院编号 和 科室编号 &#xff0c;查询排班规则数据Overridepublic Map<String, Object> getRuleSchedule(long page, long limit, String hoscode, String depcode) {//1 根据医院编号 和 科室编号 查询Criteria criteria Criteria.where("hosco…

云手机:海外舆情监控的新工具

在数字化时代&#xff0c;海外舆情监控对于企业、品牌和政府机构来说&#xff0c;已经变得至关重要。传统的舆情监控方法往往受限于地域、设备和技术&#xff0c;而云手机的出现&#xff0c;为海外舆情监控带来了全新的解决方案。 一、云手机与海外舆情监控的完美结合 云手机作…

Flask 通过SQLAlchemy连接mySQL实现一个实用的用户管理功能

Flask 通过SQLAlchemy连接mySQL实现一个实用的用户管理功能 安装配置 首先确保已经安装如下程序&#xff1a; flask&#xff1a;用于构建web应用程序。flask-sqlalchemy&#xff1a;用于在 Flask 中连接 MySQL 数据库&#xff0c;通过pip install flask-sqlalchemy安装。pym…

Web安全:SQL注入漏洞详解,SQL注入常见功能、危害、分类、判断注入点、注入方式

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等12个知识域的一百多个知识点,持续更新。 这一章节我们需要知道S…

FPGA+炬力ARM实现VR视频播放器方案,3D眼镜显示

3D眼镜显示&#xff1a; FPGA炬力ARM方案&#xff0c;单个视频源信号&#xff0c;同时驱动两个LCD屏显示&#xff0c;实现3D 沉浸式播放 客户应用&#xff1a;VR视频播放器 主要功能&#xff1a; 1.支持多种格式视频文件播放 2.支持2D/3D 效果实时切换播放 3.支持TF卡/U盘文…

24数维杯C题18页保姆级思路+代码+后续参考论文

18页保姆级思路&#xff1a; 24数维杯C题20页保姆级思路&#xff0b;可执行代码&#xff0b;参考论文 简单麦麦https://www.jdmm.cc/file/2710641/ 群&#xff1a;666165284 1&#xff09;确定天然气水合物资源分布范围 要确定天然气水合物资源的分布范围&#xff0c;需要分…

谷歌上架,白包号放着备用,啥也没干也被封?是什么情况?

众所周知&#xff0c;Google Play Store是全球最大的应用商店之一&#xff0c;每天都有大量的应用被上传和下架。 同时&#xff0c;随着谷歌上架行业的发展&#xff0c;谷歌现在的审核系统越来越智能和先进&#xff0c;开发者们尝试着各种方法来提高上架成功率。其中&#xff…