深度孤立森林 Deep Isolation Forest论文翻译(上)

README 

绝大部分是自己翻译自己手打的,少部分参考有道翻译,主要是想仔细再读一遍,顺便就打出来了。这篇论文内容比较多,有代码,原作者有github和知乎账号,感兴趣可以找一下。欢迎讨论和批评指正。

用于异常检测的深度孤立森林

摘要

孤立森林(iForest)由于其在不同基准数据集上的广泛有效性和强大的可扩展性正在兴起为近年来最热门的异常检测器。然而,其平行于轴的线性划分方法通常导致(i)难以检测在高维/不可线性分离数据中的难以检测的异常,(ii)臭名昭著的算法偏差,将出乎意料的低异常分数分配给假象区域(artefact regions)。这些问题导致了高的假阴性错误。已有一些孤立森林的扩展,但它们仍然实施浅显的、线性的数据划分,限制了它们分离真实异常的能力。因此,本文提出深度孤立森林。本文引入一个新的表示方法,使用随机初始化的神经网络来将原始数据映射到随机表示集成中,随后使用随机的基于轴平行的切割来实现数据划分。这种表示方法提高了在原始数据空间中划分的高的自由度(相当于在不同大小的子空间中进行非线性划分),促进了随机表示和基于划分的随机分离之间的协同作用。进一步的实验表明本文的模型与现有最新的基于分离的方法以及深度检测器相比,在表格、图和时序数据上有明显的提升;本文模型也继承了孤立森林的期望的可扩展性。

关键词 异常检测 孤立森林 深度表示 集成学习

引言

异常检测在各种各样的领域有着广泛的应用,例如保险欺诈检测和经济犯罪、数据中心或航天器等复杂系统的监测、以及网络空间中攻击和潜在危险的识别。鉴于这些重要的应用,该任务在数十年来已经成为一个热门的研究话题,出现了大量的异常检测方法[1]、[2]。

近年来,孤立森林(iForest)[3] 由于其在不同基准数据集上的广泛有效性和强大的可扩展性正在兴起为最热门的异常检测器。与许多现有方法例如基于距离、密度的方法相比,孤立森林更好地捕捉了异常点的关键本质,即“少且不同”。它不引入额外的数据特征的假设,因此在不同数据集上表现出一致地高性能。而且,孤立森林有着线性时间复杂度,这通常是一个在有大规模数据和严格时间效率需求的工业应用中非常吸引人的优点。具体地,孤立森林使用一个孤立树(iTee)的集成,孤立树在这个集成中迭代地分支。叶子结点通过使用在随机选择的特征上进行随机切割来构造直到数据对象被孤立。数据的异常程度通过在这些孤立树中从根结点到孤立的叶节点的遍历平均路径长度来估计。

然而,一个明显的问题是它不能处理困难异常(例如,只能通过观察多个特征的组合,在高阶子空间中进行隔离的异常)因为它对所有的异常都是分别处理的且在每次分离操作中只考虑一个特征。图1用一个简单的例子说明了这个问题。异常点(用红色三角形表示)被一个环形的正常样本集围绕,这不能被x轴或y轴切片隔离切割。尽管这些异常点可能通过多次的切割最终被分离,这导致了在孤立树中和正常点相比难以区分的隔离深度。这些异常的失败检测会导致高的假阴性错误。鉴于异常通常包换和潜在意外或故障的关键信息,这些假阴性可能会导致严重的后果。因此,这些问题成为了妨碍孤立森林的性能的一个主要瓶颈,特别是在高维/不可线性划分的数据空间中。

图1. 困难异常挑战的说明。左图是一个合成数据集,红色三角形为异常点,蓝色点为正常样本。后续图像本文方法为构造的空间(即随机表示)。现有方法中使用的线性数据划分(不论是以竖直/水平或斜的方式)不能有效地隔离在原始数据空间中隔离这些困难异常。相反,这些异常可能在新创建的空间中被暴露。

