勘探开发人工智能技术:机器学习(3)

0 提纲

4.1 logistic回归
4.2 支持向量机(SVM)
4.3 PCA

1 logistic回归

用超平面分割正负样本, 考虑所有样本导致的损失.

1.1 线性分类器

logistic 回归是使用超平面将空间分开, 一边是正样本, 另一边是负样本. 因此, 它是一个线性分类器.
如图所示, 若干样本由两个特征描述, 对应于二维平面上的点.

  • 它们为正样本或负样本, 由不同颜色表示.
  • 现在需要使用一条直线将正、负样本分开. 这样, 对于新的样本, 就看它落在直线的哪一边, 由此判断正负.
  • 这条直线就是线性分类器. 显然, 对于更高维的数据, 其线性分类器就是一个超平面.

在这里插入图片描述

  • 输入:数据矩阵 X = ( x i j ) n × m ∈ R n × m \mathbf{X} = (x_{ij})_{n \times m} \in \mathbb{R}^{n \times m} X=(xij)n×mRn×m, 二分类标签向量 Y = ( y i ) n × 1 ∈ { 0 , 1 } n \mathbf{Y} = (y_i)_{n \times 1} \in \{0, 1\}^n Y=(yi)n×1{0,1}n.
  • 输出 m m m维空间上的一个超平面 w x = 0 \mathbf{w} \mathbf{x} = \mathbf{0} wx=0, 其中 w , x ∈ R m + 1 \mathbf{w}, \mathbf{x} \in \mathbb{R}^{m+1} w,xRm+1
  • 优化目标
    max ⁡ ∏ n h ( x i ) y i ( 1 − h ( x i ) ) 1 − y i \max \prod^n h(\mathbf{x}_i)^{y_i}(1- h(\mathbf{x}_i))^{1 - y_i} maxnh(xi)yi(1h(xi))1yi
    其中, x i = { x i 1 , x i 2 , … , x i m } \mathbf{x}_i = \{x_{i1}, x_{i2}, \dots, x_{im}\} xi={xi1,xi2,,xim}, R m + 1 \mathbb{R}^{m+1} Rm+1增加的一维用于处理常数偏移量,这与线性回归的方式相同; h ( x i ) = 1 1 + e − w T x i h(\mathbf{x}_i) = \frac{1}{1+ e^{-\mathbf{w}^\mathbf{T}\mathbf{x}_i}} h(xi)=1+ewTxi1为sigmoid函数,它将取值范围为 ( − ∞ , ∞ ) (-\infty, \infty) (,) w T x i \mathbf{w}^\mathbf{T}\mathbf{x}_i wTxi压缩到取值范围为 ( 0 , 1 ) (0, 1) (0,1) h ( x i ) h(\mathbf{x}_i) h(xi), 可以解释为正例的概率.

在这里插入图片描述
指数有巧妙的设置, 把两种情况统一起来了

  • y i = 0 y_i = 0 yi=0 (为负例) 时, 优化目标中的 ( 1 − h ( x i ) ) (1−h(x_i)) (1h(xi)) 起作用, 即预测值越小, 相应项越大;
  • y i = 1 y_i = 1 yi=1 (为正例) 时, 优化目标中的 h ( x i ) h(x_i) h(xi) 起作用, 即预测值越大, 相应项越大.
  • 连乘是通过极大似然估计推导出来的, 概率的乘积还是概率;
  • max ⁡ \max max 表示的是 极大似然估计.

1.2 方案说明

方案和问题定义相同. 这是因为问题定义成这样, 方案也就固定了.
使用 sigmoid 函数的原因, 以及极大似然估计的推导:https://blog.csdn.net/weixin_60737527/article/details/124141293
每个点对优化目标都有贡献 (后面讲到 SVM 会回顾这里).

  • 如果远离分割面而且分类正确, 则相应项接近 1;
  • 如果远离分割面而且分类错误, 则相应项接近 0.

