【机器学习】逻辑回归(Logistic Regression)

逻辑回归

    • 逻辑回归
    • 逻辑回归的流程
      • Sigmoid函数
        • Sigmoid函数的公式及图像
    • 逻辑回归的损失函数与最优化求解
      • 逻辑回归使用梯度下降法求解

逻辑回归

逻辑回归线性回归都是线性模型,其中线性回归使用线性式来预测数值逻辑回归使用线性式来进行分类任务
逻辑回归就是使用1条线(在特征向量为1维或2维的情况)1个超平面(特征数量超过2维的情况) 来对数据进行划分,根据特征向量落在线或超平面的2侧来对其进行划分,因此,逻辑回归是用来处理二分类问题的

逻辑回归可以通过组合多个逻辑回归来进行多分类任务

逻辑回归的流程

逻辑回归使用线性式Sigmoid的函数来得到结果。逻辑回归的输入为 N N N维特征向量,将 N N N维特征向量带入线性式,得到输出公式如下,将结果带入Sigmoid函数。
f ( x ) = w 0 + w 1 ∗ x 1 + . . . + w n ∗ x n ∑ 1 1 = ∑ i = 0 n w i ∗ x i ∑ 1 1 = w T x ∑ 1 1 p = s i g m o i d ( f ( x ) ) ∑ 1 1 \begin{align} f(x)&=w_0+w_1*x_1+...+w_n*x_n\vphantom{\sum_1^1}\\ &=\sum_{i=0}^{n}w_i*x_i\vphantom{\sum_1^1}\\ &=\mathbf{w}^T\mathbf{x}\vphantom{\sum_1^1}\\ p&=sigmoid(f(x))\vphantom{\sum_1^1}\\ \end{align} f(x)p=w0+w1x1+...+wnxn11=i=0nwixi11=wTx11=sigmoid(f(x))11
( 3 ) (3) (3)式是使用线性代数的方法表示 ( 1 ) (1) (1)以及 ( 2 ) (2) (2)式。

Sigmoid函数

Sigmoid函数在机器学习和深度学习中通常被简写为 σ \sigma σ,Sigmoid函数接接收 ( − ∞ , ∞ ) (-\infin,\infin) (,)的数值,并将其映射到 ( 0 , 1 ) (0,1) (0,1)范围之内,因此可以具有概率的意义。

Sigmoid函数的公式及图像

Sigmoid函数的公式如下:
σ ( x ) = 1 1 + e x p ( − x ) \sigma(x)=\frac{1}{1+exp(-x)} σ(x)=1+exp(x)1
其中 e x p ( x ) exp(x) exp(x)函数为自然对数的 x x x次幂。

Sigmoid函数的图像如下:

请添加图片描述

Sigmoid函数单调递增,在自变量 x = 0 x=0 x=0附近斜率变化较大,函数值增长较快,而在远离 x = 0 x=0 x=0处,函数值变化较慢。在 x = 0 x=0 x=0处,Sigmoid函数值为 1 1 + e x p ( 0 ) = 0.5 \frac{1}{1+exp(0)}=0.5 1+exp(0)1=0.5