iForest的另一个固有缺陷是,将出乎意料的低异常分数分配给假象区域(artefact regions),这个问题是由算法本身引入的,在[4]中被展示为“幽灵区域(ghost region)”。为了清楚地展示这个问题,图2的前两列分别为本文对[4]中的3个人造二维数据集的数据分布进行的可视化和iForest生成的异常得分图。从三个异常分数图中可以看出,孤立森林给某些假象区域分配了明显低的异常分数,即在单簇数据集中,以呈现的数据对象为中心的四个矩形区域(第一行),两簇数据集中的右上和左下的区域(第二行),以及正弦数据集中沿正弦曲线的垂直矩形区域(第三行)。然而,这些区域和其他没有样本的区域对显示的数据对象有相同的径向距离。异常值较低是由于iForest算法固有的算法偏差造成的,即,在孤立树的构建中仅使用平行于轴的划分。相反,一个期望的异常分数图应当平滑地接近反映数据密度的圆形等高线。这个问题也导致了假阴性错误,即孤立森林可能不能检测到例如图2的红色三角形这些“幽灵区域”中可能的异常点,因为它们被分配的异常分数与一些呈现的正常对象相似,属于正常区域。

图2. 算法偏差问题的说明。最左侧的三个图像为合成数据集,每个数据集后面为孤立森林及其两个最先进的扩展——PID和EIF以及本文方法DIF产生的异常分数图。分数图展示了在整个数据空间中的异常分数分布(更深的颜色意味着更高的异常度)。每个分值图中的黑色等高线表示原始数据异常分值的第99百分位数,可以看做每个异常检测器预测的数据正常度的边界。红色三角形代表可能的异常。孤立森林和它的两个扩展方法的分数图中有一些假象区域,这些方法可能无法识别异常,由于异常被分配了和正常数据相似的低异常分数(它们被包含在预测的正常区域内)。相反,DIF产生更准确更平滑的分数图,且DIF成功地给异常分数分配了比其他原始数据样本更高的异常等级。

       近年来已有许多孤立森林的扩展算法[4]、[5]、[6]、[7]、[8]、[9]。这些扩展尝试设计更先进的隔离方法,通过(i)使用新的等级标准来选择划分阈值及/或维度[6]、[8]、[9]或(ii)使用最优/随机超平面[4]、[5]、[7]。这些改进成功地带来了更好的检测性能,但它们的隔离方法仍然被线性划分限制。相反,在隔离阶段的数据划分期望在数据空间中形成非线性的任意的形状来解决在复杂数据集中的困难异常,并消除从异常分数中产生的算法偏差。本文在图2中展示了两个最先进的扩展(PID[6]和EIF[4])。PID[6]选择性地挑选划分维度且使用相似的轴平行划分。因此,它的分数图也有同样的算法偏差问题。EIF[4]效果更好因为它使用了具有随机斜率和截距的超平面作为分支标准,在一定程度上消除了基于轴平行划分的限制。然而,这些划分仍然是线性的,在具有挑战性的数据集上并不高效,只有非线性划分在这类数据集上能够从其他数据中有效地将异常分离出来。图2中所有三个数据集中相当褶皱的异常分数轮廓反映了这个问题。

       因此,这些限制的关键变得非常明确,即需要更进一步地解除线性限制下的划分方法的限制。为了实现这个目的,本文提出了一种孤立森林的新的扩展,称为深度孤立森林(Deep Isolation Forest, DIF)。DIF的关键思想是利用神经网络的强大表示能力将原始数据映射到一组新的数据空间中,且非线性划分可以通过在这些新空间上实施简单的轴平行划分来实现(相当于在原始数据空间的不同大小的子空间中进行非线性划分)。具体地,本文提出一种新的表示方法——随机表示集成——由无优化的深度神经网络产生。这些网络仅被任意初始化且不包含任何的优化或训练过程。DIF随后在这些表示上简单地利用随机的平行于轴的切割。本文的表示方法的任意性使在原始数据空间中的数据划分具有高的自由度,促进了一种随机表示和基于随机划分的隔离之间的一种独特的协同作用。这方便了困难异常的有效划分和算法偏差的消除,因此显著提高了检测性能。图1展示了DIF创造的四个随机表示,其中困难异常可能被暴露,且使用少数平行于轴的切割就可以简单地被分离。且如图2所示,DIF算法能够准确地为所提出的数据对象分配异常分数,并对其他区域的异常分数进行平滑估计,从而缓解了上述算法的偏差问题。

       进一步,在DIF的具体实现中,本文提出了计算高效的表示集成方法(CERE)和偏差增强的异常分数函数(DEAS)。在CERE的帮助下,DIF可以充分利用并行加速器在小批量计算中高效地产生表示集成,在很大程度上消除了计算开销。DEAS利用映射的密集表示中包含的隐藏定量信息和定性比较。这些额外的信息使我们能够更准确地评估数据对象的隔离难度,从而得到更好的异常评分函数。

       本文的主要贡献总结如下:

