【机器学习】LR回归(逻辑回归)和softmax回归

2023-05-16

LR回归(逻辑回归)和softmax回归

  • 1. LR回归
    • Logistic回归的函数形式
    • Logistic回归的损失函数
    • Logistic回归的梯度下降法
    • Logistic回归防止过拟合
    • Multinomial Logistic Regression
  • 2. Softmax回归
    • 代价函数
    • Softmax回归模型参数化的特点
    • 权重衰减
  • Softmax回归与Logistic 回归的关系
  • Softmax 回归 vs k 个二元分类器

1. LR回归

Logistic回归(Logistic Regression,简称LR)是一种常用的处理二类分类问题的模型

在二分类问题中,把因变量y可能属于的两个类分别称为负类和正类,则因变量y∈{0, 1},其中0表示负类,1表示正类。线性回归
在这里插入图片描述
的输出值在负无穷到正无穷的范围上,不太好解决这个问题。于是我们引入非线性变换,把线性回归的输出值压缩到(0, 1)之间,那就成了Logistic回归
在这里插入图片描述
使得h(x)≥0.5时,预测y=1,而当h(x)<0.5时,预测y=0。Logistic回归的名字中尽管带有回归二字,可是它是实打实的分类算法。

那用什么非线性变换把线性回归转化成Logistic回归呢?


Logistic回归的函数形式

Logistic回归模型的函数形式为:
在这里插入图片描述
其中x代表样本的特征向量,g(z)代表sigmoid函数,公式为
在这里插入图片描述
下图为sigmoid函数的图形。
在这里插入图片描述
此外非常重要的,sigmoid函数求导后为:
在这里插入图片描述

所以Logistic回归模型就是:
在这里插入图片描述
对于给定的输入变量,根据选择的参数确定输出变量y=1的概率,即后验概率在这里插入图片描述
在这里插入图片描述


Logistic回归的损失函数

Logistic回归中的参数是θ,怎么估计这个参数呢?那么就要定义损失函数,通过最小化损失函数来求解参数。

线性回归中的损失函数是平方误差损失函数,如果Logistic回归也采用这种损失函数形式,那么得到的损失函数将是一个非凸函数。这意味着损失函数会有很多局部极小值,因此不容易找到全局最小值。比如左边这个就是非凸函数的形状,明显右边这个平滑的图不容易陷入局部极小值陷阱。
在这里插入图片描述
假设训练数据集为{(x1,y1),(x2,y2),…(xm, ym)},即有m个样本,令x=[x0, x1, …, xn]T,x0=1,即每个样本有n个特征,y∈{0, 1}。于是把Logistic回归的损失函数定义为对数损失函数:
在这里插入图片描述
这个对数损失函数的特点是:当类别y=1时,损失随着h(x)的减小而增大,为1时,损失为0;当类别y=0时,损失随着h(x)的增大而增大,为0时,损失为0。与损失的关系如下图:
在这里插入图片描述
可以把损失整理为以下的形式:
在这里插入图片描述
于是损失函数就成了:
在这里插入图片描述
这个损失函数叫做对数似然损失函数,也有个很好听的名字:交叉熵损失函数(cross entropy loss)。这个损失函数是个凸函数,因此可以用梯度下降法求得使损失函数最小的参数。


Logistic回归的梯度下降法

得到了交叉熵损失函数后,可以用梯度下降法来求得使代价函数最小的参数,也就是按下面这个公式更新每个参数θj:
在这里插入图片描述
如下是详细的推导过程。
已知:
在这里插入图片描述
首先因为sigmoid函数求导数的公式可得:
在这里插入图片描述
把上式代入损失函数中,并对θj求偏导:
在这里插入图片描述
将这个偏导数乘以学习率,得到了用梯度来更新参数的公式,再用下面这个公式来同时更新所有的参数值,使损失函数最小化,直到模型收敛。

在这里插入图片描述


Logistic回归防止过拟合

在损失函数中加入参数 θj 的 L2 范数,限制 θj 的大小,以解决过拟合问题,那么加入正则化项的损失函数为:
在这里插入图片描述
相应的,此时的梯度下降算法为:
在这里插入图片描述
重复以下步骤直至收敛:
在这里插入图片描述


Multinomial Logistic Regression

训练 [公式] 个独立的二分类 LR 模型,选第 [公式] 类为“pivot”
在这里插入图片描述
两边作取指数
在这里插入图片描述
各类条件概率之和为1

在这里插入图片描述
因此
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210405213113892.png

其中,[公式]到此为止上式即为《统计学习方法, p80》中所提到的多项 LR 模型.


2. Softmax回归

