逻辑回归精讲

news2024/11/6 7:12:34

一、从线性回归到逻辑回归

对于分类问题,我们该如何解决

可以通过线性回归+阈值解决吗?

就上面的这张图而言,横轴蓝色的那条线是可以将正负样本区分开的。那我们再看一个例子

就上面的图而言,横轴蓝色的那条线无法将正负例正确划分。因此,在有噪声点的情况下,阈值偏移大,健壮性不够。换句话说,直接用线性回归+阈值的方法是不能解决分类问题的。

二、逻辑回归决策边界

在逻辑回归(Logistic Regression)里,通常我们并不拟合样本分布,而是确定决策边界,如下图所示各式各样的决策边界。

在逻辑回归中,我们考虑使用sigmoid函数将线性回归的结果压缩为0-1之间的数,将该数看作预测为正例的概率。sigmoid的函数形式以及图形式如下所示

�(�)=11+�−�

�(�)′=�(�)∗(1−�(�))

在逻辑回归中,如果我们的线性回归是用线性函数来表示的,那么逻辑回归最终得到线性决策边界;如果我们的线性回归是用非线性函数来表示的,那么逻辑回归最终得到非线性决策边界。如下面的图所示。

三、逻辑回归损失函数

3.1 损失函数

我们首先考虑线性回归中使用的均方差损失函数来做为逻辑回归的损失函数,但是如果逻辑回归的损失函数用均方差损失函数,它对应的损失函数会是一个非凸函数,那么就难以找到最优解。如下图所示。

我们希望损失函数是凸函数,这样可以方便我们求解最优解,如下图所示。

从而引入了对数损失/二元交叉熵损失作为逻辑回归的损失函数

对这个公式进行理解,首先ℎ�(�)表示将样本预测为正例的概率,当y=1(正例)时,我们希望 ℎ�(�) 越大越好,那就是 ���(ℎ�(�)) 越大越好,那么就是 −���(ℎ�(�)) 越小越好,那也就是最小化损失函数的问题;当y=0(负例)时,我们希望ℎ�(�)越小越好,那就是1-ℎ�(�)越大越好,那就是 ���(1−ℎ�(�)) 越大越好,那就是

-���(1−ℎ�(�))越小越好,那也就是最小化损失函数的问题。

将上面2个式子合并,以及考虑所有样本,得到逻辑回归的最终损失函数形式:

3.2 损失函数的正则化

仍然可能存在过拟合问题,决策边界可能"抖动很厉害"。所以我们对损失函数添加正则项,得到如下的损失函数。

3.3 损失函数的最小化

逻辑回归的损失函数是凸函数,依旧可以用梯度下降。

四、从二分类到多分类

LR是一个传统的二分类模型,它也可以用于多分类任务,其基本思想是:将多分类任务拆分程若干个二分类任务,然后对每个二分类任务训练一个模型,最后将多个模型的结果进行集成以会获得最终的分类结果。一般来说,可以采用的拆分策略有:

4.1 one vs one策略

假设我们有N个类别,该策略基本思想就是不同类别两两之间训练一个分类器,这时我们一共会训练出 ��2 种不同的分类器。在预测时,我们将样本提交给所有的分类器,一共会获得N(N - 1)个结果,最终结果通过投票产生。

4.2 one vs all策略

该策略基本思想就是将第i中类型的所有样本作为正例,将剩下的所有样本作为负例,进行训练得到一个分类器。这样我们就一共可以得到N个分类器。在预测时,我们将样本提交给所有的分类器,一共会获得N个结果,我们选择其中概率值最大的那个作为最终分类结果。

4.3 softmax

softmax是LR在多分类的推广。与LR一样,同属于广义线性模型。什么是Softmax函数?假设我们有一个数组A, �� 表示的是数组A中第i个元素,那么这个元素的softmx值就是

��=���∑����

也就是说,是该元素的指数,与所有元素指数的比值。那么softmax模型的假设函数又是怎样的呢?

由上式很明显可以得出,假设函数的分母其实就是对概率分布进行了归一化,使得所有类别的概率之和为1;也可以看出LR其实就是K=2的softmax。在参数获得上,我们可以采用one vs all策略获得K个不同的训练数据集进行训练,进而针对每一类别都会得到一组参数向量 � .当测试样本特征向量x输入时,我们先用假设函数针对每一个类别j估计出概率值P(y=j|x)。因此我们的假设函数将要输出一个K维的向量(向量元素和为1)来表示K个类别的估计概率,我们选择其中得分最大的类别作为该输入的预测类别。softmax看起来和one vs all的LR很像,它们最大的不同在于softmax得到的K个类别的得分和为1,而one vs all的LR并不是。

  • softmax的损失函数

  • 多分类与LR

