机器学习04-逻辑回归(python)-02原理与损失函数

 

1. 逻辑回归概念

逻辑回归(Logistic Regression) 是一种 分类模型,主要用于解决 二分类问题(即分成两类,如是否通过、是否患病等)。逻辑回归的目标是根据输入的特征预测一个 概率,这个概率值介于 0 到 1 之间。

逻辑回归与线性回归的关系:
  • 线性回归 是用来预测连续值的(如房价、身高),它输出的是一个具体的数值。

  • 逻辑回归 则是用来预测类别的(如是否通过考试),它通过一个线性模型输出一个概率值,表示某个样本属于某一类别的概率。

总结:
  • 线性回归输出数值,而逻辑回归输出概率

  • 逻辑回归的输出值是 0 到 1 之间的概率,通常我们会设定一个阈值,比如 0.5,将大于 0.5 的归为 1 类,低于 0.5 的归为 0 类。


2. 基本思想

逻辑回归的基本思想,我们可以从以下几个步骤来理解。

Step 1. 线性模型

逻辑回归首先构建的是一个线性模型,即根据输入的特征计算出一个值:[ f(x) = w^T x + b ] 这里的 ( w ) 是权重向量,表示每个特征的重要性;( b ) 是偏置项,帮助调整模型的输出。

这个线性模型的输出 ( w^T x + b ) 可以是任何实数(正数、负数、大值、小值都有可能)。但是我们不能直接使用这个值进行分类,因为分类任务需要输出的值在 0 到 1 之间,表示概率。

Step 2. Sigmoid 函数

为了将线性模型的输出值转换为 0 到 1 之间的概率值,逻辑回归使用了 Sigmoid 函数[ \sigma(z) = \frac{1}{1 + e^{-z}} ]其中,( z = w^T x + b )

Sigmoid 函数的作用

  • 将任意实数映射到 0 到 1 之间。例如,当 ( z ) 非常大时,Sigmoid 函数的输出接近 1;当 ( z )非常小时,Sigmoid 函数的输出接近 0。

  • 输出的概率值( \sigma(z) ) 表示样本属于某一类别(通常为 1 类)的概率。

Step 3. 分类预测

逻辑回归的最终目标是对样本进行分类。我们通常通过设定一个 阈值 来判断:

  • 如果 Sigmoid函数的输出概率值大于设定的阈值(如 0.5),则预测该样本属于 1 类

  • 如果小于阈值,则预测该样本属于 0 类

总结:逻辑回归首先通过线性模型计算出一个值,然后将该值通过 Sigmoid 函数转换为概率,最后根据设定的阈值进行分类。


3. 逻辑回归的假设函数

在逻辑回归中,假设函数表示的是模型如何通过输入 ( x ) 得到输出的概率值。假设函数如下:[ h_\theta(x) = \sigma(w^T x + b) ]其中:

  • ( w^T x + b ) 是输入特征的线性组合;

  • ( \sigma(z) ) 是 Sigmoid 函数,用来将线性模型的输出转换为概率值。

通过这个假设函数,我们可以将任何输入特征转换为一个概率值,这个概率值用于表示样本属于某一类的可能性。


4. 逻辑回归的预测过程(PPT中的例子)

看PPT中的例子,假设有一组样本输入特征,逻辑回归的预测过程可以总结为以下几个步骤:

  1. 输入样本特征:如一个人的年龄、体重、是否吸烟等特征。

  2. 线性回归计算:根据权重 ( w ) 和偏置 ( b ),计算出线性回归的结果 ( w^T x + b )

  3. Sigmoid 函数转换:将线性回归的输出通过 Sigmoid 函数转换为概率值。

  4. 分类结果:根据设定的阈值,将概率值转换为预测类别。

举例:

假设有一个样本的输入特征为 ( x = [年龄, 体重, 是否吸烟] ),计算过程如下:

  • 使用权重和特征的线性组合计算出 ( f(x) = w^T x + b ),例如输出为 1.5。

  • 通过 Sigmoid 函数将 1.5 转换为概率 ( \sigma(1.5) = 0.82 )

  • 假设阈值为 0.6,由于 0.82 > 0.6,因此预测该样本属于 1 类


5. 损失函数:对数似然损失

为了衡量逻辑回归模型的好坏,我们需要计算 损失函数。损失函数表示模型的预测值与真实值之间的差距。逻辑回归使用的损失函数是 对数似然损失函数,又称为 交叉熵损失(Cross-Entropy Loss)

损失函数的公式如下:[ L(\theta) = - \sum_{i=1}^{m} [y_i \log(p_i) + (1 - y_i) \log(1 - p_i)] ] 其中:

  • ( y_i )是第 ( i ) 个样本的真实类别(0 或 1);

  • ( p_i ) 是模型预测第 ( i ) 个样本属于 1 类的概率。

