人工智能学习(五)之机器学习逻辑回归算法
深入剖析机器学习逻辑回归算法
一、引言
在机器学习领域,逻辑回归是一种极为经典且应用广泛的算法。虽说名字里带有 “回归”,但它主要用于解决分类问题,在医学、金融、互联网等多个领域都发挥着关键作用。例如,在医学上辅助判断疾病风险,金融领域评估信用风险,互联网行业进行用户行为分析等。接下来,就让我们深入探究逻辑回归算法,从原理推导、代码实现到实际应用拓展,全面了解这一强大的工具。
二、原理推导
(一)线性回归回顾

(二)逻辑回归模型构建

(三)极大似然估计

三、优化目标定义

四、迭代优化参数

五、代码实现
下面使用 Python 和 NumPy、scikit - learn库实现一个包含数据预处理、模型训练和评估的逻辑回归模型示例。在这个示例中,我们使用经典的鸢尾花数据集,该数据集包含四个属性列和一个品种类别列,我们的目标是根据四个属性来预测鸢尾花的品种。
# 导入必要的库from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScalerfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score, classification_report# 1. 加载数据# 使用load_iris函数从scikit - learn的数据集模块中加载鸢尾花数据集iris = load_iris()# 提取特征数据X = iris.data# 提取目标标签y = iris.target# 2. 数据预处理# 通过train_test_split函数将数据集划分为训练集和测试集# test_size=0.2表示20%的数据作为测试集# random_state=42设置随机种子,以确保结果的可重复性X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 使用StandardScaler对数据进行标准化处理# 它会将数据转换为均值为0,标准差为1的分布# 这对于使用梯度下降法训练的模型(如逻辑回归)非常重要,可以加快模型的收敛速度scaler = StandardScaler()X_train = scaler.fit_transform(X_train)X_test = scaler.transform(X_test)# 3. 模型训练# 创建逻辑回归模型实例# 设置solver='lbfgs'表示使用拟牛顿法中的L - BFGS算法来求解# multi_class='auto'表示让模型自动选择合适的多分类策略# random_state=42设置随机种子,确保模型训练结果的可重复性model = LogisticRegression(solver='lbfgs', multi_class='auto', random_state=42)# 使用训练数据对模型进行训练model.fit(X_train, y_train)# 4. 模型评估# 使用训练好的模型对测试集进行预测y_pred = model.predict(X_test)# 通过accuracy_score函数计算预测准确率accuracy = accuracy_score(y_test, y_pred)print(f"模型准确率: {accuracy}")# 使用classification_report函数生成详细的分类报告# 展示模型在各个类别上的精确率、召回率和F1值等评估指标print("分类报告:\n", classification_report(y_test, y_pred))
通过上述代码及注释,可以清晰地看到实现一个逻辑回归模型从数据处理到模型训练和评估的全过程。
六、多分类拓展
逻辑回归原本是为二分类问题设计的,但在实际应用中,常常会遇到多分类的情况,这时就需要对逻辑回归进行拓展。常见的拓展方法有 One-vs-Rest(OvR)和 Softmax 回归。
(一)One-vs-Rest(OvR)
OvR 方法是把多分类问题转化为多个二分类问题。对于有 个类别的情况,我们需要训练 个逻辑回归模型。每个模型都把其中一个类别当作正类,其他类别当作负类。比如在手写数字识别中,有 0 - 9 共 10 个类别,我们就训练 10 个逻辑回归模型,第一个模型判断是不是数字 0,第二个判断是不是数字 1,以此类推。在预测时,对于一个新样本,每个模型都会输出它属于自己对应类别的概率,最后选择概率最大的那个类别作为预测结果。这种方法简单直观,计算量相对较小,但当类别较多时,可能会出现分类边界不清晰的问题。
(二)Softmax 回归
Softmax 回归是逻辑回归在多分类问题上的直接扩展。它使用 Softmax 函数将线性回归的输出转换为 个类别的概率分布。Softmax 函数定义为 ,其中 是对应于类别 的参数向量。这个函数的作用是把线性回归的输出,通过指数运算和归一化,转化为每个类别对应的概率。Softmax 回归的损失函数同样基于极大似然估计,使用交叉熵损失函数,通过梯度下降等优化算法来求解参数。它在处理多分类问题时,考虑了所有类别之间的关系,分类效果通常比 OvR 更好,但计算量也相对较大。在实际应用中,比如图像分类中的多类别分类任务,Softmax 回归经常被使用。
七、逻辑回归算法的优缺点
(一)优点
简单易理解:逻辑回归的原理和模型结构都相对简单,参数含义明确,容易被初学者掌握。无论是原理推导,还是模型训练与预测过程,都不像一些复杂的深度学习模型那样晦涩难懂。这使得它在很多对模型可解释性要求较高的场景中,如医疗诊断、金融风险评估等,有着广泛的应用。医生可以根据逻辑回归模型的参数,判断各个症状与疾病之间的关联程度;金融分析师也能依据模型结果,清晰地了解不同因素对信用风险的影响。
计算效率高:逻辑回归的计算复杂度较低,训练和预测速度快。在处理大规模数据时,它不需要像深度学习模型那样消耗大量的计算资源和时间。例如在互联网行业处理海量用户行为数据时,逻辑回归可以快速完成模型训练和预测,为业务决策提供及时支持。同时,它对硬件要求不高,普通的计算机设备就能满足运行需求,降低了应用门槛。
可解释性强:模型的参数直接反映了各个自变量对因变量的影响程度,即每个特征对于分类结果的贡献大小一目了然。通过查看参数的正负和大小,我们可以很直观地判断某个特征是增加还是减少了样本属于某一类别的概率。在市场营销中,企业可以利用逻辑回归分析不同营销因素(如广告投放渠道、促销活动等)对客户购买行为的影响,从而有针对性地调整营销策略。
不需要大量数据:相比一些复杂的机器学习算法,逻辑回归在数据量相对较小的情况下也能表现出较好的性能。它对数据的依赖性不像深度学习模型那样强烈,不需要大量的标注数据来进行训练。这在数据获取困难或标注成本较高的领域,如稀有疾病研究、小众市场调研等,具有很大的优势。研究人员可以利用有限的数据建立逻辑回归模型,进行初步的分析和预测。
(二)缺点
对数据分布有要求:逻辑回归假设数据具有线性可分性或近似线性可分性,当数据的分布不符合这一假设时,模型的性能会受到较大影响。例如在一些复杂的分类问题中,数据的特征之间存在高度非线性关系,逻辑回归可能无法准确捕捉到这些关系,导致分类准确率下降。在图像识别中,图像的特征往往非常复杂,逻辑回归很难直接对原始图像数据进行有效的分类。
容易欠拟合:由于模型本身的简单性,逻辑回归在处理复杂数据时容易出现欠拟合现象,即模型不能很好地捕捉数据中的复杂模式和规律。这使得它在面对具有高度复杂性和多样性的数据时,表现不如一些非线性模型,如决策树、支持向量机等。在预测股票价格走势这样复杂多变的任务中,逻辑回归可能无法准确反映股价的波动规律,预测效果较差。
特征处理要求高:逻辑回归对特征的要求较高,需要对特征进行合理的选择和预处理。如果特征选择不当,可能会引入无关特征或冗余特征,影响模型的性能和训练效率。同时,对于特征之间的相关性也比较敏感,如果存在高度相关的特征,可能会导致模型参数估计不准确,出现多重共线性问题。在分析消费者购买行为时,如果选择的特征中包含多个高度相关的经济指标,就可能会干扰模型对消费者行为的准确判断。
多分类拓展存在局限:虽然逻辑回归可以通过 One - vs - Rest(OvR)和 Softmax 回归等方法进行多分类拓展,但在处理类别较多的情况时,OvR 方法可能会导致分类边界不清晰,而 Softmax 回归的计算量又会显著增加,使得模型的训练和预测效率降低。在大规模图像分类任务中,当类别数量众多时,逻辑回归的多分类拓展方法往往难以满足实际需求。
八、总结
逻辑回归作为一种经典的机器学习算法,虽然原理相对简单,但在实际应用中表现出色。通过本文对逻辑回归从原理推导、优化目标定义、迭代优化参数、代码实现到多分类拓展的详细介绍,希望读者能对逻辑回归算法有更深入的理解。在实际应用中,可以根据具体问题对逻辑回归进行适当的调整和优化,比如选择合适的特征、调整学习率和迭代次数等,以获得更好的性能。同时,逻辑回归也是许多更复杂算法的基础,深入理解它有助于学习和掌握其他机器学习方法,如神经网络中的 Softmax 分类层等。在未来的研究和实践中,可以进一步探索逻辑回归在更多领域的应用,以及与其他算法的结合,发挥其更大的价值。
相关文章:
人工智能学习(五)之机器学习逻辑回归算法
深入剖析机器学习逻辑回归算法 一、引言 在机器学习领域,逻辑回归是一种极为经典且应用广泛的算法。虽说名字里带有 “回归”,但它主要用于解决分类问题,在医学、金融、互联网等多个领域都发挥着关键作用。例如,在医学上辅助判断…...
Bash 基础与进阶实践指南
目录 Bash 简介与基础基本命令与文件操作权限管理与用户管理重定向与管道变量与环境变量通配符与正则表达式Shell 脚本结构与控制流常用内建命令与技巧文本处理常用命令作业控制与进程管理别名与函数实用技巧与注意事项更多 Bash 进阶话题参考资源 1. Bash 简介与基础 1.1 什…...
基于开源AI智能名片2 + 1链动模式S2B2C商城小程序视角下的个人IP人设构建研究
摘要:本文深入探讨在开源AI智能名片2 1链动模式S2B2C商城小程序的应用场景下,个人IP人设构建的理论与实践。通过剖析个人IP人设定义中的“诉求”“特质”“可感知”三要素,结合该小程序特点,阐述其对个人IP打造的影响与推动作用&…...
基于springboot+vue的航空散货调度系统
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
【C++】B2122 单词翻转
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 💯一、我的做法代码实现:代码解析思路分析 💯二、老师的第一种做法代码实现&a…...
OSCP 渗透测试:网络抓包工具的使用指南
在 OSCP 考试和渗透测试中,网络数据分析是至关重要的技能。无论是嗅探明文密码、分析恶意流量,还是溯源攻击,抓包工具都是我们的得力助手。 本文将介绍 OSI 七层网络模型 及其在网络分析中的作用,并详细讲解 Wireshark 和 tcpdum…...
Android 进程间通信
什么是IPC? Android 进程间通信(IPC,Inter-Process Communication)是Android操作系统中不同进程间交换数据和资源的一种机制。由于Android是多任务操作系统,每个应用通常运行在自己的进程中,以提高安全性和…...
Kubernetes学习之通过Service访问Pod
一、基础概述 1.当通过deployment等controller动态创建和销毁pod使得每个pod都有自己的ip地址,当controller用新的pod替代发生故障的pod时,新的pod会分配到新的ip地址,那么客户端如何稳定的找到并访问pod提供的服务。 2.创建service service从…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.18 对象数组:在NumPy中存储Python对象
2.18 对象数组:在NumPy中存储Python对象 目录 #mermaid-svg-shERrGOBuM2rBzeB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-shERrGOBuM2rBzeB .error-icon{fill:#552222;}#mermaid-svg-shERrGOBuM2rB…...
Web - CSS3基础语法与盒模型
概述 这篇文章是关于 Web 前端 CSS3 的基础语法与盒模型的讲解。包括 CSS3 层叠性及处理冲突规则、伪元素和新增伪类元素、属性选择器等。还介绍了文本与字体属性,如段落和行相关属性、字体文本属性。最后阐述了盒子模型,如元素隐藏、行内与块元素转换、…...
CSS知识总结
CSS(层叠样式表,Cascading Style Sheets)是一种用于描述网页内容视觉表现的样式语言,与HTML(结构)和JavaScript(行为)共同构成现代Web开发的三大核心技术。 一、基本概念 定义&…...
基于Spring Security 6的OAuth2 系列之十 - 授权服务器--刷新token
之所以想写这一系列,是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级…...
信息学奥赛一本通 2113:【24CSPJ普及组】小木棍(sticks) | 洛谷 P11229 [CSP-J 2024] 小木棍
【题目链接】 ybt 2113:【24CSPJ普及组】小木棍(sticks) 洛谷 P11229 [CSP-J 2024] 小木棍 【题目考点】 1. 思维题,找规律 【解题思路】 解法1:找规律 该题为:求n根木棍组成的无前导0的所有可能的数…...
安装hami的笔记
k3s环境下安装hami提示如下错误: "failed to “StartContainer” for “kube-scheduler” with InvalidImageName: "Failed to apply default image tag “registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.31.2k3s1”: 没有Inva…...
【区块链】区块链密码学基础
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 区块链密码学基础引言一、哈希函数1.1 基本概念1.2 数学表达 二、非对称加密2.1…...
强化学习笔记(5)——PPO
PPO视频课程来源 首先理解采样期望的转换 变量x在p(x)分布下,函数f(x)的期望 等于f(x)乘以对应出现概率p(x)的累加 经过转换后变成 x在q(x)分布下,f(x)*p(x)/q(x) 的期望。 起因是:求最大化回报的期望,所以对ceta求梯度 具体举例…...
【C语言入门】解锁核心关键字的终极奥秘与实战应用(三)
目录 一、auto 1.1. 作用 1.2. 特性 1.3. 代码示例 二、register 2.1. 作用 2.2. 特性 2.3. 代码示例 三、static 3.1. 修饰局部变量 3.2. 修饰全局变量 3.3. 修饰函数 四、extern 4.1. 作用 4.2. 特性 4.3. 代码示例 五、volatile 5.1. 作用 5.2. 代码示例…...
寒假day10
第十天:请写出以下几个数据的类型 整数 a int a的地址 int* 存放a的数组b …...
本地部署与使用SenseVoice语音大模型简析
前言 SenseVoice 是一种语音基础模型,具有多种语音理解功能,包括自动语音识别 (ASR)、口语识别 (LID)、语音情感识别 (SER) 和音频事件检测 (AED)。本博客将指导您安装和使用 SenseVoice 模型,使其尽可能方便用户使用。 Github 仓库链接: ht…...
Kafka SASL/SCRAM介绍
文章目录 Kafka SASL/SCRAM介绍1. SASL/SCRAM 认证机制2. SASL/SCRAM 认证工作原理2.1 SCRAM 认证原理2.1.1 密码存储和加盐2.1.2 SCRAM 认证流程 2.2 SCRAM 认证的关键算法2.3 SCRAM 密码存储2.4 SCRAM 密码管理 3. 配置和使用 Kafka SASL/SCRAM3.1 Kafka 服务器端配置3.2 创建…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