极大似然估计, 在机器学习中频繁被用到. 其思想就是一个事件发生了,那么发生这个事件的概率就是最大的.

1.3 方案求解

连乘用 log 变成连加, log 是一个单调函数, 不影响最大化目标. 这也是常用招数.
对式子取对数。原公式求最大值,可以取对数后乘以负1,之后求最小值。
L ( w ) = 1 n ∑ i = 1 n − y i ln ⁡ ( h ( x i ) ) − ( 1 − y i ) ln ⁡ ( ( 1 − h ( x i ) ) ) L(\mathbf{w}) = \frac{1}{n} \sum_{i = 1}^{n} -y_i \ln (h(\mathbf{x}_i)) - (1 - y_i)\ln((1- h(\mathbf{x}_i))) L(w)=n1i=1nyiln(h(xi))(1yi)ln((1h(xi)))
求最小值方法很多,机器学习中常用梯度下降系列方法。也可以采用牛顿法,或是求导数为零时 w \mathbf{w} w的数值等。

1.4 与线性回归的联系与区别

联系: 都是线性模型, logistic 回归还被称为广义线性模型.
区别: logistic 回归是分类, 要把两个类别的点尽可能分开. 直观上来看, logistic 回归比线性回归靠谱. 不过二分类任务的输出只有两个值, 而线性回归的输出是一个实数值, 后者更难把握.

2 支持向量机(SVM)

用 (核函数升维后的) 超平面分割正负样本, 仅考虑所有边界样本 (支持向量) 导致的距离.

2.1 线性分类器

支持向量机 (support vector machine, SVM) 有很多闪光点, 理论方面有 VC 维的支撑, 技术上有核函数将线性不可分变成线性可分, 实践上是小样本学习效果最好的算法.
如图所示, 基础的 SVM 仍然是一个线性二分类器, 这一点与 logistic 回归一致.
在这里插入图片描述
图 1 有 3 个分割线, 分别对应于一个分类器.

  • H1不能把正负样本分开, 拟合能力弱;
  • H2可以把正负样本分开 (拟合能力强), 但它与最近的正负样本距离小;
  • H3可以把正负样本分开, 而且与最近的正负样本距离达到了最大, 因此它有良好的泛化能力, 即对于新样本的预测能力.

使用下图来说明.
在这里插入图片描述

  • 输入:数据矩阵 X = ( x i j ) n × m ∈ R n × m \mathbf{X} = (x_{ij})_{n \times m} \in \mathbb{R}^{n \times m} X=(xij)n×mRn×m, 二分类标签向量 Y = ( y i ) n × 1 ∈ { − 1 , 1 } n \mathbf{Y} = (y_i)_{n \times 1} \in \{-1, 1\}^n Y=(yi)n×1{1,1}n.
  • 输出 m m m维空间上的一个超平面 w x + b = 0 \mathbf{w} \mathbf{x} + b = \mathbf{0} wx+b=0, 其中 w , x ∈ R m \mathbf{w}, \mathbf{x} \in \mathbb{R}^{m} w,xRm
  • 优化目标
    arg ⁡ max ⁡ w , b 1 ∣ ∣ w ∣ ∣ . ( 最大化实线到虚线的间隔 ) \arg \max_{\mathbf{w}, b} \frac{1}{||\mathbf{w}||}. (最大化实线到虚线的间隔) argw,bmax∣∣w∣∣1.(最大化实线到虚线的间隔)
  • 约束条件 y i ( w T ϕ ( x i ) + b ) ≥ 1 y_i (\mathbf{w}^{\mathbf{T}}\phi(\mathbf{x}_i)+b) \geq 1 yi(wTϕ(xi)+b)1.

其中:

  • 标签的取值范围为 { − 1 , + 1 } \{-1, +1\} {1,+1}, 和 logistic 回归的 { 0 , 1 } \{0, 1\} {0,1}不同. 这是为了表达相应的式子方便;
  • 优化目标是最大化实线到虚线的间隔;
  • 约束条件是每个样本点被正确分类 (为正数), 且到实线的加权距离不小于 1.

