逻辑回归算法学习笔记

逻辑回归算法介绍:

        逻辑回归是一种常用的分类算法,用于将数据分为两个类别。与线性回归不同,逻辑回归使用的是逻辑函数(sigmoid函数)将线性输出转换为概率值,并根据概率进行分类。在本学习笔记中,我们将深入了解逻辑回归算法,并通过代码示例来说明其实现过程。

一、逻辑回归的基本原理

        逻辑回归的基本原理是使用逻辑函数将线性输出转换为概率值。逻辑函数的形式为sigmoid函数,其定义为:sigmoid(z) = 1 / (1 + exp(-z)),其中z为线性输出。sigmoid函数将z映射到[0, 1]之间的值,表示预测为正类的概率

二、逻辑回归的模型

        逻辑回归模型假设函数为:h(x) = sigmoid(w^T * x) + b,其中h(x)表示预测的概率值,w为参数向量,x为输入特征向量,b为截距。

三、逻辑回归的损失函数

        逻辑回归使用交叉熵损失函数来衡量预测值与真实标签之间的差异。对于二分类问题,交叉熵损失函数定义为:J(w) = -(1/m) * ∑[y*log(h(x)) + (1-y)*log(1-h(x))],其中m为样本数量,y为真实标签,h(x)为预测的概率值。

四、逻辑回归的参数优化

        逻辑回归采用梯度下降算法来最小化损失函数,从而优化参数向量w和截距b。梯度下降的基本思想是根据损失函数的梯度方向,以一定的学习率对参数进行更新。

五、逻辑回归算法应用场景

        逻辑回归算法在日常生活中可能没有直接的应用,但它的应用在各个领域中间接影响了我们的生活。以下是一些日常生活中间接用到逻辑回归算法的场景:

  1. 推荐系统:逻辑回归算法在推荐系统中发挥着重要作用。当我们在电商或视频平台上浏览商品或观看视频时,推荐系统会根据我们的行为和偏好,使用逻辑回归算法来预测我们可能感兴趣的商品或视频,并将其推荐给我们。

  2. 社交媒体广告:社交媒体平台如Facebook、Instagram等广泛使用逻辑回归算法来确定向哪些用户展示广告。这些平台会根据用户的个人信息、兴趣和行为,使用逻辑回归算法来预测用户是否对广告感兴趣,并将相关广告展示给符合条件的用户。

  3. 垃圾邮件过滤:在电子邮件中,垃圾邮件过滤是一个非常常见的问题。逻辑回归算法可以根据邮件的内容、发件人和其他特征,预测是否是垃圾邮件,并将其过滤掉。

  4. 互联网欺诈检测:逻辑回归算法可以用于互联网欺诈检测,例如检测信用卡交易中的欺诈行为。根据交易的特征和历史数据,逻辑回归算法可以预测交易是否可能是欺诈,并采取相应的安全措施。

  5. 健康状况预测:逻辑回归算法可以应用于健康状况的预测,如根据个人体征和生活习惯等特征,预测是否有潜在的健康问题,并提供个性化的健康建议。

六、逻辑回归算法代码详解 

import numpy as npdef sigmoid(z):'''定义逻辑函数(Sigmoid函数)'''return 1 / (1 + np.exp(-z))def logistic_regression(X, y, learning_rate=0.01, num_iterations=1000):'''逻辑回归算法实现参数:X: 输入特征矩阵,形状为 (m, n), m 为样本数量, n 为特征数量y: 标签矩阵,形状为 (m, 1)learning_rate: 学习率num_iterations: 迭代次数返回值:w: 参数向量,形状为 (n, 1)b: 截距值'''m, n = X.shapew = np.zeros((n, 1))  # 初始化参数向量 wb = 0  # 初始化截距 bfor iteration in range(num_iterations):# 计算线性输出z = np.dot(X, w) + b# 将线性输出转换为概率值y_pred = sigmoid(z)# 计算梯度dz = y_pred - ydw = (1 / m) * np.dot(X.T, dz)db = (1 / m) * np.sum(dz)# 更新参数w -= learning_rate * dwb -= learning_rate * dbreturn w, b

        上述代码中,我们首先定义了逻辑函数(sigmoid函数),用于将线性输出转换为概率值。然后,我们定义了逻辑回归算法的主要函数logistic_regression(),该函数接受输入特征矩阵 X、标签矩阵 y,以及可选的学习率 learning_rate 和迭代次数 num_iterations

        在logistic_regression()函数中,首先初始化参数向量 w 和截距值 b。接下来,使用循环迭代的方式,进行梯度下降更新参数。在每一次迭代中,计算线性输出 z,并通过逻辑函数将其转换为预测的概率值 y_pred。然后,计算预测值与真实标签之间的梯度,分别计算参数向量 w 和截距值 b 的梯度。

        最后,根据学习率和梯度,更新参数向量 w 和截距值 b。重复进行这一过程,直到达到指定的迭代次数。

        接下来,我们可以使用上述代码来训练逻辑回归模型,并得到训练得到的参数 w 和截距 b 的值。