在 softmax回归中,我们解决的是多分类问题(相对于 logistic 回归解决的二分类问题),类标y可以取k个不同的值(而不是 2 个。因此,对于训练集在这里插入图片描述,我们有在这里插入图片描述(注意此处的类别下标从 1 开始,而不是 0)。例如,在 MNIST 数字识别任务中,我们有 个不同的类别。

对于给定的测试输入x,我们想用假设函数针对每一个类别j估算出概率值在这里插入图片描述也就是说,我们想估计x的每一种分类结果出现的概率。因此,我们的假设函数将要输出一个 k 维的向量(向量元素的和为1)来表示这k个估计的概率值。 具体地说,我们的假设函数 h(x) 形式如下:在这里插入图片描述
其中在这里插入图片描述是模型的参数。在这里插入图片描述这一项对概率分布进行归一化,使得所有概率之和为 1。


代价函数

softmax 回归算法的代价函数。
在下面的公式中,1是指示函数,其取值规则为:
1{值为真的表达式}=1
1{值为假的表达式} =0。
举例来说,1{2+2=4}表达式 的值为1 , 1{1+1=5}的值为 0。

softmax代价函数为:
在这里插入图片描述

值得注意的是,上述公式是logistic回归代价函数的推广。logistic回归代价函数可以改为:
在这里插入图片描述
可以看到,Softmax代价函数与logistic 代价函数在形式上非常类似,只是在Softmax损失函数中对类标记的k个可能值进行了累加。注意在Softmax回归中将x分类为类别 j 的概率为:
在这里插入图片描述
我们使用迭代的优化算法(例如梯度下降法,或 L-BFGS)。经过求导,我们得到梯度公式如下:
在这里插入图片描述
有了上面的偏导数公式以后,我们就可以将它代入到梯度下降法等算法中,来最小化J(θ)。在梯度下降法的标准实现中,每一次迭代需要进行如下更新:

在这里插入图片描述
当实现 softmax 回归算法时, 我们通常会使用上述代价函数的一个改进版本。具体来说,就是和权重衰减(weight decay)一起使用。


Softmax回归模型参数化的特点

Softmax 回归有一个不寻常的特点:它有一个“冗余”的参数集。为了便于阐述这一特点,假设我们从参数向量θj 中减去了向量ψ,这时,每一个θj 都变成了在这里插入图片描述此时假设函数变成了以下的式子:
在这里插入图片描述
换句话说,从θj中减去ψ完全不影响假设函数的预测结果。这表明前面的 softmax 回归模型中存在冗余的参数。更正式一点来说, Softmax 模型被过度参数化了。对于任意一个用于拟合数据的假设函数,可以求出多组参数值,这些参数得到的是完全相同的假设函数hθ。

进一步而言,如果参数在这里插入图片描述是代价函数J(θ)的极小值点,那么在这里插入图片描述同样也是它的极小值点,其中ψ可以为任意向量。因此使J(θ)最小化的解不是独立的。

当 ψ=θ1 时,我们总是可以将 θ1 替换为 θ1-ψ=0(即替换为全零向量),并且这种变换不会影响假设函数。因此我们可以去掉参数向量 θ1(或者其他θj中的任意一个)而不影响假设函数的表达能力。实际上,与其优化全部的 k × (n+1)个参数
在这里插入图片描述,我们可以令 θ1=0 ,只优化剩余的 (k-1)×(n+1) 个参数,这样算法依然能够正常工作。

在实际应用中,为了使算法实现更简单清楚,往往保留所有参数在这里插入图片描述,而不任意地将某一参数设置为 0。但此时我们需要对代价函数做一个改动:加入权重衰减。权重衰减可以解决 softmax 回归的参数冗余所带来的数值问题。


权重衰减

我们通过添加一个权重衰减项在这里插入图片描述(其中n为样本的维度,k为样本的类别数)来修改代价函数,感觉还是L2正则化,为了解决参数过多模型复杂导致的过拟合问题。

这个衰减项会惩罚过大的参数值,我们的代价函数变为:
在这里插入图片描述
有了这个权重衰减项以后(λ>0),代价函数就变成了严格的凸函数,这样就可以保证得到独立的解了。 此时的 Hessian矩阵变为可逆矩阵,并且因为 J(θ) 是凸函数,梯度下降法和 L-BFGS 等算法可以保证收敛到全局最优解。

为了使用优化算法,我们需要求得这个新函数 J(θ) 的导数,如下:
在这里插入图片描述
通过最小化 J(θ) ,我们就能实现一个可用的 softmax 回归模型。


Softmax回归与Logistic 回归的关系

当类别数 k=2 时,softmax 回归退化为 logistic 回归。这表明 softmax 回归是 logistic 回归的一般形式。具体地说,当 k=2 时,softmax 回归的假设函数为:
在这里插入图片描述

利用softmax回归参数冗余的特点,我们令 ψ=θ1 ,并且从两个参数向量中都减去向量 θ1 ,得到:

在这里插入图片描述
因此,用 θ’ 来表示 θ2-θ1 ,我们就会发现 softmax 回归器预测其中一个类别的概率为在这里插入图片描述另一个类别概率的为在这里插入图片描述,这与 logistic回归是一致的。


Softmax 回归 vs k 个二元分类器

如果你在开发一个音乐分类的应用,需要对k种类型的音乐进行识别,那么是选择使用 softmax 分类器呢,还是使用 logistic 回归算法建立 k 个独立的二元分类器呢?

这一选择取决于你的类别之间是否互斥,例如,如果你有四个类别的音乐,分别为:古典音乐、乡村音乐、摇滚乐和爵士乐,那么你可以假设每个训练样本只会被打上一个标签(即:一首歌只能属于这四种音乐类型的其中一种),此时你应该使用类别数k= 4的softmax回归。(如果在你的数据集中,有的歌曲不属于以上四类的其中任何一类,那么你可以添加一个“其他类”,并将类别数k设为5。)

如果你的四个类别如下:人声音乐、舞曲、影视原声、流行歌曲,那么这些类别之间并不是互斥的。例如:一首歌曲可以来源于影视原声,同时也包含人声 。这种情况下,使用4个二分类的 logistic 回归分类器更为合适。这样,对于每个新的音乐作品 ,我们的算法可以分别判断它是否属于各个类别

我们来看一个计算视觉领域的例子,你的任务是将图像分到三个不同类别中。(i) 假设这三个类别分别是:室内场景、户外城区场景、户外荒野场景。你会使用sofmax回归还是 3个logistic 回归分类器呢? (ii) 当前假设这三个类别分别是室内场景、黑白图片、包含人物的图片,你又会选择 softmax 回归还是多个 logistic 回归分类器呢?

在第一个例子中,三个类别是互斥的,因此更适于选择softmax回归分类器 。而在第二个例子中,建立三个独立的 logistic回归分类器更加合适。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【机器学习】LR回归(逻辑回归)和softmax回归 的相关文章

  • JVM参数配置简单实战

    之前被问到jvm性能监控方面的问题 xff0c 花时间对jvm相关的参数进行了一些研究 xff0c 现将学习到的知识小结一下 测试环境 xff1a 系统 64位win10系统 jdk版本 xff1a 1 8 0 191 一 构建稳定的JVM
  • VMware虚拟机桥接模式配置

    前述有配置过NAT模式的虚拟机环境 xff0c 这篇再简单谈谈桥接模式的虚拟机环境配置 测试环境 xff1a 主机 xff1a 64位Win10 宿主机IP xff1a 192 168 1 4 虚拟机 xff1a ubuntu16 04 A
  • OpenHarmony鸿蒙docker编译环境搭建

    为什么要搭建docker 主要自己的ubuntu环境有太多其他的编译环境 xff0c 如果每次编译不同的代码都需要解决编译环境依赖的问题 xff0c 是一个比较头大的问题 因此想着利用docker来解决编译环境的问题 下面主要介绍的就是鸿蒙
  • ubuntu 16.04 安装Ralink MT7601U (148f:7601) 驱动

    最近买了一个无线网卡 xff0c 然后插在ubuntu上 xff0c 发现wifi用不了 xff0c 然后试了很多安装驱动的方法 xff0c 发现驱动安装不上去 解决方法 sudo apt add repository ppa thopie
  • sourcetree 修改difftool 为 Beyond Compare 的方法

    sourcetree里设置不管用 xff0c google了下 xff0c 可以通过修改 gitconfig 文件来实现 diff tool 61 sourcetree difftool prompt 61 false difftool 3
  • MAC - 查看当前用户所属组

    总是忘记 xff0c 备注下 groups 查看当前用户所属组 groups user name 查看指定用户所属组 Note xff1a 用户所属组可能有多个 id a user name 可以查到指定用户所属组更详细的信息 查看当前用户
  • MAC - 开放指定端口

    适用OSX 10 10之前版本 xff1a 开放8020端口 sudo ipfw add 8020 allow tcp from any to any dst port 8020 参考资料 xff1a How can I open a po
  • MySql - 导入数据时 Table XXX doesn't exist 的解决

    数据表为Innodb引擎 data文件夹中存在数据表的frm文件 xff0c 但在phpmyadmin中看不到这些表 xff0c 于是采用导入sql文件的方式进行恢复 1 直接导入原数据表的sql文件 xff0c 原frm文件不删除 出错
  • 使用SVN提示“工作副本已经锁定”的解决办法

    更新或者提交前执行一下clean up 如果在当前目录执行该命令后 xff0c 仍然提示锁定 xff0c 就到上一层目录再执行下
  • Word Break(C++单词拆分)

    xff08 1 xff09 动态规划 class Solution public bool wordBreak string s vector lt string gt amp wordDict int len 61 wordDict si
  • sublime配置全攻略

    大家好 xff0c 今天给大家分享一款编辑器 xff1a sublime text2 我用过很多编辑器 xff0c EditPlus EmEditor Notepad 43 43 Notepad2 UltraEdit Editra Vim
  • Sublime Text 2 的HTML代码格式化插件Tag

    安装 xff1a 1 按Ctrl 43 Shift 43 P调出命令面板 2 输入 ip 调出 Package Control Install Package 选项 xff0c 按下回车后接着输入 Tag xff0c 再次按回车等待安装完成
  • Raspberry - 安装Mysql 5.7

    设备 xff1a Raspberry pi 3 系统 xff1a debian 9 stretch apt get目前还没有最新的5 7可以装 xff0c 尝试自己编译安装 xff0c 结果跑了一天 xff0c 最后还是失败 xff0c 后
  • MySql - 重置root密码(版本5.7.21)

    Mysql 版本 xff1a 5 7 21 网上能搜到的文章还挺多的 xff0c 最常见的是这个 xff1a 1 修改 my ini xff0c 在 mysqld 下增加一行 xff1a skip grant tables 2 重启 mys
  • Linux - 文件复制后大小不一致的问题

    问题 xff1a 通过cp或者rsync传输文件后 xff0c 通过du s查看到的体积 xff0c 前后不一致 原因 xff1a https stackoverflow com questions 10364999 file size c
  • 基于nand flash的文件系统的整理

    一 Nandflash简介 基本概念 xff1a flash芯片 block page 附加页 1 1结构 Flash芯片的擦除以块为单位 xff0c 写以页为单位 在每个flash芯片中包括非常多的块 xff0c 同款芯片上每个块的大小相
  • 卡普的21个NP完全问题-问题描述

    以下部分为卡普21个问题的名称 xff08 来自于维基百科https zh wikipedia org wiki E5 8D A1 E6 99 AE E7 9A 84 E4 BA 8C E5 8D 81 E4 B8 80 E5 80 8BN
  • 在终端使用命令卸载交叉编译工具

    ubuntu中可以使用命令行 sudo apt install gcc arm linux gnueabi 自动安装交叉编译工具 xff0c 但是往往软件版本太过超前了 xff0c 交叉编译时候使用的命令是 arm linux gnueab
  • ubuntu系统下降低风扇转速的方式

    我的本自从装了ubuntu之后风扇就呼呼的响个不停 xff0c 看了很多教程都是说强制降低风扇转速的方式 偶然看到了转速过快的原因是因为显卡与系统自带的驱动不兼容的问题 我的显卡是nvidia xff0c 安装显卡驱动步骤如下 xff1a
  • 怎样向visual studio加入vim的强大编辑能力,让装逼防不胜防!

    经常使用vim的小伙伴知道它的强大 私认为它最大的优势就是解放了你的右手 让鼠标成为了累赘 但是其学习曲线是相当陡峭的 虽然经常使用linux系统 但是偶尔还是会迫于形势缓缓胃口的 在使用VS的时候经常不自觉的就来一串ESC shift 冒

随机推荐

  • JGROUPS

    package com example jgroupsdemo import jakarta annotation PostConstruct import lombok extern slf4j Slf4j import org jgro
  • android studio仿真时遇到VT-x is disabled in BIOS解决办法

    在使用android studio run app时候遇到了 xff1a Intel HAXM is required to run this AVD VT x is disabled in BIOS 的错误提示 xff0c 导致无法进行仿
  • linux系统中resolv.conf文件详解

    etc resolv conf 它是DNS客户机配置文件 xff0c 用于设置DNS服务器的IP地址及DNS域名 xff0c 还包含了主机的域名搜索顺序 该文件是由域名解析器 xff08 resolver xff0c 一个根据主机名解析IP
  • yii2.0 basic版使用CRUD生成器的时候提示错误及页面显示错误

    在使用model生成器的时候不用加命名空间 xff0c 写好表名就可以直接生成了 但是在用CRUD的时候填写完controllers和model class之后点击生成会弹出错误提示 xff1a Class 39 TelBook 39 sp
  • linux日志对应内容

    var log messages 包括整体系统信息 xff0c 其中也包含系统启动期间的日志 此外 xff0c mail xff0c cron xff0c daemon xff0c kern和auth等内容也记录在var log messa
  • 常用证书操作函数

    现有的证书大都采用X 509规范 xff0c 主要同以下信息组成 xff1a 版本号 证书序列号 有效期 拥有者信息 颁发者信息 其他扩展信息 拥有者的公钥 CA对以上信息的签名 OpenSSL实现了对X 509数字证书的所有操作 包括签发
  • MongoDB 匹配查询和比较操作符

    一 匹配查询 1 查询所有 span class token operator gt span db accounts find span class token punctuation span span class token punc
  • 我的2014——典型程序员的一年,不想再重来

    兴冲冲地拿起 xff0c 信誓旦旦的搁在一边 xff0c 以为很快就会回来 xff0c 却一晃而过 xff0c 不再回来 xff1b 我不想再重复过去 xff0c 决定去做 xff0c 写下来 题记 已经记不起我2014的年初是否有过规划
  • 我的2016——程序员年到三十,工作第四年

    看到CSDN 我的2016 主题征文活动 已经是1月6号 xff0c 而截止时间是1月8号 xff0c 对比去年的总结是在闲等活动开始 xff0c 今年在时间上真的是天差地别 但是 xff0c 一年到头 xff0c 还是需要花些时间来回顾这
  • mac下 ndk_build: command not found

    参考 http blog csdn net greenbird811 article details 7543305 在mac下调用ndk build c代码文件提示错误 fix 1 启动终端Terminal 2 进入当前用户的home目录
  • 公司分配IP地址,求主机号码的最小值和最大值。

    问题描述如下 xff1a 姐 xff1a 注意减去2的实际意义 xff1a 网络地址后的第一个主机地址是本网段的网络地址192 168 0 0 xff0c 最 后一个主机地址是本网段的广播地址192 168 255 255
  • Erlang入门

    64 author sunxu 64 copyright C 2023 lt COMPANY gt 64 doc 64 end Created 16 2月 2023 22 16 module test author 34 sunxu 34
  • IPv4地址、IPv6地址和Mac地址的位数

    xff08 1 xff09 IPv4的地址是32位 xff0c 用点分十进制表示 xff0c 每八位划分 xff0c 也就是四个0 255的十进制数 xff0c 这是很常见的 xff08 2 xff09 IPv6的地址是128位 xff0c
  • 用C#连接数据库的方法

    连接SQL Server数据库的方法 xff1a 1 在程序中引用System Data SqlClient命名空间 2 编写连接字符串 xff0c 格式为 xff1a Data Source 61 服务器名称 Initial Catalo
  • gcc 不支持 //注释的解决

    这段时间用slickedit写代码 xff08 windows平台下 xff0c 装了Cygwin xff09 xff0c 编译器用的gcc xff0c 但是有个问题就是用 34 34 写注释的时候 xff0c 编译的时候有错 xff1a
  • python实现按照文件名称进行文件分类

    问题 xff1a 大量名称中带有数字的图片 视频 xff0c 根据名称中数字按照一定的等差数列来排序 xff0c 并且放入指定对应的文件夹中 span class token keyword import span os span clas
  • 【深度学习】Yolov3详解笔记及Pytorch代码

    Yolov3详解笔记及Pytorch代码 预测部分网络结构backbone xff1a Darknet 53output预测结果的解码 训练部分计算loss所需参数pred是什么target是什么loss的计算过程 预测部分 网络结构 DB
  • 【深度学习】各种卷积的理解笔记(2D,3D,1x1,可分离卷积)

    卷积 1 2D卷积单通道版本多通道版本 2 3D卷积3 1x1卷积作用应用 4 卷积算法5 可分离卷积空间可分离卷积深度可分离卷积 1 2D卷积 卷积的目的是从输入中提取有用的特征 在图像处理中 xff0c 卷积可以选择多种不同的滤波器 每
  • 【深度学习】(2+1)D模型框架结构笔记

    xff08 2 43 1 xff09 D 模型框架结构笔记 SpatioTemporalConv模块结构SpatioTemporalResBlock模块结构SpatioTemporalResLayer模块结构2Plus1DNet Spati
  • 【机器学习】LR回归(逻辑回归)和softmax回归

    LR回归 xff08 逻辑回归 xff09 和softmax回归 1 LR回归Logistic回归的函数形式Logistic回归的损失函数Logistic回归的梯度下降法Logistic回归防止过拟合Multinomial Logistic