2.2 基本方案

实线对应的是线性分类器, 即分割超平面;
虚线上的点被称为支持向量 (support vector), 也就是关键样本的意思, 因为样本在空间用向量表示;
支持向量之外的样本, 最终没有为分类器作出贡献. 这是与 logistic 回归一个本质的区别.

2.3 核函数

用核函数将低维空间的数据映射到高维空间, 这样, 以前线性不可分的数据就变得线性可分.
这是一个神奇的想法, 因为机器学习很多时候致力于将高维数据降为低维 (如 PCA, 这个我们后面说), 而 SVM 反其道而行的.
在这里插入图片描述

  • 原始数据点是线性不可分的 (即二维平面上的任意直线都不可能把两种类别的数据点分开). 但使用高斯核将数据映射到三维就可以做到用二维平面分割.
  • 想像下某人脸上有痘痘, 如果脸部看作一个平面, 则去掉痘痘不可避免需要画一个圈, 它不是线性的. 现在逮住痘痘的中间往外面拉, 将脸部拉成一个曲面, 这时候, 用一把手术刀进行切割 (对应于一个平面), 就可以把痘痘切下来啦. 这真是一个不忍直视的画面 😦.

下图给出了更直观的画面.
在这里插入图片描述

常用的核函数有:线性核,多项式核,高斯核,Sigmoid核和复合核,傅立叶级数核,B样条核和张量积核等。还有很多核函数. 甚至有人将核技巧弄出来之后, 脱离了 SVM 进行使用. 这是 2000 年前后的研究热点.

2.4 软间隔

有时候某些正负样本实在无法从对方阵营里面分出来, 即 (2) 式所表达的约束条件无法得到满足, 就可以使用软间隔.
引入松弛变量 ξ i ≥ 0 \xi_i≥0 ξi0,允许SVM在一些样本上出错,约束条件改为:
y i ( w T ϕ ( x i ) + b ) ≥ 1 − ξ i y_i (\mathbf{w}^{\mathbf{T}}\phi(\mathbf{x}_i)+b) \geq 1 - \xi_i yi(wTϕ(xi)+b)1ξi
在这里插入图片描述

2.5 讨论

一个数据集应该使用什么核函数, 经常是试出来的. 这个和神经网络调参类似, 不是那么讲道理.
对于高维数据, 几十个支持向量很正常. 无论如何, 支持向量 (样本) 都只占训练集的一小部分.
支持向量机能很好地防止过拟合, 因为只要支持向量不改变, 其它样本的改变都不影响分类器. 当然, 这使得支持向量的选取 (与核函数的选取有关) 至关重要.

3 PCA

求特征值与特征向量, 以及相应的基向量, 进行空间的映射.

3.1 特征选择与特征提取

主成分分析 (principal component analysis, PCA) 是一种有理论依据的无监督特征提取的线性方法.
特征选择是指从已有的特征里面选择出一个子集. 例如: 身高、体重、性别、年龄、体温、血相等等, 如果要一个人是否患流感,身高、体重等不但没有作用, 反而还会让分类器效果变差. 回头想想 k k kNN, 在计算距离时考虑一些不相关的特征, 会使得相似的样本变得不相似.
在这里插入图片描述
特征提取则是指从已有特征中生成新的特征. 例如: 人们常说自己有多重, 然后表达想减肥的意愿. 但这种想法是错误的, 应该计算 BMI(体重÷身高²), 以此确定自己是否偏胖. 这里 “计算 BMI”, 就是一个特征提取的过程.
总的来说, 特征选择相对简单, 而特征提取有很大的想像空间. 后面将会介绍的神经网络, 其最本质的任务就是特征提取.
在这里插入图片描述

3.2 PCA 的基本思想

PCA 有两个特点:

  • 进行无监督的特征提取, 即它不考虑标签;
  • 是一个线性模型, 即新特征均为原始特征的线性组合.