●本文提出深度孤立森林(DIF)方法。引入一种可以在不同大小子空间上实现非线性划分的新的隔离方法,提出一种比现有的仅能使用线性划分的方法更高效的异常隔离方法。这种方法可以更好地处理高维/不可线性分离的数据空间的复杂数据集中的困难异常并消除算法偏差。本文还表明DIF是孤立森林及其最新扩展EIF的一个高级泛化。

●本文提出一个新的表示方法,随机表示集成,只需要任意初始化的神经网络。这种表示方法极大地提高了在原始数据空间中划分的自由度。随机表示和基于随机划分的隔离之间的独特的协同作用在整个基于集成的异常估计阶段带来了极好的任意性和期望的多样性。

●本文提出表示集成方法CERE来确保DIF可以继承孤立森林的良好的可扩展性。引入异常评分方法DEAS来利用包含在映射的密集表示中的隐藏定量信息,提高了DIF的异常评分质量。

●DIF提供了一个与数据类型无关的异常检测解决方案。DIF可以通过简单地在特征映射中使用相应的随机初始化的神经网络来检测不同类型数据中的异常。

       对大量真实数据集(不仅包括表格数据,还包括图表和时间序列数据)进行的大量实验表明:(i)DIF明显优于孤立森林及其两个最新的扩展(6.2节);(ii)DIF与先进的深度异常检测器集成相比,也取得了显著的改进(6.2节);(iii)DIF在高维、大规模数据集上具有期望的可扩展性(6.3节),并对异常污染具有良好的鲁棒性(6.4节);(iv)通过与几个替换方案进行比较,证明了随机表示和基于随机划分的隔离之间的协同作用的重要性(6.5节);(v)本文的消融实验分别验证了CERE和DEAS的作用(6.6节)。

2 相关工作

2.1 异常检测

异常检测是近年来研究的热点,主要利用不同的数据特征如距离、密度、聚类成员或概率[1]进行异常检测。最近的研究[10]、[11]、[12]、[13]设计了基于表示学习的深度异常检测模型,其他方法使用深度学习中例如重构[14]或偏差[15]的概念作为评分方法。调查和对比研究可参考[2]、[16]、[17]。此外,还有一些实用的异常检测工具被开发,例如[18]、[19]、[20]、[21],来方便在现实世界的应用中使用异常检测模型。

2.2 孤立森林及其扩展

孤立森林[3]是一个非常热门的异常检测方法,根据在数据空间中隔离的难易程度来识别异常。尽管孤立森林在几个基准数据集上展现出高效的性能,一些它的改进方法也被提出,尝试修复其臭名昭著的漏洞并获得更好的检测性能。这些扩展的主流专注于设计更高效的隔离方法。SCIF[5]引入一个非轴平行的方法作为分支标准,即不是在划分中选择一个特征,而是使用一个最优的切片超平面。EIF[4]也使用了超平面,但是是有随机斜率和截距的超平面。其他工作[7] 通过从斜率方向的投影值范围中选择分裂阈值,进一步解决了EIF的空分支问题。PID[6]根据划分分支的稀疏性,选择性地选择方差较大的维度和分割点。文献[9]提出了一个基于概率的方法来找到比随机划分更好的分割值。这些扩展通常通过引入非轴并行来获得更好的性能和/或启发式划分。然而,主要的问题是他们仍然依赖于线性划分操作,这意味着处理需要非线性分离作为隔离方法的复杂数据也很困难。而且,它们由于隔离过程中隐藏的算法偏差,也受到前面提出的假象问题的影响。有一些在隔离过程中应用最近邻信息的扩展,例如LeSiNN[22]和iNNE[23]。文献[24]进一步使用了局部敏感哈希来扩展隔离机制到任意距离方法和数据类型上。这些基于距离的方法引入一种额外的假设,即异常远离其他数据对象。然而,这个假设并不总是成立,因为簇状异常点离它们的毗邻邻居也非常近[5]。检测性能对距离标准的选择也很敏感。

       另一个角度是改进评分方法。文献[25]引入一种带权重的路径评分方法和一个基于概率的集成方法。PID[6]根据稀疏程度而不是树的深度重新定义了评分方法。同样地,这些扩展由于其线性划分方法仍然较脆弱。