损失函数的工作原理:
  • 如果样本的真实标签是 1,那么模型预测的概率值( p_i )越接近 1,损失就越小。

  • 如果样本的真实标签是 0,那么模型预测的概率值 ( p_i ) 越接近 0,损失也越小。

举例:

假设我们有一个样本,它的真实类别是 1,模型预测它的概率为 0.9。根据损失函数公式: [ 损失 = - (1 \cdot \log(0.9)) = - \log(0.9) ] 由于预测的概率接近真实值(1 类),损失较小,说明模型预测得很好。

如果模型预测的概率为 0.1(远离真实值),则损失会非常大,表明模型预测得很差。


6. 逻辑回归的优化:梯度下降

为了让模型能够更好地预测,我们需要找到 最优的参数 ( w ) 和 ( b )。为此,我们使用 梯度下降 来最小化损失函数。

梯度下降的步骤:
  1. 计算损失函数的梯度:损失函数对参数 ( w ) 和 ( b ) 的偏导数。

  2. 更新参数:沿着负梯度方向更新参数,使得损失函数的值逐渐减小。

更新公式如下:[ w = w - \alpha \cdot \frac{\partial L}{\partial w} ]这里的 ( \alpha ) 是学习率,控制每次更新的步长大小。

通过反复进行梯度下降,模型会逐渐找到最优的参数,使得损失函数达到最小值。


总结

  • 逻辑回归的工作原理:逻辑回归通过线性模型输出一个值,并通过 Sigmoid 函数将其转换为 0 到 1 之间的概率值,表示样本属于某一类的概率。

  • 损失函数:使用对数似然损失函数衡量模型预测结果与真实结果的差距,模型通过最小化损失函数来优化自身参数。

  • 梯度下降:通过梯度下降算法更新模型的参数,使损失函数逐渐减小,找到最优的模型参数。

逻辑回归是一种非常直观和基础的分类算法,理解了它的原理可以帮助我们更好地理解其他更复杂的模型。

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

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

相关文章

计算机毕业设计hadoop+spark+hive新能源汽车销售数据分析系统 二手车销量分析 新能源汽车推荐系统 可视化大屏 汽车爬虫 机器学习

《HadoopSparkHive新能源汽车销售数据分析系统》开题报告 一、选题背景与意义 1.1 选题背景 随着全球对环境保护意识的增强和能源结构的转型,新能源汽车市场迅速崛起。新能源汽车的销售数据不仅反映了市场趋势和消费者偏好,还为企业决策、政府监管和政…

微服务——网关登录校验(一)

1.网关登录校验 微服务中的网关登录校验是微服务架构中常见的一种安全机制,用于在请求到达微服务之前,对用户的身份进行验证,确保只有合法的用户才能访问相应的服务。 在微服务架构中,每个微服务都是独立部署的,它们之…

(C++17) optional 的 3 种用法

文章目录 *️⃣前言*️⃣3 种主流用法1️⃣函数返回值2️⃣函数参数3️⃣类成员 ⭐END🌟跋🌟交流方式 *️⃣前言 在 C17 中标准化了 std::optional。该类型可以容纳一种类型,且判断是否有无。 若使用的标准在低于 C17 则可以使用 Abseil 的…

浅谈递推法

递推法 递推法是一种数学方法,用于通过利用已知的初始条件和递推关系来计算要求中的每一项。以数列来举例,在递推法中,它的思想很简单:我们首先知道数列的第一项(初始条件),然后通过一个规律&a…

GEE 数据集:人类造成的热带潮湿森林退化程度的估计

目录 简介 摘要 代码 结论 数据和代码 引用 网址推荐 0代码在线构建地图应用 机器学习 人类造成的热带潮湿森林退化程度超出了先前的估计 简介 选择性采伐、火灾和边缘效应造成的热带森林退化是碳和生物多样性损失的主要驱动因素1,2,3,其年增长率可与森林砍伐相媲美…

Golang | Leetcode Golang题解之第424题替换后的最长重复字符

题目: 题解: func characterReplacement(s string, k int) int {cnt : [26]int{}maxCnt, left : 0, 0for right, ch : range s {cnt[ch-A]maxCnt max(maxCnt, cnt[ch-A])if right-left1-maxCnt > k {cnt[s[left]-A]--left}}return len(s) - left }f…

【算法题】63. 不同路径 II-力扣(LeetCode)-”如果起点有障碍物,那么便到不了终点“