如图 1 所示, 二维平面上有一系列数据点.
从它们的角度来看, x x x轴和 y y y轴两个特征的区分能力都差不多, 特征的取值范围都是[−4,+4].
在这里插入图片描述
如果我们将这些点围绕原点顺时针旋转 45 度, 就会发现新的 x x x 轴把样本分得比较开, 而新的 y y y 轴区分能力比较弱.
再想像一个极端的情况: 这些点全部在一条直线上, 经过旋转后 x x x 轴起到作用, 而 y y y 轴完全没有区分能力.

从高等数学的角度, 就是需要求一组正交基, 且排名靠前的基向量 (被称为 主成分) 区分能力更强. 这组正交基的个数有可能少于原始空间的维度, 这时就达到 特征提取 + 降维 的作用.

为了进一步地降维, 设置一个阈值, 将基向量的区分度低于该域值时, 就可以把它抛弃.

3.3 PCA计算过程

参考:https://www.cnblogs.com/hadoop2015/p/7419087.html
问题: 真实的训练数据总是存在各种各样的问题, 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余。.
PCA的思想是将 n n n维特征映射到 k k k维上( k < n k<n k<n),这 k k k维是全新的正交特征。这k维特征称为主元,是重新构造出来的 k k k维特征,而不是简单地从 n n n维特征中去除其余 n − k n-k nk维特征。
假设我们得到的2维数据。
有10个样例,每个样例两个特征。可以这样认为,有10篇文档, x x x是10篇文档中“learn”出现的TF-IDF, y y y是10篇文档中“study”出现的TF-IDF。也可以认为有10辆汽车, x x x是千米/小时的速度, y y y是英里/小时的速度
在这里插入图片描述

  • 第一步分别求x和y的平均值,然后对于所有的样例,都减去对应的均值。这里x的均值是1.81,y的均值是1.91,那么一个样例减去均值后即为(0.69,0.49),得到:
    在这里插入图片描述
  • 第二步,求特征协方差矩阵,如果数据是3维,那么协方差矩阵是:
    在这里插入图片描述

这里只有 x x x y y y,求解得:
在这里插入图片描述
对角线上分别是 x x x y y y的方差,非对角线上是协方差。

  • 协方差大于0表示 x x x y y y若有一个增,另一个也增;小于0表示一个增,一个减;协方差为0时,两者独立。

  • 协方差绝对值越大,两者对彼此的影响越大,反之越小。

  • 第三步,利用矩阵的知识,求协方差矩阵 C \mathbf{C} C的特征值 λ λ λ 和相对应的特征向量 $\mathbf{u} $每一个特征值对应一个特征向量)
    C u = λ u \mathbf{C}\mathbf{u} = \lambda \mathbf{u} Cu=λu
    在这里插入图片描述
    上面是两个特征值,下面是对应的特征向量,特征值0.0490833989对应特征向量为 ( − 0.735148656 , 0.677873399 ) (-0.735148656, 0.677873399) (0.735148656,0.677873399),这里的特征向量都归一化为单位向量。

  • 第四步,将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵。
    这里特征值只有两个,我们选择其中最大的那个,这里是1.28402771,对应的特征向量是(-0.677873399, -0.735148656).
    -第五步,将样本点投影到选取的特征向量上。假设样例数为m,特征数为n,减去均值后的样本矩阵为DataAdjust(mn),协方差矩阵是nn,选取的k个特征向量组成的矩阵为EigenVectors(nk)。那么投影后的数据FinalData为:
    F i n a l D a t a ( m ∗ k ) = D a t a A d j u s t ( m ∗ n ) × E i g e n V e c t o r s ( n ∗ k ) FinalData(m * k) = DataAdjust(m*n) \times EigenVectors(n*k) FinalData(mk)=DataAdjust(mn)×EigenVectors(nk)
    FinalData(10
    1) = DataAdjust(10*2矩阵)×特征向量(-0.677873399, -0.735148656), 得到结果是:
    在这里插入图片描述
    这样,就将原始样例的n维特征变成了k维,这k维就是原始特征在k维上的投影。
    上面的数据可以认为是learn和study特征融合为一个新的特征叫做LS特征,该特征基本上代表了这两个特征。
    上述过程有个图描述:
    在这里插入图片描述
    正号表示预处理后的样本点,斜着的两条线就分别是正交的特征向量(由于协方差矩阵是对称的,因此其特征向量正交),最后一步的矩阵乘法就是将原始样本点分别往特征向量对应的轴上做投影。

