分类算法——逻辑回归 详解

news2024/11/7 3:29:15

        逻辑回归(Logistic Regression)是一种广泛使用的分类算法,特别适用于二分类问题。尽管名字中有“回归”二字,逻辑回归实际上是一种分类方法。下面将从底层原理、数学模型、优化方法以及源代码层面详细解析逻辑回归。

1. 基本原理

1.1 数学模型

        逻辑回归的核心思想是将线性回归的输出通过一个逻辑函数(sigmoid函数)转化为概率值。给定输入特征向量 x=\left [ x_{1},x_{2}, ... ,x_{n} \right ] ,逻辑回归模型可以表示为:

z=\beta _{0} + \beta _{1}*x_{1} + \beta _{2}*x_{2} + ... + \beta _{n}*x_{n} = + \beta^{T}*x

这里,\beta _{0}​ 是截距项,\beta _{1} , \beta _{2} ,... ,\beta _{n}​ 是特征对应的权重。

然后通过 sigmoid 函数将 z 转化为概率:

h(x)= \sigma \left ( z \right ) = \frac{1}{1+e^{-z}} = \frac{1}{1+e^{-\beta ^{\tau }x}}

其中, h(x) 表示给定输入特征 x 预测为正类的概率。

整体的流程

结果类似于:

1.2 目标函数

逻辑回归的目标是最大化似然函数(Likelihood Function),其形式为:

这里,y^{(i)} 是第 i 个样本的标签,m 是样本数量。通过取对数得到对数似然函数:

2. 优化方法

        为了找到最佳的参数 β,通常使用梯度下降牛顿法等优化算法来最小化负的对数似然函数。

2.1 梯度下降法

更新参数的公式为:

梯度下降例子图示:

这里,\alpha 是学习率,​\frac{\partial l}{\partial\beta _{j}}  是对数似然函数的梯度,可以通过链式法则计算:

2.2 牛顿法

牛顿法利用二阶导数信息(Hessian矩阵)来更快收敛:

\beta:=\beta - H^{-1}g  

其中,g 是梯度,H 是 Hessian 矩阵。牛顿法的优势在于收敛速度快,但计算复杂度较高。

                         绿色为梯度下降,红色为牛顿法,牛顿法的路径更加直接        

3. 源代码层面

下面是使用 Python 的 scikit-learn 库实现逻辑回归的示例代码:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 加载数据
data = load_iris()
X = data.data
y = (data.target == 0).astype(int)  # 将目标转换为二分类

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建逻辑回归模型
model = LogisticRegression(solver='liblinear')

# 拟合模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

4. 逻辑回归的优缺点

优点
  • 简单易理解:模型结构简单,便于解释和实现。
  • 计算效率高:相比复杂模型,逻辑回归的计算开销较小。
  • 适用性广:可以处理线性可分的二分类问题,且经过适当变换后可应用于多分类问题。
缺点
  • 线性假设:假设特征与输出之间是线性关系,对复杂非线性关系表现不佳。
  • 对异常值敏感:逻辑回归对异常值比较敏感,可能会影响模型性能。
  • 特征独立性假设:逻辑回归假设特征之间是独立的,特征间的相关性可能会影响预测准确性。

总结

        逻辑回归是一种强大而有效的分类算法,能够通过概率的方式对输入数据进行建模。其底层原理基于线性模型和逻辑函数的组合,优化过程使用梯度下降等方法来调整模型参数。尽管有其局限性,但在许多实际应用中依然表现优越,尤其在特征数量较少且具有线性可分性的情况下。

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

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

相关文章

AutoGLM:智谱AI的创新,让手机成为你的生活全能助手

目录 引言一、AutoGLM:开启AI的Phone Use时代二、技术核心:AI从“语言理解”到“执行操作”三、实际应用案例:AutoGLM的智能力量1. 智能生活管理🍎2. 社交网络的智能互动🍑3. 办公自动化🍒4. 电子商务的购物…

利用ChatGPT完成2024年MathorCup大数据挑战赛-赛道A初赛:台风预测与分析

利用ChatGPT完成2024年MathorCup大数据挑战赛-赛道A初赛:台风预测与分析 引言 在2024年MathorCup大数据挑战赛中,赛道A聚焦于气象数据分析,特别是台风的生成、路径预测、和降水风速特性等内容。本次比赛的任务主要是建立一个分类评价模型&…

Latex中Reference的卷号加粗的问题

找到模板中的.bst文件,查找volume,修改如下 添加bold,卷号会加粗,去掉则正常

国产光耦合器在现代应用中的作用和进步

国产光耦合器已成为各行各业必不可少的元件,有助于确保信号完整性、保护控制系统并提供强大的电气隔离。随着技术的进步,国内制造商提高了光耦合器的质量和可靠性,使其适用于一系列关键应用。本文探讨了国产光耦合器的优势、其应用及其对关键…

《数值分析》实验报告-线性方程组求解