# 示例使用
X = np.array([[1, 2], [3, 4], [5, 6]])  # 输入特征矩阵
y = np.array([[0], [0], [1]])  # 二分类标签矩阵w, b = logistic_regression(X, y)print("参数 w:", w)
print("截距 b:", b)

        在示例中,我们使用了一个简单的输入特征矩阵 X 和二分类标签矩阵 y。然后,调用 logistic_regression() 函数来训练逻辑回归模型,并得到训练得到的参数 w 和截距 b 的值。

        最后,我们打印输出参数 w 和截距 b 的值。这样,我们就可以得到逻辑回归模型的训练结果。

 七、逻辑回归算法的算法逻辑步骤

        逻辑回归算法的算法逻辑可以解释为以下几个步骤:

  1. 数据准备:首先,我们准备训练数据集,其中包括输入特征矩阵 X 和对应的二分类标签矩阵 y。每个样本的特征向量表示为 X = [x1, x2, ..., xn],对应的标签为 y = 0 或 y = 1

  2. 参数初始化:为逻辑回归模型的参数向量和截距项分别赋予初始值。参数向量 w = [w1, w2, ..., wn] 用于线性组合输入特征,截距项 b 则表示偏移量。

  3. 建立假设函数:为了建立模型,我们定义一个假设函数来预测样本属于正例的概率。假设函数采用逻辑函数(Sigmoid函数)来实现,该函数能够将任意实数映射到区间 [0, 1] 上。通过逻辑函数,我们将线性组合的输入特征和模型的参数转化为概率,假设函数为: hθ(x) = sigmoid(w^T * x + b),其中 w^T 表示参数向量的转置。

  4. 定义损失函数:为了评估模型的预测效果,我们引入损失函数来衡量预测结果与真实标签的差异。在逻辑回归中,我们采用对数似然损失函数(LogLoss)作为代价函数,用于衡量预测概率与真实标签的一致性。

  5. 梯度下降优化:为了最小化损失函数,我们使用梯度下降优化算法来更新模型参数。通过计算损失函数对模型参数的偏导数(即梯度),我们可以确定梯度下降的方向,以及每次迭代需要更新的步长。

  6. 参数更新:在每次迭代中,根据梯度和学习率,通过参数更新公式 θ = θ - α * ∇J(θ) 更新参数 w 和 b。其中 α 表示学习率,控制每次更新的步长。

  7. 迭代训练:重复执行参数更新步骤,直到达到收敛条件或达到预设的迭代次数。

  8. 模型评估:使用训练好的参数,对新样本进行预测,并通过评估指标(如准确率、精确率和召回率等)来评估模型的性能。

        逻辑回归算法的逻辑解释是使用逻辑函数将线性组合的输入特征映射到 [0, 1] 的概率区间,然后通过最小化损失函数,通过梯度下降算法对模型参数进行迭代优化的过程。最终得到的模型可以应用于新样本的预测任务,输出样本属于正例的概率值。该算法在二分类问题中具有简单、高效的特点,适用于多个实际应用场景。

 八、逻辑回归算法总结

        逻辑回归算法是一种用于解决二分类问题的监督学习算法。它的核心思想是通过建立一个逻辑回归模型,将输入特征与对应的概率联系起来,然后使用梯度下降等优化算法,对模型参数进行迭代优化,使得模型能够对新的样本进行分类预测。

        以下是逻辑回归算法的一些总结要点:

  1. 逻辑函数:逻辑回归算法使用逻辑函数(Sigmoid函数)将线性组合的输入特征转换为概率值,将任意实数映射到 [0, 1] 区间上。

  2. 假设函数:逻辑回归算法使用假设函数来描述输入特征和概率之间的关系,在二分类问题中,假设函数通常被定义为 hθ(x) = sigmoid(w^T * x + b)

  3. 损失函数:逻辑回归使用对数似然损失函数(LogLoss)来衡量预测结果与真实标签的差异,损失函数为 J(θ) = −(y * log(hθ(x)) + (1−y) * log(1−hθ(x))) ,其中 θ 表示模型参数, hθ(x) 表示假设函数的输出值。

  4. 参数优化:逻辑回归算法通过最小化损失函数来求解最优的模型参数。常用的优化方法是梯度下降算法,通过计算损失函数对模型参数的梯度,以迭代的方式更新参数,使得损失函数不断减小。

  5. 多项式逻辑回归:逻辑回归算法可以扩展到多项式逻辑回归,通过引入高阶特征或特征交互项来增加模型的拟合能力。

  6. 正则化:为了防止过拟合,逻辑回归算法可以通过正则化技术来控制模型的复杂度,常用的正则化方法有L1正则化和L2正则化。

  7. 特征工程:逻辑回归算法在实际应用中,需要进行特征工程,包括数据预处理、特征选择、特征转换等步骤,以提升模型的性能。

  8. 评估和预测:逻辑回归算法通过给定训练集数据,学习得到最优的模型参数,然后可以使用该模型对新样本进行分类预测。常用的评估指标包括准确率、精确率、召回率等。

        逻辑回归算法简单、高效,在二分类问题中具有广泛的应用,例如信用风险评估、垃圾邮件过滤、疾病诊断等。它对输入特征没有严格的要求,适用于线性可分和线性不可分的情况,并且可以方便地与其他机器学习算法进行集成。然而,逻辑回归算法也有一些限制,例如对噪声和离群点敏感,无法处理非线性关系等问题。

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

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