3.4 最大方差理论

要解释为什么协方差矩阵的特征向量就是k维理想特征,需要了解最大方差理论。
在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。
如前面的图,样本在横轴上的投影方差较大,在纵轴上的投影方差较小,那么认为纵轴上的投影是由噪声引起的。
因此我们认为,最好的k维特征是将n维样本点转换为k维后,每一维上的样本方差都很大
比如下图有5个样本点:(已经做过预处理,均值为0,特征方差归一化),下面将样本投影到某一维上,这里用一条过原点的直线表示。
在这里插入图片描述
假设我们选择两条不同的直线做投影,那么左右两条中哪个好呢?根据我们之前的方差最大化理论,左边的好,因为投影后的样本点之间方差最大。
在这里插入图片描述

3.5 PCA优缺点

优点

  • 有良好的数学基础;
  • 有良好的应用.
    缺点:
  • 只是一个线性模型;
  • 只能做简单的数据预处理;
  • 无监督模型, 不一定适用于有监督数据.

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

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

相关文章

每日一题——二叉树中和为某一值的路径

题目 给定一个二叉树root和一个值 sum &#xff0c;判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。 该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点叶子节点是指没有子节点的节点路径只能从父节点到子节点&#xff0c;不能从子节点到父节点总节点…

【解读Spikingjelly】使用单层全连接SNN识别MNIST

原文档&#xff1a;使用单层全连接SNN识别MNIST — spikingjelly alpha 文档 代码地址&#xff1a;完整的代码位于activation_based.examples.lif_fc_mnist.py GitHub - fangwei123456/spikingjelly: SpikingJelly is an open-source deep learning framework for Spiking Neur…

【Pytroch】基于支持向量机算法的数据分类预测(Excel可直接替换数据)

【Pytroch】基于支持向量机算法的数据分类预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理2.数学公式3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种强大的监…

metaRTC7 demo mac/ios编译指南

概要 metaRTC7.0开始全面支持mac/ios操作系统&#xff0c;新版本7.0.023 mac os demo 包含有srs/zlm的推拉流演示。发布版自带了x64版第三方类库&#xff0c;arm版第三方类库还需开发者自己编译。 源码下载 下载文件metartc7.023.7z https://github.com/metartc/metaRTC/re…

php从静态资源到动态内容

1、从HTML到PHP demo.php:后缀由html直接改为php,实际上当前页面已经变成了动态的php应用程序脚本 demo.php: 允许通过<?php ... ?>标签,添加php代码到当前脚本中 php标签内部代码由php.exe解释, php标签之外的代码原样输出,仍由web服务器解析 <!DOCTYPE html>…

【云原生】kubernetes中容器的资源限制

目录 1 metrics-server 2 指定内存请求和限制 3 指定 CPU 请求和限制 资源限制 在k8s中对于容器资源限制主要分为以下两类: 内存资源限制: 内存请求&#xff08;request&#xff09;和内存限制&#xff08;limit&#xff09;分配给一个容器。 我们保障容器拥有它请求数量的…

【uniapp】使用Vs Code开发uniapp:

文章目录 一、使用命令行创建uniapp项目&#xff1a;二、安装插件与配置&#xff1a;三、编译和运行:四、修改pinia&#xff1a; 一、使用命令行创建uniapp项目&#xff1a; 二、安装插件与配置&#xff1a; 三、编译和运行: 该项目下的dist》dev》mp-weixin文件导入微信开发者…