有了多分类的处理方法,那么我们什么时候该用多分类LR?什么时候用softmax呢?

总的来说,若待分类的类别互斥,我们就使用softmax方法,若待分类的类别有相交,我们则要选用多分类LR,然后投票表决。

五、LR特点以及适用场景

最后一些知识点补充

问题1 逻辑回归是线性模型吗?

逻辑回归的模型引入了sigmoid函数映射,是非线性模型,但本质上又是一个线性回归模型,因为除去sigmoid映射函数关系,其他的步骤,算法都是线性回归的。可以说,逻辑回归,都是以线性回归为理论支持的。

这里讲到的线性,是说模型关于系数 � 一定是线性形式的,

加入sigmoid映射后,变成:

如果分类平面本身就是线性的,那么逻辑回归关于特征变量x,以及关于系数�都是线性的。

如果分类平面是非线性的,例如 �12+�2=0 ,那么逻辑斯蒂回归关于变量x是非线性的,但是关于参数�仍然是线性的。

这里,我们做了一个关于变量x的变换: ,�0′=�0,�1′=�12,�2′=�2

其他非线性超平面一样的道理,我们可以通过变量的变化,最终一定可以化成形如

的东西,我们把z看作�的变量,就是个线性模型。剩下的工作,无非是去构造映射关系

综上,逻辑回归本质上是线性回归模型,关于系数是线性函数,分离平面无论是线性还是非线性的,逻辑回归其实都可以进行分类。对于非线性的,需要自己去定义一个非线性映射。

问题2:请从最大似然的角度去解释逻辑回归,以及逻辑回归的损失函数是什么?

假设对于输入x分类为1和0的概率分别为:

则概率函数为:

假设样本数据有m个,并且独立,则它们的联合分布可以由各边际分布的乘积表示,则由似然函数为:

取对数似然函数:

化简:

为了求解最优的参数θ,则需要最大化上述的对数似然函数,而上述的对数似然函数是以和的形式展示的,取负号,并乘以一个常数项,问题则变为求解最小值,转化如下:

就是逻辑回归的损失函数。

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

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

相关文章

基于springboot的垃圾分类网站的设计与实现

系统设计 本垃圾分类网站主要包括三大功能模块,即用户功能模块和管理员功能模块、垃圾分类管理员功能模块。源码下载 (1)管理员模块:系统中的核心用户是管理员,管理员登录后,通过管理员功能来管理后台系统…

SpringMVC (四) 数据处理及跳转