相关文章

蒲公英路由器如何设置远程打印?

现如今,打印机已经是企业日常办公中必不可少的设备,无论何时何地,总有需要用到打印的地方,包括资料文件、统计报表等等。 但若人在外地或分公司,有文件急需通过总部的打印机进行打印时,由于不在同一物理网络…

ceph对象三元素data、xattr、omap

这里有一个ceph的原则,就是所有存储的不管是块设备、对象存储、文件存储最后都转化成了底层的对象object,这个object包含3个元素data,xattr,omap。data是保存对象的数据,xattr是保存对象的扩展属性,每个对象…

cortex-A7核LED灯实验--STM32MP157

实验目的:实现LED1 / LED2 / LED3三盏灯工作 一,分析电路图 1,思路 分析电路图可知: 网络编号 引脚编号 LED1 PE10 LED2 > PF10 LED3 > PE8 2,工作原理: 写1:LED灯亮&#xf…

Spring Cloud Alibaba-Sentinel规则

1 流控规则 流量控制,其原理是监控应用流量的QPS(每秒查询率) 或并发线程数等指标,当达到指定的阈值时 对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。 第1步: 点击簇点链路,我们就可以看到访…

linux shell函数和返回值

shell函数可以有返回值,但是只能返回0-255作为状态值,不能返回字符串,字符串可以通过其他方式传递给调用者 1.shell函数的return 小于255的值 ~/Desktop$ cat b.sh getLastSize() { size2 return $size }getLastSize lastSize$? echo &qu…

提升系统管理:监控和可观察性在DevOps中的作用

在不断发展的DevOps世界中,深入了解系统行为、诊断问题和提高整体性能的能力是首要任务之一。监控和可观察性是促进这一过程的两个关键概念,为系统的健康和性能提供了宝贵的可见性。虽然这些术语经常可以互换使用,但它们代表着理解和管理复杂…

一篇文章带你了解-selenium工作原理详解

前言 Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome&#xff0c…

RK3562 VS RK3566 性能解析