时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比

时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比 目录 时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 时序预测 | …

【 运维这些事儿 】- Gerrit代码审查详

文章目录 背景作用代码审查工具Gerrit镜像构建Dockerfile 部署配置 Gitlab代码同步ssh-agent 相关概念常用命令Git 配置使用 Git Review针对已有项目添加commit-msg&#xff0c;用于自动添加changeId添加源配置 .gitreview备注指定审核人自定义git命令 开发使用代码审查 背景 …

nginx基于主机和用户访问控制以及缓存简单例子

一.基于主机访问控制 1.修改nginx.conf文件 2.到其他主机上测试 &#xff08;1&#xff09;191主机 &#xff08;2&#xff09;180主机 二.基于用户访问控制 1.修改nginx.conf文件 2.使用hpasswd为用户创建密码文件&#xff0c;并指定到刚才指定的密码文件webck 3.测试…

item_get_desc获得TB/TM商品描述

一、接口参数说明&#xff1a; item_get_desc-获得TB/TM商品描述&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_desc 名称类型必须描述keyString是调用key&#xff08;…

Pytorch基于VGG cosine similarity实现简单的以图搜图(图像检索)

代码如下&#xff1a; from PIL import Image from torchvision import transforms import os import torch import torchvision import torch.nn.functional as Fclass VGGSim(torch.nn.Module):def __init__(self):super(VGGSim, self).__init__()blocks []blocks.append(t…

Python Opencv实践 - 图像缩放

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg_cat cv.imread("../SampleImages/cat.jpg", cv.IMREAD_COLOR) plt.imshow(img_cat[:,:,::-1])#图像绝对尺寸缩放 #cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) #指定Size大…

企业服务器数据库遭到malox勒索病毒攻击后如何解决,勒索病毒解密

网络技术的发展不仅为企业带来了更高的效率&#xff0c;还为企业带来信息安全威胁&#xff0c;其中较为常见的就是勒索病毒攻击。近期&#xff0c;我们公司收到很多企业的求助&#xff0c;企业的服务器数据库遭到了malox勒索病毒攻击&#xff0c;导致系统内部的许多重要数据被加…

大数据课程I3——Kafka的消息流与索引机制

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Kafka的消息流处理; ⚪ 掌握Kafka的索引机制; ⚪ 掌握Kafka的消息系统语义; 一、Kafka消息流处理 1. Producer 写入消息 流程说明: 1. producer 要向Kafka生产消息,需要先通过…

使用node搭建服务器,前端自己写接口,将vue或react打包后生成的dist目录在本地运行

使用node.jsexpress或者使用node.jspm2搭建服务器&#xff0c;将vue或react打包后生成的dist目录在本地运行 vue项目打包后生成的dist目录如果直接在本地打开index.html,在浏览器中会报错&#xff0c;无法运行起来。 通常我是放到后端搭建的服务上面去运行&#xff0c;当时前端…

命令模式(C++)

定义 将一个请求(行为)封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 应用场景 在软件构建过程中&#xff0c;“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比…

jmeter提取token方式以及设置成全局变量(跨线程组传token值)方式

前言 今天Darren洋教大家如何使用jmeter中的插件来进行token值的提取与调用&#xff0c;今天Darren洋介绍两种jmeter提取token值的方式&#xff0c;一种是在当前线程组中直接提取token值&#xff0c;一种是跨线程组的方式进行token值的提取并调用给不同线程组里的HTTP接口使用。…

软件测试工程师的职业发展方向

一、软件测试工程师大致有4个发展方向: 1资深软件测试工程师 一般情况&#xff0c;软件测试工程师可分为测试工程师、高级测试工程师和资深测试工程师三个等级。 达到这个水平比较困难&#xff0c;这需要了解很多知识&#xff0c;例如C语言&#xff0c;JAVA语言&#xff0c;…