2.3 深度集成

深度集成[26],一个组合一组独立训练的网络的结果的简单框架,受到了广泛的关注。它可以提高准确率并在简单框架中提供不确定性估计,且不改变原始网络管道。和其他基于集成的方法相似,深度集成的质量很大程度上依赖于其成员的多样性。尽管深度集成简单,它依然引入相当大的计算消耗。因此,许多相关研究尝试解决这两个关键限制,例如[27]使用排斥的属于来确保个体多样性,[28] 通过反向阻止特征之间的条件可预测性来增加多样性,[29]提出了一个蒸馏模型来吸收尽可能集成内多的函数多样性。另外,这个框架给异常检测的相关工作带来了启发。文献[30]、[31]组合了一组自编码器并使用重构误差的中值作为异常分数。为了实现成员多样性,这些自编码器是稀疏连接的。

       本文工作同样包括神经网络集成的过程。从深度集成方面,本文的工作可以有效地解决上述两个关键问题。集成成员之间的多样性可以得到保证且由于只需要初始化神经网络,计算效率也可以得到保持。该工作还可能为深度集成研究发展提供有价值的见解。

3 问题声明和表示

为一个有N个数据对象的数据集,异常检测就是给出一个评分函数来估计每个数据对象的异常程度。许多现有的不同研究都只关注一种特定类型的数据,本文工作中不限制数据对象的类型,这意味着它们可以是多维向量、时间序列数据或图。在本文中,使用书法字体表示集合,手写字体表示函数,加粗小写字母表示向量,加粗大写字母代表矩阵。表1总结了主要的表示符号。

表1 本文使用的主要表示符号

4 前言:孤立森林

为了清晰起见,本文回忆孤立森林的基本程序[3]。提出了基础的结构,称为孤立树(iTree)。孤立树 τ 本质上是一个二叉树,且树中的每个结点对应着一个数据对象池。包含 n 个数据对象的子集被用作根结点的数据池,这个自己是从整个数据集中随机子采样得到的。孤立树 τ 以自顶向下的方式通过递归划分叶节点中的数据对象生成(即将数据对象不相交地划分为两个子节点),直到结点中只剩一个数据对象或达到了最大深度限制。iForest使用一种简单的隔离方法,将数据对象的第j维o(j)和作为每个数据对象分支标准的划分值η进行比较,其中j和η分别表示随机选择的特征索引和第j个特征可用值范围内的划分值。每个数据对象 o 在孤立树τ中有一个遍历路径p(o|τ),遍历路径的长度 |p(o|τ)| 可以被自然地看做o 的异常等级的指标(异常点通常更容易被分离,有较短的路径长度)。孤立森林构造一个有 T 棵孤立树的森林。数据对象 o 的异常分数基于它在这个森林中所有孤立树上的平均路径长度计算,即,其中C(T)是一个正则化因子。

       孤立森林使用一个线性的平行于轴的隔离方法,每次仅考虑一个维度,现有方法引入基于超平面的隔离包含了多个维度,但同样地,只能实现线性划分。这些现有的隔离方法受到限制,不能有效地处理困难异常,这些困难异常无法通过对单个特征的线性划分或多个特征的简单组合进行隔离。此外,这些现有方法普遍受隔离策略中隐藏的约束带来的算法偏差的影响。

5 深度孤立森林