RK3562是深圳触觉智能最新推出的一款高性能核心板及其开发套件,采用四核A53Mali G52架构,主频2GHz,内置1T NPU算力以及13M ISP,拥有丰富的外围接口。其次在解码方面,支持H.264 1080P60fps、H.265 4K30fps;编…

EMQX启用双向SSL/TLS安全连接以及java连接

作为基于现代密码学公钥算法的安全协议,TLS/SSL 能在计算机通讯网络上保证传输安全,EMQX 内置对 TLS/SSL 的支持,包括支持单/双向认证、X.509 证书、负载均衡 SSL 等多种安全认证。你可以为 EMQX 支持的所有协议启用 SSL/TLS,也可…

cocos 2.4 版本 设置物理引擎步长 解决帧数不一致的设备 物理表现不一致问题 设置帧刷新率

官网地址Cocos Creator 3.8 手册 - 2D 物理系统 官网好像写的不太对 下面是我自己运行好使的 PhysicsManager.openPhysicsSystem()var manager cc.director.getPhysicsManager();// 开启物理步长的设置manager.enabledAccumulator true;// cc.PhysicsManagercc.PhysicsManag…

Leetcode109. 有序链表转换二叉搜索树

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度…

python+django+协同过滤算法-基于爬虫的个性化书籍推荐系统(包含报告+源码+开题)

为了提高个性化书籍推荐信息管理的效率;充分利用现有资源;减少不必要的人力、物力和财政支出来实现管理人员更充分掌握个性化书籍推荐信息的管理;开发设计专用系统--基于爬虫的个性化书籍推荐系统来进行管理个性化书籍推荐信息,以…

达观RPA实战示例-JSON数据解析

一、应用背景 日常开发中有很多地方需要对JSON数据进行解析。本文主要讲解通过达观RPA的自定义脚本、可视化控件等方式来解析JSON数据。 二、数据准备与知识 (一)数据准备 本文使用到的JSON数据如下,它可以使存放在文本文件中的字符串,也可以是通过http请求获取的文本。…

Go Map

学习了GO语言中数组,切片类型,但是我们发现使用数组或者是切片存储的数据量如果比较大,那么通过下标来取出某个具体的数据的时候相对来说,比较麻烦。例如: names : []string{"张三","李四","…

leetcode做题笔记120. 三角形最小路径和

给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一…

【JavaScript】版本判断

用于客户端和服务端进行版本更新判断使用,如有BUG,还望指出 效果 console.log(isAllowUpdate(1,2.0.0), // trueisAllowUpdate(2.0,2.0.0), // falseisAllowUpdate(2.0,2.0.1), // trueisAllowUpdate(2.1.1,2.1.2), // trueisAllowUpdate(2.1.3,2.1.2),…

Spring Boot集成MyBatis Plus

文章目录 一、前言二、步骤2.1、步骤 1:创建 Spring Boot 项目2.2、添加依赖2.2.1、基本的Spring和Spring MVC功能2.2.2、MySQL驱动依赖2.2.3、 MyBatis Plus 的依赖 2.3、配置数据库连接2.4、创建实体类2.5、创建 Mapper 接口2.6、编写 Service 层2.7、编写 Contro…

前端vue3+ts架构

1、vue creat 项目名称 选择自定义 选择需要的依赖 选择vue3 一路enter,选择eslistprettier 继续enter,等待安装 按步骤操作,项目启动成功 2、vscode安装5款插件 2、代码保存自动格式化,保证每个开发人员代码一致,根目…

数据结构体--5.0图

目录 一、定义 二、图的顶点与边之间的关系 三、图的顶点与边之间的关系 四、连通图 五、连通图的生成树定义 一、定义 图(Graph)是由顶点的又穷非空集合合顶点之间边的集合组成,通常表示为:G(V,E&…

CSC7203S 应用注意事项

CSC7203S 为高性能电流模式 PWM 开关电源功率转换器,满足绿色环保标准;广泛适用于经济型开关电源,如 DVD、机顶盒、传真机、打印机、LCD 显示器等。CSC7203S采用SOP-8封装。  内置 700V 高压功率开关管  输入电压(85V~265V&a…