【算法题】63. 不同路径 II-力扣(LeetCode)-”如果起点有障碍物,那么便到不了终点“ 1.题目 下方是力扣官方题目的地址 63. 不同路径 II 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下…

【全网最全】2024年华为杯研赛A题成品论文获取入口(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 点击链接加入【2024华为杯研赛资料汇总】:https://qm.qq.com/q/hMgWngXvcQhttps://qm.qq.com/q/hMgWngXvcQ你是否在寻找数学建模比赛的突破点&am…

BUUCTF逆向wp [WUSTCTF2020]Cr0ssfun

第一步 查壳,本题是64位,无壳。 第二步 查看主函数,点开看主函数,没什么东西。 左边表里面看到好几个i开头的函数(红色方框里面),点开看后每个函数的最后末尾(图中红色椭圆圈那里&a…

(笔记自用)位运算总结+LeetCode例题:颠倒二进制位+位1的个数

一.位运算总结: 在解题之前理解一下为什么需要位运算?它的本质是什么? 力扣上不少位运算相关的题,并且很多题也会用到位运算的技巧。这又是为什么? 位运算的由来 在计算机里面,任何数据最终都是用数字来表示的&…

在Java中基于GeoTools的Shapefile读取乱码的问题解决办法

目录 前言 1、Shapefile属性字段编码的情况: 一、Shp文件常见的字符集编码 1、System编码 2、ISO-8859-1编码 3、UTF-8编码 二、GeoTools解析实战 1、未进行字符处理 2、乱码问题的解决 3、转码支持 4、属性字段编码结果 三、总结 前言 文件编码&#x…

分布式锁优化之 使用lua脚本改造分布式锁保证判断和删除的原子性(优化之LUA脚本保证删除的原子性)

文章目录 1、lua脚本入门1.1、变量:弱类型1.2、流程控制1.3、在lua中执行redis指令1.4、实战:先判断是否自己的锁,如果是才能删除 2、AlbumInfoApiController --》testLock()3、AlbumInfoServiceImpl --》testLock() 1、lua脚本入门 Lua 教程…

Linux基础命令以及常识

镜像站点服务器(相当于下载的网址)也可叫软件源 vim /etc/apt/sources.list 索引文件(网络服务器在本地的缓存) 服务器软件源在本地列出来一个清单,以便于主机进行查询操作 cd /var/lib/apt/lists/ 下载软件包默认存放路径 cd /var/cache/a…

认识NDK

什么是NDK(Native Development Kit) The Android NDK is a toolset that lets you implement parts of your app in native code, using languages such as C and C. &emdp; Android NDK 是一个工具集,可让您使用 C 和 C 等语言以原生代…

重型工程车辆数据集

重型工程车辆数据集,内含Bull_dozer(推土机), Dumb_truck(卡车), Excavator(挖掘机), Grader(平地机), Loader(转载机), Mobile_crane&#xff08…

『功能项目』QFrameWork拾取道具UGUI【69】

本章项目成果展示 我们打开上一篇68QFrameWork扔到地上UGUI的项目, 本章要做的事情是实现当物品在地上时,点击物品将对应物品转移到道具栏中 制作一个提示UI界面 添加Button组件设置为点击即将父物体隐藏 拖拽到文件夹中在场景中删除 创建脚本&#xf…

架构师:使用 Zookeeper 实现分布式锁的技术指南

1、简述 在分布式系统中,多个节点可能需要访问共享资源或执行需要互斥的操作,为了避免竞争导致数据不一致或资源争用,我们需要一种机制来协调各个节点对资源的访问。分布式锁是用于解决这种竞争问题的关键技术,它确保在同一时间只有一个节点能够访问或修改共享资源。 2、Z…

Ansible部署与应用基础

由于互联网的快速发展导致产品更新换代速度逐步增长,运维人员每天都要进行大量的维护操作,按照传统方式进行维护使得工作效率低下。这时部署自动化运维就 可以尽可能安全、高效的完成这些工作。 一、Ansible概述 1.什么是Ansible Ansible 是基于 Pytho…

Matplotlib绘图基础

1、散点图 绘制散点图是数据可视化中非常常见的操作,它用于显示两组数据之间的关系。Matplotlib 提供了 plt.scatter() 函数,可以轻松绘制散点图。以下是一个基础的散点图示例代码,并包含了一些优化可视化呈现的技巧。 import matplotlib.p…

Python 如何调用讯飞星火大模型API

1 讯飞星火简介 讯飞星火是科大讯飞推出的一款先进的人工智能大模型,它具备强大的语言理解和知识问答能力,能够在多种场景中提供智能化服务。2024年6月27日,科大讯飞发布了讯飞星火大模型V4.0版本,全面对标GPT-4 Turbo。现有的模…