本文需要一种新的隔离方法来脱离上述的限制从而可以高效地隔离那些困难异常并避免算法偏差。为了达到这个目的,本文引入深度孤立森林方法。总而言之,DIF构建一个从深度神经网络中得到的表示的集成,在新的数据空间中采用简单的平行于轴的划分来构建孤立森林中的孤立树。本文没有遵循组合独立训练神经网络的深度集成框架,而是使用由无优化神经网络产生的随机表示的集成,这些神经网络只需要简单的偶然初始化。这种新的表示方法在原始数据空间上具有较高的划分自由度。新投影表示空间中的每个特征都是基于多个原始特征之间的非线性交互,这意味着新空间的轴平行划分可以在原始空间中形成有效的非线性切割。这种方法成功地将切片切割从当前的线性约束中解放出来。那些在原始数据空间中无法轻易隔离的硬异常可能在表示空间中暴露出来,并且可以通过更少的切割来隔离它们,从而导致更清晰的异常。同时,随机表示和随机划分隔离之间的独特协同作用可以促进整体的基于集合的异常估计。

5.1 DIF公式

DIF首先通过无优化的神经网络产生随机表示的集合,定义为

    (1)

其中 r 是集成大小,是将原始数据映射到新的d维空间中的神经网络,网络的权重θu是随机初始化的。每个表示被分配给t个孤立树,构造了一个有T=r*t棵孤立树的森林。X的孤立树τi由一组投影数据的根节点P1⊂X初始化。数据池的第k个节点Pk被分成两个叶子节点,每个叶子节点的子集互不相交,即P2k = {x|x (jk) ≤ ηk, x ∈ Pk}, P2k+1 = {x|x (jk) > ηk, x ∈ Pk},其中jk在新创建的数据空间{1,..,d}的所有维度中均匀随机地选择,x(jk)是投影数据对象的第jk[1]维,ηk是{x(jk)|x∈Pk}范围内的一个分割值。

       在构建之后,一个数据对象 o 的异常程度通过在森林里每棵树上隔离的难易程度来评估。评分函数定义为

   (2)

其中I(o|τi)表示一个衡量在孤立树τi中隔离的难易程度的函数,Ω表示一个集成方法。

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

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

相关文章

如何手动添加和修改Chrome浏览器的Cookies:一个简单的指南

一、打开Chrome浏览器,输入需要增加的cookie的网址 二、按 F12打开开发者控制台,点击 Application 三、在Storage里面可以选择Cookie,再点击网址进行添加需要的cookie

【职业选择】AI工程师、机器学习工程师和深度学习工程师的职责与工作内容有什么区别?

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 👍感谢小伙伴们点赞、关注! 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

I2C软件模拟时序的基本要素

目录 前言 一、关于I2C 二、正文 1.引脚的配置 2.I2C的起始和终止时序 3.发送一个字节 4.接收一个字节 5.应答信号 6.指定地址写和指定地址读 总结 前言 环境: 芯片:STM32F103C8T6 Keil:V5.24.2.0 本文主要参考江科大教程&#…

Centos Stream9系统安装及网络配置详解

1.镜像下载 如未拥有系统镜像文件的伙伴可通过前往下面的连接进行下载,下载完成后需将其刻录至U盘中。 PS:该U盘应为空盘,刻录文件会导该盘格式化,下载文件选择dvd1.iso完整包,适用于本地安装。 下载地址&#xff1…

免费申请aws一年免费服务器使用教程

由于近期要测试一个公网项目,对比之下,选择了aws服务器,免费使用一年。 准备:一个visa信用卡即可,需要一个外网邮箱(我这边使用的hotmail) 注册的步骤不再赘述,切记几个点&#xff0…

【精选】基于Django的智能水果销售系统设计与实现

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

重要通知! | Paraverse平行云GitHub搬家啦!

随着“平行云”更名为“Paraverse平行云”,我们的GitHub地址也做出了相应调整。欢迎开发者访问我们的新地址,继续共享我们的开源仓库与实时云渲染软件! 更改的核心内容如下: pingxingyun >> ParaverseTechnology * 文档…

Linux_kernel简介01