在进行预测时,Sigmoid函数计算之后,函数大于 0.5 0.5 0.5,则特征向量属于目标类别,否则特征向量不属于目标类别
{ y ^ = 1 i f p > = 0.5 y ^ = 0 i f p < 0.5 \begin{equation} \begin{cases} \hat{y}=1\space\space if\space p>=0.5\\ \hat{y}=0\space\space if \space p<0.5 \end{cases} \end{equation} {y^=1  if p>=0.5y^=0  if p<0.5

逻辑回归的损失函数与最优化求解

回归问题中,我们通常使用MSE,RMSE以及MAE损失,这些损失函数使用不同的方式计算计算预测值与真实值的距离,如明氏距离曼哈顿距离以及欧式距离,不同损失函数使用不同的加权方式从而得到损失值

分类问题中,样本的真实值是离散的标签(如A类,B类等),线性式的结果经过Sigmoid函数变换之后,再经过MSE求损失并无更大的意义,因为MES衡量的是欧式空间中的距离,而逻辑回归经过Sigmoid处理后的数据可以理解为概率,两者并不对应。

在分类问题中,通常使用交叉熵损失,因为交叉熵模型的本质决定其可以用来衡量概率模型的差别。

逻辑回归适用于二分类问题。对于二分类问题,可以使用二元交叉熵损失(Binary Cross Entropy Loss)。逻辑回归问题模型求解,即求解使得对样本集合的总体损失最小的模型参数,使用公式表述如下:
arg min ⁡ w 0 . . . w n 1 m ∑ i = 1 m B C E L o s s ( y i , y i ^ ) \argmin_{w_0...w_n}\frac{1}{m}{\sum_{i=1}^mBCELoss(y_i,\hat{y_i})} w0...wnargminm1i=1mBCELoss(yi,yi^)
其中二元交叉熵损失的公式如下:
B C E L o s s ( y , y ^ ) = − ( y ∗ log ⁡ y ^ + ( 1 − y ) ∗ log ⁡ ( 1 − y ^ ) ) BCELoss(y,\hat{y})=-(y*\log{\hat{y}}+(1-y)*\log{(1-\hat{y})}) BCELoss(y,y^)=(ylogy^+(1y)log(1y^))
将二元交叉熵公式代入,即得:
arg min ⁡ w 0 . . . w n 1 m ∑ i = 1 m − ( y i ∗ log ⁡ y i ^ + ( 1 − y i ) ∗ log ⁡ ( 1 − y i ^ ) ) \argmin_{w_0...w_n}\frac{1}{m}\sum_{i=1}^m-(y_i*\log{\hat{y_i}}+(1-y_i)*\log{(1-\hat{y_i})}) w0...wnargminm1i=1m(yilogyi^+(1yi)log(1yi^))
其中 m m m是样本数量, y i y_i yi是第 i i i个样本的真实值(真或假), y i ^ \hat{y_i} yi^是第 i i i个样本的预测值,为经过Sigmoid函数求解后获得的 ( 0 , 1 ) (0,1) (0,1)之间的数值,意为概率。

逻辑回归使用梯度下降法求解

由于逻辑回归模型使用了非线性的Sigmoid函数,因此逻辑回归模型并没有解析解,需要使用梯度下降法求解。

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

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

相关文章

IDEA - 查看类的继承结构(通过快捷键查看、通过生成类图查看)

一、通过快捷键查看 在项目中定位到目标类&#xff08;例如&#xff0c;Executor.java&#xff09; 按下快捷键 【Ctrl H】 此时会弹出 Type Hierarchy 窗口&#xff0c;展示所有相关的父类、子类、接口 二、通过生成类图查看 在项目中定位到目标类&#xff08;例如&#x…

Leetcode-1776. Car Fleet II [C++][Java]

目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-1776. Car Fleet IIhttps://leetcode.com/problems/car-fleet-ii/description/ 一、题目描述 There are n cars traveling at different speeds in the same direction along a one-lane road. You are given an …

《Python实战进阶》No 9:使用 Celery 实现异步任务队列

第9集&#xff1a;使用 Celery 实现异步任务队列 引言 在现代 Web 应用中&#xff0c;许多操作&#xff08;如发送邮件、处理文件上传、执行复杂计算等&#xff09;可能需要耗费较长时间。如果这些操作直接在主线程中执行&#xff0c;会导致用户请求阻塞&#xff0c;降低用户体…

ue5 创建多列StreeView的方法与理解

创建StreeView的多列样式怎么就像是创建单行单列差不多?貌似就是在单行单列中加入了多列widget? 目录结构: 必备条件 StreeView的多列创建需要的必备条件: 数据基类 CustomItemBase #pragma once /* ---------------------------------- | Name | Value …

Spring的下载与配置

1. 下载spring开发包 下载地址&#xff1a;https://repo.spring.io/webapp/#/artifacts/browse/simple/General/libs-release-local/org/springframework/spring 打开之后可以看到有很多版本供选择&#xff0c;因为视频教程用的是4.2.4版本&#xff0c;于是我也选择这个 右键…

Python + requests实现接口自动化框架

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 为什么要做接口自动化框架 1、业务与配置的分离 2、数据与程序的分离&#xff1b;数据的变更不影响程序 3、有日志功能&#xff0c;实现无人值守 4、自动发送测…

Linux——基本指令

我们今天学习Linux最基础的指令 ls 指令 语法&#xff1a; ls [选项] [⽬录或⽂件] 功能&#xff1a;对于⽬录&#xff0c;该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件&#xff0c;将列出⽂件名以及其他信 息。 命令中的选项&#xff0c;一次可以传递多个 &#xff0c…

【Godot4.3】自定义简易菜单栏节点ETDMenuBar

概述 Godot中的菜单创建是一个复杂的灾难性工作&#xff0c;往往无从下手&#xff0c;我也是不止一次尝试简化菜单的创建。 从自己去年的发明“简易树形数据”用于简化Tree控件获得灵感&#xff0c;于是尝试编写了用于表示菜单数据的EasyMenuData类&#xff0c;以及对应的纯文…

esp32串口通信

1、查看esp32的引脚图&#xff0c;寻找对应的串口 根据原理图&#xff0c;芯片上有3个串口(UART0, UART1和UART2)&#xff0c;但是UART1没有引出引脚。其中UART0&#xff08;GPIO3用于U0RXD&#xff0c;GPIO1用于U0TXD&#xff09;用作下载、调试串口&#xff0c;引脚不可改变&…

内部静态类和非内部静态类的区别

目录 问题&#xff1a; 原理&#xff1a; 外部类与非内部静态类 外部类与静态内部类 加载顺序 总结&#xff1a; 1.非静态内部类依赖于外部类的实例&#xff0c;而静态内部类不依赖于外部类的实例。 2.非静态内部类可以访问外部类的实例变量和方法&#xff0c;而静态内部…

Redis分布式锁的实现(Redission)

写在前面 本人在学习Redis过程中学习到分布式锁时太多困惑和疑难杂点 需要总结梳理思路 以下思路都是最简单最基本的思路 主要用到Redission工具类 会涉及到看门狗机制等 本文内容部分引自Javaguide,小林coding等热门八股 用于个人学习用途 分布式锁介绍 对于单机多线程来说…

【愚公系列】《Python网络爬虫从入门到精通》038-SQLite数据库

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

【开源免费】基于SpringBoot+Vue.JS网络海鲜市场系统(JAVA毕业设计)

本文项目编号 T 222 &#xff0c;文末自助获取源码 \color{red}{T222&#xff0c;文末自助获取源码} T222&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

JDK17安装方法/如何安装JDK17/环境变量配置

双击安装 我们这里安装jdk17 然后更改jdk目录 jdk环境变量配置 右键——>此电脑——>高级系统设置——>环境变量 当前用户的环境变量&#xff0c;另外有一个系统变量。 一般我们配置系统环境变量 一、配置JAVA_HOME 这里我们配置一个JAVA_HOME 我这里先前的jdk…

python集合set的常用方法

目录 集合的定义 集合的基础操作 多个集合之间的操作 集合的for循环 集合的定义 集合的基础操作 集合.add(元素) 添加新元素 集合.pop() 从集合中随机取出一个元素 集合.clear() 清空集合 集合.remove(元素) 移除元素 #定义集合,集合自动去重了 set1{"春"…

看得见摸得着的AI:具身智能

“如果Siri有手有脚&#xff0c;你的生活会变成什么样&#xff1f;” 想象一下&#xff1a; • 你家的扫地机器人不再横冲直撞&#xff0c;而是像猫咪一样轻巧绕过桌脚 • 手机里的语音助手能“摸”到你发烧的额头&#xff0c;主动帮你叫医生 • 工厂里的机械臂会边干活边学习&…

ES、OAS、ERP、电子政务、企业信息化(高软35)

系列文章目录 ES、OAS、ERP、电子政务、企业信息化 文章目录 系列文章目录前言一、专家系统&#xff08;ES&#xff09;二、办公自动化系统&#xff08;OAS&#xff09;三、企业资源规划&#xff08;ERP&#xff09;四、典型信息系统架构模型1.政府信息化和电子政务2.企业信息…

【算法学习之路】4.简单数论(4)

简单数论&#xff08;4&#xff09; 前言三.高精度1.什么是高精度2.解决办法 精度乘除法一.精度乘法1.数据的存储2.步骤3.例题&#xff1a;高精度乘法 二.精度除法1.例子2.步骤3.例题&#xff1a;高精度除法 前言 我会将一些常用的算法以及对应的题单给写完&#xff0c;形成一套…

Linux 动静态库和_make_进度条(一)

文章目录 一、如何理解条件编译二、动静态库1. 理论2. 实践3. 解决普通用户的sudo问题4. 技术上理解库 三、make和make_file 一、如何理解条件编译 1. gcc code.c -o code -DM 命令行级别的宏定义预处理的本质就是修改编辑我们的文本代码 头文件展开到源文件中去注释宏替换条…

基于springboot+vue的拖恒ERP-物资管理

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…