文章目录 1. 实验目标2. 实验内容2.1 设计界面2.2 实现解法2.2.1 高斯消元法2.2.2 克劳斯消元法2.2.3 列主元素法 2.3 结果展示 3. 实现过程3.1 选择并设计算法3.1.1 高斯消元法3.1.2 克劳斯消元法3.1.3 列主元素法 3.2 设计 Tkinter 界面3.3 编写代码实现3.4 结果显示 4. 输入…

SpringBoot接入星火认知大模型

文章目录 准备工作整体思路接入大模型服务端和大模型连接客户端和服务端的连接测试 准备工作 到讯飞星火大模型上根据官方的提示申请tokens 申请成功后可以获得对应的secret,key还有之前创建的应用的appId,这些就是我们要用到的信息 搭建项目 整体思…

使用OpenAI控制大模型的输出(免费)——response_format

免费第三方api-key(硅基流动)使用OpenAI格式,还能控制大模型的输出格式,不能说真香,只能说 真香Plus! API-Key领取方法看这篇教程 【1024送福利】硅基流动送2000万token啦!撒花✿✿ 附使用教程 支持十几个免费的大模…

Databend 产品月报(2024年10月)

很高兴为您带来 Databend 2024 年 10 月的最新更新、新功能和改进!我们希望这些增强功能对您有所帮助,并期待您的反馈。 Databend Cloud:多集群的计算集群 多集群的计算集群会根据工作负载需求自动调整计算资源,添加或移除集群。…

多线程编程与并发控制缓存策略负载均衡数据库优化

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

硅谷甄选(8)spu

Spu模块 SPU(Standard Product Unit):标准化产品单元。是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。 7.1 Spu模块的静态…

【Three.js】SpriteMaterial 加载图片泛白,和原图片不一致

解决方法 如上图所示,整体泛白了,解决方法如下,添加 material.map.colorSpace srgb const imgTexture new THREE.TextureLoader().load(imgSrc)const material new THREE.SpriteMaterial({ map: imgTexture, transparent: true, opacity:…

【高阶数据结构】红黑树的插入

🤡博客主页:醉竺 🥰本文专栏:《高阶数据结构》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多《高阶数据结构》点击专栏链接查看&a…

CCNA对学历有要求吗?看看你是否有资格报考

思科认证网络助理工程师CCNA作为网络工程领域的权威认证之一,备受年轻人的青睐。然而,对于部分文化水平较低的年轻人来说,他们可能会有一个疑问:CCNA认证对学历有要求吗? 一、CCNA对学历有要求吗? 没有! 针对这一问题&#…

别再盲目选购随身WiFi了!一文教你精准挑选最适合自己的随身WiFi!随身wifi哪个牌子的最好用?

市面上随身WiFi种类繁多,4G/5G,单网设备/三网设备,电池款/USB款/充电宝款等难以抉择。本文旨在为你提供一份详尽的随身WiFi选购指南! 首先,明确需求:4G还是5G? 日常用网,如浏览视频…

天锐绿盾加密软件与Ping32:信息安全领域的双子星,谁将引领加密新风尚?

在信息安全这片广袤的星空中,有两颗璀璨的明星格外引人注目,它们就是天锐绿盾加密软件和Ping32。这两款加密软件各自以其卓越的性能、全面的功能和深度的安全保障,赢得了众多企业的青睐。那么,在它们之间,谁将引领加密…

《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 构建公共能力层》

上一篇大概说了 《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 构建基础特性层》,这一篇继续开发 构建公共能力层。 公共能力层 主要针对公共能力层的各子目录将被编译成HAR包,而他们只能被产品定制层和基础特性层所依赖…

开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序与私域流量圈层

摘要:本文探讨了私域流量圈层的特点以及其在当今时代的重要性,分析了开源 AI 智能名片 21 链动模式 S2B2C 商城小程序源码在私域流量圈层构建中的作用,阐述了产品在圈层时代被标签化的现象,并以实例展示了如何利用该小程序源码打造…

【网络】传输层协议TCP(中)

目录 四次挥手状态变化 流量控制 PSH标记位 URG标记位 四次挥手状态变化 之前我们讲了四次挥手的具体过程以及为什么要进行四次挥手,下面是四次挥手的状态变化 那么我们下面可以来验证一下CLOSE_WAIT这个状态,这个状态出现的条件是后调用close的一方…

11款PDF阅读器深度体验分享!你选哪一款?

不管是哪个行业还是哪个职位,每天处理的文件中,PDF格式的文档占据了相当大的比例。为了提高工作效率,我尝试了市面上几款流行的PDF阅读器,下面来和大家分享我用过的11款PDF阅读软件怎么样吧。 一、福昕PDF编辑器 直达通道&#…

Gradle篇(入门到精通)

目录 一、前言 1. 项目构建历史 1.1. 传统方式 1.2. 构建工具 1.3. Gradle 2. 初始 groovy 2.1. 什么是 Groovy 2.2. Groovy 安装环境 2.3. groovy 与 Java 对比 3. groovy 特性 3.1. 基础语法 3.2. 闭包 二、gradle 实战 1. Gradle 环境搭建 1.1. 安装 gradle …