--------------------------------------------------------- 力扣专题 --------------------------------------------------------- 一、嵌入式开发 1、ARM的历史 ARM原本含义(Acom RISC Machine)后来Acron公司独立出了ARM部门,成立了ARM公司(Advan…

渲染100高性能云渲染,性价比超高

在这个3D渲染行业迅速发展的时代,对于渲染速度和稳定性的渴望日益强烈。需要更快的渲染时间来缩短项目周期,同时希望渲染过程更加稳定,避免问题导致的损失。 如今市场上虽然不乏各种云渲染服务,但要找到既经济又能满足高要求的选…

taro vue 微信小程序 手写签名 功能实现

目录 需求: 效果: template: data: methods: 手写绘制: 图片保存: css: 需求: 在指定区域可以手写签名,点击重新签名,清除手写区域 点击提交签名,将手…

OpenAI GPT3 Search API not working locally

题意:"OpenAI GPT-3 搜索 API 在本地无法工作" 问题背景: I am using the python client for GPT 3 search model on my own Jsonlines files. When I run the code on Google Colab Notebook for test purposes, it works fine and returns …

若依部署后出现Error: Cannot find module ‘@/views/xxx‘问题,本地没有问题(解决办法)

若依部署后出现Error: Cannot find module ‘/views/xxx‘问题,本地没有问题 文章目录 若依部署后出现Error: Cannot find module ‘/views/xxx‘问题,本地没有问题一、问题描述1️⃣:描述2️⃣:原因 二、解决办法1.permission.js…

Win32远线程注入

远线程注入 远线程(RemoteThread)注入是指一个进程在另一个进程中创建线程的技术,这是一种很经典的DLL注入技术。 虽然比较古老,但是很实用。通过远线程注入,再配合api函数的hook技术,可以实现很多有意思的功能。 实现远线程注入…

Java项目: 基于SpringBoot+mysql学生读书笔记共享平台(含源码+数据库+毕业论文+springboot开发文档)

一、项目简介 本项目是一套基于SpringBootmysql学生读书笔记共享平台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单…

JsonCpp库的使用

目录 一、Json数据格式 二、JsonCpp介绍 2.1 Json::Value 2.2 序列化接口 2.3 反序列化接口 三、JsonCpp的使用 3.1 头文件包含 3.2 序列化 3.3 反序列化 四、补充 Json 是⼀种数据交换格式,它采⽤完全独⽴于编程语⾔的⽂本格式来存储和表示数据。 一、J…

Cvemap 到Nuclei模板映射

随着 ProjectDiscovery 的崛起,Nuclei、Katana、Subfinder、Naabu 以及最新添加的 cvemap 等工具纷纷出现,以增强勇敢者的武器库。 CVEmap 和 Nuclei 缺少功能 大多数渗透测试人员对缺少将cvemap结果直接“映射”到现有核心模板的功能感到失望。 这个绝…

macOS搭建Python3.11+Django4.2.15的平台框架使用Poetry管理

最近想使用Python开发,使用Django框架搭建平台,之前没有使用过Python,所以记录下整个过程: 1、Python版本的选择,直接去官网【Download Python | Python.org】看最新稳定版是哪个版本,选择安装&#xff0c…

Redis配置

redis配置管理 可以直接打开配置文件进行查看和修改,也可以通过config命令来进行查看和修改。 配置文件位置 Linux中默认在/etc/redis/redis.conf。Windows 中默认在安装目录下,名为 redis.windows.conf。 查看redis配置 使用redis-cli连接redis后&…

Anaconda安装并配置Python环境 | Python系列教程

Anaconda 是一个流行的 Python 数据科学和机器学习平台,它简化了包管理和部署的复杂性。Anaconda 旨在通过提供一个预配置的环境来加速数据分析、机器学习、科学计算和软件开发等领域的开发流程。总的来说,Anaconda 是一个强大的平台,它通过简…

ubunto中常见问题及WSL

ubunto中常见问题 ubuntu中vscode界面放大缩小的快捷方式ubuntu中vscode界面放大缩小的快捷方式_ubuntu中让vscode全屏-CSDN博客https://blog.csdn.net/weixin_47295886/article/details/123023748 解决出现无法使用sudo命令情况 解决出现无法使用sudo命令情况 - 知乎 (zhih…