学习回顾:SpringMVC (三) RestFul和控制器 现在我们来看看SpringMVC参数接收处理和结果跳转处理吧! 结果跳转方式 一、ModelAndView 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 . 页面 : {视图解析器前…

测试员该如何向七大姑八大姨解释你的工作?

过年回家,走亲访友带来了一年未见的七大姑八大姨们,必不可少会出现一系列“灵魂拷问”,比如“二狗,在做啥工作呢?” 相比“有对象了么?”、“啥时候生娃?”等硬核话题,合理地向七大姑…

如果只能推荐3本关于python的书,你会推荐哪3本?

如果只能推荐3本Python书的话,我推荐这3本。 第一本:Python编程快速上手 让繁琐工作自动化 第2版  豆瓣评分8.9 本书是一本面向初学者的Python编程实用指南。本书不仅介绍了Python语言的基础知识,而且通过案例实践教读者如何使用这些知识和…

css自学框架之栅格化12格布局、flex布局下两端对齐,不满左对齐

flex基础知识 1.flex-direction 容器内元素的排列方向(默认横向排列) flex-direction:row; 沿水平主轴让元素从左向右排列flex-direction:column; 让元素沿垂直主轴从上到下垂直排列flex-direction:row-reverse;沿水平主轴让元素从右向左排列 2.flex-wrap 容器内元素的换行(…

java feign的使用详细步骤及okhttp的使用

1、首先创建一个feign的模块并配置依赖&#xff0c;如图&#xff1a; 1、引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency&g…

kali换源

sudo vim /etc/apt/sources.list&#xff08;打开sources.list 文件&#xff09; 官方源 deb http://http.kali.org/kali kali-rolling main non-free contrib deb-src http://http.kali.org/kali kali-rolling main non-free contrib 中科大源 deb http://mirrors.ustc.edu.cn…

小主机折腾记15

海鲜市场买到个华硕的h61主板&#xff0c;支持笔记本内存又带独显插槽&#xff0c;40大洋包邮…… 到货后把老笔记本上拆下来的两根威刚2g 1066的内存条安上&#xff0c;上集提到的i5 2390t安上&#xff0c;之前买的gt440安上&#xff0c;最后安上了之前买的惠普侧吹风散热器&…

北大2019计算机学科夏令营上机考试

目录 A:数与字符串【找规律】 B:打印月历【暴力水题】 C:Hopscotch【BFS】 D:上楼梯【动态规划】 E:Life Line 【图】 F:跳蛙【DSP】 G:Falling Leaves【二叉搜索树】 H&#xff1a;昂贵的聘礼【图】 I:Connect【放弃】 A:数与字符串【找规律】 #include<iostream&…

idea项目提交到git 这一篇就够了

1. 下载git 到本地文件夹 2. 在windows端打开命令行 winR 然后cmd 首先查看git是否安装成功 从这里就可以看出git已经安装成功 然后使用 git config --list 查看git的基本配置 如果是第一次使用&#xff0c;需要创建用户名和邮箱 配置成功后再次使用 git config --list …

生成式AI, 新兴职业?

动动发财的小手&#xff0c;点个赞吧&#xff01; 生成式AI是一种基于人工智能技术的创新领域&#xff0c;它的目标是通过机器学习和自然语言处理等技术来模拟人类的创造力和智慧&#xff0c;从而生成全新的内容&#xff0c;如文本、图像、音频等。生成式AI在近年来取得了巨大的…

php对接小鹅通API开发高级实战案例解析:获取指定资源学习记录信息(单人单学习记录、单人多学习记录累计、返回数据格式确认)

获取指定资源学习记录信息 前言一、获取指定资源学习记录信息请求方式及url二、获取指定资源学习记录信息请求参数请求参数请求格式 三、单人单学习记录API封装函数四、单人多学习记录API封装函数总结 前言 开发使用小鹅通API的时候&#xff0c;以下是一些需要注意的事项&…

实战:RocketMQ高级功能代码实现

1&#xff0c;事务消息代码实现 之前我们已经在讨论订单业务消息丢失问题中引出了事务消息&#xff0c;本内容我们就实际用代码来实现一下事务消息吧。 首先我们用原生代码来实现一下事务消息&#xff0c;下面是事务消息生产者TransactionProducer类的代码&#xff0c;具体代码…

Reveser(小学期)

开门见山 看一下多少位的 Flag就在上面 给电灯通电 打开看一下主函数 看到这个判断同时&#xff0c;进去看到最后一个函数 看到最后一个判断&#xff0c;数组判断的个数是56个 在IDA里面v5这个参数确实是56&#xff0c;但是v2不是 我们放进去看一下发现 有了前面的一些&a…

20种常用的软件测试方法,建议先收藏再观看

软件测试在完整的项目当中算是最后一个环节&#xff0c;也是非常重要的一个环节。通过软件测试&#xff0c;我们才能得知一个程序是否符合标准。 小编整理出20种常见的软件测试方法&#xff0c;建议伙伴们先收藏再看。不敢说史上最全&#xff0c;但我办公室里十年软件测试经验…

创建Java文件时路径字符串的名字分割符

java.io.File的构造函数&#xff1a; 如果用File(String pathname)这个形式的构造函数&#xff0c;路径字符串pathname涉及名字分割符。 下面代码的几段各创建了一个文件&#xff0c;但有的写法就不正确&#xff0c;见代码中的注释&#xff1a; package com.thb;import java…

零信任:接入Authing进行身份认证

在之前的的文章中我们提到我们自己开发了一个Apisix的认证插件来实现认证&#xff0c;但是实际过程当中&#xff0c;我们同样也希望支持使用Keycloak&#xff0c;Authing&#xff0c;okta这类统一身份认证。本文主要是说明我们如何使用Authing这个身份认证供应商来实现登录认证…

Docker安装达梦M8数据库,Jdbc客户端乱码解决方案

Docker安装达梦M8 下载镜像tar包&#xff1a;https://eco.dameng.com/download/ #导入镜像 docker load -i dm8_20220822_rev166351_x86_rh6_64_ctm.tar # 启动容器 docker run -d -p 5236:5236 --restartalways --name dm8 --privilegedtrue -e PAGE_SIZE16 -e LD_LIBRARY_…

管理者必修的7门课

在现代商业世界中&#xff0c;管理者需要具备各种技能和知识&#xff0c;以便有效地领导他们的团队&#xff0c;并使他们的组织成功地达到其目标。虽然管理是一门复杂的学科&#xff0c;但有一些核心课程对于所有管理者来说都是必学的。 在本文中&#xff0c;我们将探讨管理者…

Multi-sensor KIT 多传感器开发板

1.前言 经过一段时间的思考后&#xff0c;我决定设计一款能够兼容多个传感器的开发板。这个开发板由核心底板和扩展板组成&#xff0c;其中核心底板预留了多路的I2C、SPI、UART、ADC等接口&#xff0c;而扩展板则兼容了QMI8658A-EVB和CH101/201-EVB的支持。这个设计可以让我更…