算法设计与智能计算 || 专题七: 主成分分析的统计学视角

news2024/11/18 17:52:10

主成分分析的统计学视角

文章目录

  • 主成分分析的统计学视角
  • PCA 的统计学视角
    • 1. 寻找第一个主成分
    • 2. 获取第二个主成分
    • 3. 非零均值随机变量的主元
    • 4. 零均值随机变量的样本主元
    • 5. PCA 降维案例

主成分分析是将高维空间中的数据集拟合成一个低维子空间的方法,到目前为止它已成功应用于数学建模、数据压缩、数据可视化等领域。

主成分分析是将高维空间的数据集 { x i ∈ R D ∣ i = 1 , 2 , ⋯   , n } \{\boldsymbol{x}_i\in\mathbb{R}^D\vert i=1,2,\cdots,n\} {xiRDi=1,2,,n} 拟合到一个低维放射子空间 S S S 中,且其维数 d ≪ D d\ll D dD。该问题可视为统计问题或者代数几何问题。

PCA 的统计学视角

多维随机变量 x ∈ R D \boldsymbol{x}\in \mathbb{R}^D xRD 满足 E [ x ] = 0 \mathbb{E}[\boldsymbol{x}]=\boldsymbol{0} E[x]=0,可寻找 d      ( ≪ D ) d\;\;(\ll D) d(D) 个主元 y i      ( i = 1 , 2 , ⋯   , d ) y_i\;\;(i=1,2,\cdots,d) yi(i=1,2,,d),使 y = [ y 1 , y 2 , ⋯   , y d ] ⊤ \boldsymbol{y}=[y_1,y_2,\cdots,y_d]^\top y=[y1,y2,,yd] 可表示为 x \boldsymbol{x} x d d d 个不线性相关的成分
y = [ y 1 y 2 ⋮ y d ] = [ u 1 ⊤ x u 2 ⊤ x ⋮ u d ⊤ x ] = [ u 1 ⊤ u 2 ⊤ ⋮ u d ⊤ ] x = U ⊤ x \boldsymbol{y}=\begin{bmatrix} y_1\\ y_2 \\ \vdots \\ y_d \end{bmatrix} =\begin{bmatrix} \boldsymbol{u}_1^\top\boldsymbol{x}\\ \boldsymbol{u}_2^\top\boldsymbol{x}\\ \vdots \\ \boldsymbol{u}_d^\top\boldsymbol{x}\\ \end{bmatrix} =\begin{bmatrix} \boldsymbol{u}_1^\top\\ \boldsymbol{u}_2^\top\\ \vdots \\ \boldsymbol{u}_d^\top\\ \end{bmatrix}\boldsymbol{x} =U^\top\boldsymbol{x} y= y1y2yd = u1xu2xudx = u1u2ud x=Ux

y i = u i ⊤ x , i = 1 , 2 , ⋯   , d y_i=\boldsymbol{u}_i^\top\boldsymbol{x},\qquad i=1,2,\cdots,d yi=uix,i=1,2,,d
满足 u i ⊤ u i = 1 ,      u i ⊤ u j = 0 \boldsymbol{u}_i^\top\boldsymbol{u}_i=1,\;\;\boldsymbol{u}_i^\top\boldsymbol{u}_j=0 uiui=1,uiuj=0 Var [ y 1 ] ≥ Var [ y 2 ] ≥ ⋯ ≥ Var [ y d ] \text{Var}[y_1]\geq \text{Var}[y_2]\geq\cdots\geq\text{Var}[y_d] Var[y1]Var[y2]Var[yd],其中, y 1 , y 2 , ⋯   , y d y_1,y_2,\cdots,y_d y1,y2,,yd 分别称为 x \boldsymbol{x} x 的第1、第2、 ⋯ \cdots 、第 d d d 个主成分.

1. 寻找第一个主成分

以第一主成分为例,我们试图寻找向量 u 1 ∗ \boldsymbol{u}_1^* u1 使得
max ⁡ u 1 ∗ ∈ R D Var [ u 1 ⊤ x ] s . t . u 1 ⊤ u 1 = 1 \begin{align*} \max_{\boldsymbol{u}_1^*\in\mathbb{R}^D} \quad \text{Var}[\boldsymbol{u}_1^{\top}\boldsymbol{x}] \\ s.t. \quad\boldsymbol{u}_1^{\top}\boldsymbol{u}_1=1 \end{align*} u1RDmaxVar[u1x]s.t.u1u1=1
定理:(随机变量的主成分)

对于随机变量 x ∈ R D \boldsymbol{x}\in\mathbb{R}^D xRD 且满足 E [ x ] = 0 \mathbb{E}[\boldsymbol{x}]=\boldsymbol{0} E[x]=0,协方差矩阵为 Σ x = E [ x x ⊤ ] \Sigma_{\boldsymbol{x}}=\mathbb{E}[\boldsymbol{x}\boldsymbol{x}^\top] Σx=E[xx],假设 rank ( Σ x ) ≥ d \text{rank}(\Sigma_{\boldsymbol{x}})\geq d rank(Σx)d,则多维随机变量 x \boldsymbol{x} x 的第 i i i 个主成分 y i y_i yi 可表示为
y i = u i ⊤ x y_i=\boldsymbol{u}_i^\top\boldsymbol{x} yi=uix
其中, { u i } i = 1 d \{\boldsymbol{u}_i\}_{i=1}^d {ui}i=1d 是协方差矩阵 Σ x \Sigma_{\boldsymbol{x}} Σx 的第 i i i 个最大特征值对应的特征向量(相互正交),且 λ i = Var [ y i ] \boldsymbol\lambda_i=\text{Var}[\boldsymbol y_i] λi=Var[yi].

证明: 为简单起见,假定 Σ x \Sigma_{\boldsymbol{x}} Σx 无重复特征值。由 Σ x u j = λ j u j \Sigma_{\boldsymbol{x}}\boldsymbol{u}_j=\lambda_j\boldsymbol{u}_j Σxuj=λjuj u j ⊤ Σ x = λ j u j ⊤ \boldsymbol{u}_j^\top\Sigma_{\boldsymbol{x}}=\lambda_j\boldsymbol{u}_j^\top ujΣx=λjuj
u i ⊤ Σ x u j ⏟ = λ j u i ⊤ u j u i ⊤ Σ x ⏟ u j = λ i u i ⊤ u j \boldsymbol{u}_i^\top\underbrace{\Sigma_{\boldsymbol{x}}\boldsymbol{u}_j}=\lambda_j\boldsymbol{u}_i^\top\boldsymbol{u}_j\\ \underbrace{\boldsymbol{u}_i^\top\Sigma_{\boldsymbol{x}}}\boldsymbol{u}_j=\lambda_i\boldsymbol{u}_i^\top\boldsymbol{u}_j ui Σxuj=λjuiuj uiΣxuj=λiuiuj
( λ i − λ j ) u i ⊤ u j = 0 (\boldsymbol\lambda_i-\boldsymbol\lambda_j)\boldsymbol{u}_i^\top\boldsymbol{u}_j=0 (λiλj)uiuj=0,又由于 λ i ≠ λ j \boldsymbol\lambda_i\ne\boldsymbol\lambda_j λi=λj,可知 u i ⊤ u j = 0 \boldsymbol{u}_i^\top\boldsymbol{u}_j=0 uiuj=0

由于
Var ⁡ [ y i ] = Var ⁡ [ u i ⊤ x ] = E [ ( u i ⊤ x ) 2 ] = E [ u i ⊤ x x ⊤ u i ] = u i ⊤ E [ x x ⊤ ] u i = u i Σ x u i \begin{aligned} \operatorname{Var}\left[\boldsymbol y_{i}\right] &=\operatorname{Var}\left[\boldsymbol{u_{i}^{\top}} \boldsymbol x\right]=E\left[\left(u_{i}^{\top} x\right)^{2}\right] \\ &=E\left[\boldsymbol {u_{i}^{\top}} \boldsymbol x \boldsymbol{x^{\top}} \boldsymbol u_{i}\right]=\boldsymbol{u_{i}^{\top}} E\left[\boldsymbol x \boldsymbol{x^{\top}}\right] u_{i}=\boldsymbol u_{i} \Sigma_{x} \boldsymbol u_{i} \end{aligned} Var[yi]=Var[uix]=E[(uix)2]=E[uixxui]=uiE[xx]ui=uiΣxui
则优化问题 max ⁡ Var ⁡ [ y 1 ] \max \operatorname{Var}\left[\boldsymbol y_{1}\right] maxVar[y1]可建模为
{ max ⁡ u 1 ∈ R D u 1 ⊤ Σ x u 1  s.t.  u 1 ⊤ u 1 = 1 \left\{\begin{array}{l} \max _{\boldsymbol{u}_1\in\mathbb{R}^D} \boldsymbol u_1^{\top} \Sigma_x \boldsymbol u_1 \\ \text { s.t. } \boldsymbol{u_1^{\top}} \boldsymbol u_1=1 \end{array}\right. {maxu1RDu1Σxu1 s.t. u1u1=1

构造拉格朗日函数,将约束优化化成无约束优化
L ( u 1 ) = u 1 ⊤   Σ x u 1 + λ ( 1 − u 1 ⊤ u 1 ) \mathcal{L}\left( \boldsymbol{u}_{1}\right)= \boldsymbol{u}_{1}^{\top} \ {\Sigma}_{\boldsymbol{x}} \boldsymbol{u}_{1}+\boldsymbol{\lambda}\left(1-\boldsymbol{{u}_{1}^{\top}} \boldsymbol{u}_{1}\right) L(u1)=u1 Σxu1+λ(1u1u1)
偏导数值为零
∂ L ( u 1 ) ∂ u 1 = 2   Σ x u 1 − 2 λ u 1 = 2 (   Σ x u 1 − λ u 1 ) = 0 \frac{\partial \mathcal{L}\left(\boldsymbol{u}_{1}\right)}{\partial \boldsymbol{u}_{1}}=2 \ {\Sigma}_{x} \boldsymbol{u}_{1}-2 \boldsymbol{\lambda} \boldsymbol {u}_{1}=2\left(\ {\Sigma}_{x} \boldsymbol {u}_{1}-\boldsymbol\lambda \boldsymbol {u}_{1}\right)=0 u1L(u1)=2 Σxu12λu1=2( Σxu1λu1)=0

Σ x u 1 = λ u 1 {\Sigma}_{x} \boldsymbol {u}_{1}=\boldsymbol \lambda \boldsymbol {u}_{1} Σxu1=λu1
可知 u 1 {u}_{1} u1是协方差矩阵 ∑ x {\sum}_{x} x的特征值 λ \boldsymbol\lambda λ对应的特征向量,最优值 u 1 ⊤ ∑ x u 1 = λ u 1 u 1 ⊤ = λ 1 > 0 \boldsymbol{ {u}_{1}^{\top}} {\sum}_{x} \boldsymbol u_{1}=\boldsymbol\lambda \boldsymbol u_{1} \boldsymbol{u_{1}^{\top}}=\boldsymbol\lambda_{1}>0 u1xu1=λu1u1=λ1>0

2. 获取第二个主成分

第二个最优解 u 2 \boldsymbol{u}_2 u2 需要满足随机变量 y 1 = u 1 ⊤ x y_{1}=\boldsymbol{u_{1}^{\top}} \boldsymbol x y1=u1x 与随机变量 y 2 = u 2 ⊤ x y_{2}=\boldsymbol{u_{2}^{\top}} \boldsymbol x y2=u2x 不相关,即 u 1 ⊥ u 2 \boldsymbol {u}_{1} \perp \boldsymbol {u}_{2} u1u2. 由于 E [ x ] = 0 \mathbb{E}[\boldsymbol x]=\boldsymbol 0 E[x]=0,则 E [ y i ] = E [ u i ⊤ x ] = 0 \mathbb{E}[y_i]=\mathbb{E}[\boldsymbol u^\top_i\boldsymbol x]=0 E[yi]=E[uix]=0. 两个随机变量的协方差可表示为
Cov ⁡ ( y 1 , y 2 ) = Cov ⁡ ( u 1 ⊤ x , u 2 ⊤ x ) = E [ ( u 1 ⊤ x ) ( u 2 ⊤ x ) ⊤ ] = E [ u 1 ⊤ x x ⊤ u 2 ] = u 1 ⊤ Σ x u 2 = λ 1 u 1 ⊤ u 2 = 0 \begin{array}{l} \operatorname{Cov}\left(y_{1}, y_{2}\right)=\operatorname{Cov}\left(\boldsymbol {{u}_{1}^{\top}} \boldsymbol x, \boldsymbol {u_{2}^{\top}}\boldsymbol x\right)=E\left[\left(\boldsymbol{u_{1}^{\top}} \boldsymbol x\right)\left(\boldsymbol{u_{2}^{\top}} \boldsymbol x\right)^{\top}\right] \\ =E\left[\boldsymbol {{u}_{1}^{\top}} \boldsymbol x \boldsymbol{x^{\top}} \boldsymbol {u}_{2}\right]=\boldsymbol {{u}_{1}^{\top}} \Sigma_{\boldsymbol x} \boldsymbol {u}_{2}=\boldsymbol\lambda_{1} \boldsymbol{u_{1}^{\top}} \boldsymbol u_{2}=0 \end{array} Cov(y1,y2)=Cov(u1x,u2x)=E[(u1x)(u2x)]=E[u1xxu2]=u1Σxu2=λ1u1u2=0
可知 u 1 ⊤ u 2 = 0 \boldsymbol {u_1^{\top}} \boldsymbol u_2=0 u1u2=0

则优化模型为
max ⁡ u 2 ∈ R D Var ⁡ [ y 2 ] = u 2 ⊤ Σ x u 2  s.t.       u 2 ⊤ u 2 = 1      u 1 ⊤ u 2 = 0 \begin{array}{l} \max_{\boldsymbol{u}_2 \in\mathbb R^{D}} \operatorname{Var}\left[y_{2}\right]=\boldsymbol {u}_{2}^{\top} \Sigma_{x} \boldsymbol u_{2}\\ \text { s.t. } \;\;\boldsymbol {{u}_{2}^{\top}} \boldsymbol {u}_{2}=1 \\ \qquad\;\;\boldsymbol {{u}_{1}^{\top}} \boldsymbol {u}_{2}=0 \end{array} maxu2RDVar[y2]=u2Σxu2 s.t. u2u2=1u1u2=0
构造拉格朗日函数
L ( u 2 , λ 2 , γ ) = u 2 ⊤ Σ x u 2 + λ 2 ( 1 − u 2 ⊤ u 2 ) + γ u 1 ⊤ u 2 \mathcal{L}\left(\boldsymbol {u}_{2}, \boldsymbol\lambda_2,\boldsymbol\gamma \right)=\boldsymbol {{u}_{2}^{\top}} {\Sigma}_x \boldsymbol {u}_{2}+\boldsymbol\lambda_{2}\left(1-\boldsymbol {{u}_{2}^{\top}} \boldsymbol {u}_{2}\right)+\boldsymbol\gamma \boldsymbol {{u}_{1}^{\top}} \boldsymbol {u}_{2} L(u2,λ2,γ)=u2Σxu2+λ2(1u2u2)+γu1u2
置偏导数为0,得
∂ L ( u 2 , λ 2 , γ ) ∂ u 2 = 2 Σ x u 2 − 2 λ 2 u 2 + γ u 1 =   0 (1) \frac{\partial \mathcal{L}\left(\boldsymbol u_{2}, \boldsymbol\lambda_{2}, \boldsymbol\gamma\right)}{\partial \boldsymbol {u}_{2}}=2 {\Sigma}_{x} \boldsymbol {u}_{2}-2 \boldsymbol\lambda_{2} \boldsymbol {u}_{2}+\boldsymbol\gamma \boldsymbol {u}_{1}=\ {0} \tag{1} u2L(u2,λ2,γ)=2Σxu22λ2u2+γu1= 0(1)

∂ L ( u 2 , λ 2 , γ ) ∂ λ 2 = 1 − u 2 ⊤ u 2 = 0 \frac{\partial \mathcal{L}\left(\boldsymbol {u}_{2}, \boldsymbol\lambda_{2}, \boldsymbol\gamma\right)}{\partial \boldsymbol\lambda_{2}}=1-\boldsymbol {{u}_{2}^{\top}} \boldsymbol{u}_{2}=0 λ2L(u2,λ2,γ)=1u2u2=0

∂ L ( u 2 , λ 2 , γ ) ∂ γ = u 2 ⊤ u 2 = 0 \frac{\partial \mathcal{L}\left(\boldsymbol {u}_{2}, \boldsymbol\lambda_{2}, \boldsymbol\gamma\right)}{\partial \boldsymbol\gamma}=\boldsymbol {{u}_{2}^{\top}} \boldsymbol{u}_{2}=0 γL(u2,λ2,γ)=u2u2=0

(1) 式两边同时左乘 u 1 ⊤ \boldsymbol{{u}_{1}^{\top}} u1
2 u 1 ⊤ Σ x u 2 − 2 λ 2 u 1 ⊤ u 2 + γ u 1 ⊤ u 1 = 0 2 λ 1 u 1 ⊤ u 2 − 2 λ 2 u 1 ⊤ u 2 + γ = 0 \begin{array}{l} 2 \boldsymbol {{u}_{1}^{\top}} \Sigma_{x} \boldsymbol {u}_{2}-2 \boldsymbol\lambda_{2} \boldsymbol {{u}_{1}^{\top}} \boldsymbol {u}_{2}+\boldsymbol\gamma \boldsymbol {{u}_{1}^{\top}} \boldsymbol {u}_{1}=0 \\ 2 \boldsymbol\lambda_{1} \boldsymbol {{u}_{1}^{\top}} \boldsymbol {u}_{2}-2 \boldsymbol\lambda_{2} \boldsymbol {{u}_{1}^{\top}} \boldsymbol {u}_{2}+\boldsymbol\gamma=0 \end{array} 2u1Σxu22λ2u1u2+γu1u1=02λ1u1u22λ2u1u2+γ=0

γ = 2 ( λ 2 − λ 1 ) u 1 ⊤ u 2 = 0 \boldsymbol\gamma=2\left(\boldsymbol\lambda_{2}-\boldsymbol\lambda_{1}\right) \boldsymbol {{u}_{1}^{\top}} \boldsymbol {u}_{2}=0 γ=2(λ2λ1)u1u2=0
则 (1) 式可简化为
Σ x u 2 = λ 2 u 2 {\Sigma}_ {\boldsymbol x} \boldsymbol {u}_{2}=\boldsymbol\lambda_{2} \boldsymbol {u}_{2} Σxu2=λ2u2
说明最优解 u 2 \boldsymbol{u}_{2} u2 为协方差矩阵 Σ x \Sigma_{\boldsymbol x} Σx 的第二大特征值 λ 2 \boldsymbol\lambda_2 λ2对应的特征向量,此时的极值
max ⁡ u 2 ⊤ Σ x u 2 = λ 2 u 2 ⊤ u 2 = λ 2 \max \boldsymbol {{u}_{2}^{\top}} {\Sigma}_{x} \boldsymbol u_2=\boldsymbol\lambda_{2} \boldsymbol {{u}_{2}^{\top}} \boldsymbol {u}_{2}=\boldsymbol\lambda_{2} maxu2Σxu2=λ2u2u2=λ2
对于其余的主元 y i y_i yi y i ( i ≠ j ) y_i(i\not=j) yi(i=j)需满足 y i = u i ⊤ x y_{i}=\boldsymbol{u}_i^{\top}\boldsymbol x yi=uix y j = u j ⊤ x y_{j}=\boldsymbol {u}_{j}^{\top}\boldsymbol x yj=ujx 不相关,即
Cov ⁡ ( y i , y j ) = E [ u i ⊤ x x ⊤ u j ] = u i ⊤   Σ x u j = 0 \operatorname{Cov}\left( y_{i}, y_{j}\right)=E\left[\boldsymbol {{u}_{i}^{\top}} \boldsymbol {x} \boldsymbol{x^{\top}}\boldsymbol {u}_{j}\right]=\boldsymbol {{u}_{i}^{\top}} \ {\Sigma}_x \boldsymbol {u}_{j}=0 Cov(yi,yj)=E[uixxuj]=ui Σxuj=0
假设 u 1 , u 2 , ⋯   , u i − 1 \boldsymbol {u}_{1}, \boldsymbol {u}_{2}, \cdots, \boldsymbol {u}_{i-1} u1,u2,,ui1为协方差矩阵 Σ x {\Sigma}_x Σx的最大 i − 1 i-1 i1个归一化的特征向量,而最优解 u i \boldsymbol {u}_i ui定义为第 i i i个主元 y i \boldsymbol y_i yi对应的向量(未必为特征向量)。由前过程可知
  Σ x u j = λ j u j j = 1 , 2 , ⋯   , i − 1 \ {\Sigma}_x \boldsymbol {u}_{j}=\boldsymbol\lambda_{j} \boldsymbol {u}_{j}\qquad j=1,2, \cdots, i-1  Σxuj=λjujj=1,2,,i1
且满足
u i ⊤   Σ x u j = λ j u i ⊤ u j = 0 j = 1 , 2 , ⋯   , i − 1 , λ j > 0 \boldsymbol {u_i^{\top}}\ {\Sigma}_{x} \boldsymbol u_j = \boldsymbol\lambda_j \boldsymbol {u_i^{\top}} \boldsymbol u_j = 0 \qquad j=1,2, \cdots, i-1,\qquad \lambda_j>0 ui Σxuj=λjuiuj=0j=1,2,,i1,λj>0

u i ⊤ u j = 0 j = 1 , 2 , ⋯   , i − 1 \boldsymbol{u_i^{\top}} \boldsymbol u_j=0 \qquad j=1,2, \cdots, i-1 uiuj=0j=1,2,,i1
最优化模型为
{ max ⁡ V a r [ y i ] = u i ⊤ Σ x u i  s.t.  u i ⊤ u i = 1 u i ⊤ u j = 0 j = 1 , 2 , ⋯   , i − 1 \left\{\begin{array}{l} \max Var[y_i] = \boldsymbol u_i^{\top} \Sigma_{\boldsymbol x} \boldsymbol u_i \\ \text { s.t. } \boldsymbol u_i^{\top} \boldsymbol u_i=1\\ \qquad \boldsymbol u_i^{\top} \boldsymbol u_j = 0 \qquad j = 1,2,\cdots,i-1 \end{array}\right. maxVar[yi]=uiΣxui s.t. uiui=1uiuj=0j=1,2,,i1
构造拉格朗日函数
L ( u i , λ i , γ j ) = u i ⊤ Σ x u i + λ i ( 1 − u i ⊤ u i ) + ∑ j = 1 i − 1 γ j u i ⊤ u j \mathcal{L}\left(\boldsymbol {u}_{i}, \boldsymbol\lambda_i,\boldsymbol\gamma_j \right)=\boldsymbol {{u}_{i}^{\top}} {\Sigma}_ x \boldsymbol {u}_{i}+\boldsymbol\lambda_{i}\left(1-\boldsymbol {{u}_{i}^{\top}} \boldsymbol {u}_{i}\right)+\sum_{j=1}^{i-1}\boldsymbol\gamma_j \boldsymbol {{u}_{i}^{\top}} \boldsymbol {u}_{j} L(ui,λi,γj)=uiΣxui+λi(1uiui)+j=1i1γjuiuj
置偏导数为0,得
∂ L ( u i , λ i , γ j ) ∂ u i = 2 Σ x u i − 2 λ i u i + ∑ j = 1 i − 1 γ j u j =   0 (2) \frac{\partial \mathcal{L}\left(\boldsymbol u_{i}, \boldsymbol\lambda_{i}, \boldsymbol\gamma_j\right)}{\partial \boldsymbol {u}_{i}}=2 {\Sigma}_{x} \boldsymbol {u}_{i}-2 \boldsymbol\lambda_{i} \boldsymbol {u}_{i}+\sum_{j=1}^{i-1}\boldsymbol\gamma_j \boldsymbol {u}_{j}=\ {0}\tag{2} uiL(ui,λi,γj)=2Σxui2λiui+j=1i1γjuj= 0(2)

∂ L ( u i , λ i , γ j ) ∂   λ i = 1 − u i ⊤ u i = 0 \frac{\partial \mathcal{L}\left(\boldsymbol u_{i}, \lambda_{i}, \boldsymbol\gamma_j\right)}{\partial \ {\lambda}_{i}}=1-\boldsymbol {u_i^{\top}} \boldsymbol u_i = {0}  λiL(ui,λi,γj)=1uiui=0

∂ L ( u i , λ i , γ j ) ∂   γ j = u i ⊤ u j = 0 j = 1 , 2 , ⋯   , i − 1 \frac{\partial \mathcal{L}\left(\boldsymbol u_{i}, \boldsymbol\lambda_{i}, \boldsymbol\gamma_j\right)}{\partial \ {\boldsymbol\gamma}_{j}}=\boldsymbol{u_i^{\top}} \boldsymbol u_j = 0 \qquad j = 1,2, \cdots ,i-1  γjL(ui,λi,γj)=uiuj=0j=1,2,,i1

(2)式两边同时左乘 u j ⊤ \boldsymbol{u_j^{\top}} uj,得
2 u j ⊤ Σ x u i − 2 λ i u j ⊤ u i + ∑ j = 1 i − 1 γ j u j ⊤ u j = 0 2 λ j u j ⊤ u i − 2 λ j u j ⊤ u i + ∑ j = 1 i − 1 γ j = 0 \boldsymbol{2u_j^{\top}} \Sigma_ x \boldsymbol u_i-2\lambda_i \boldsymbol {u_j^{\top}} \boldsymbol u_i + \sum_{j=1}^{i-1} \boldsymbol\gamma_j \boldsymbol u_j^{\top} \boldsymbol u_j=0 \\ 2\lambda_j \boldsymbol u_j^{\top} \boldsymbol u_i - 2\lambda_j \boldsymbol{u_j^{\top}} \boldsymbol u_i + \sum_{j=1}^{i-1} \boldsymbol\gamma_j = 0 2ujΣxui2λiujui+j=1i1γjujuj=02λjujui2λjujui+j=1i1γj=0

∑ j = 1 i − 1 γ j = 2 ( λ j − λ i ) u j ⊤ u i = 0 \sum_{j=1}^{i-1} \boldsymbol\gamma_j = 2 \left(\lambda_j - \lambda_i \right) \boldsymbol {u_j^{\top}} \boldsymbol u_i = 0 j=1i1γj=2(λjλi)ujui=0

由拉格朗日乘子 γ j \boldsymbol\gamma_j γj非负,则 γ j = 0 j = 1 , ⋯   , i − 1 \boldsymbol\gamma_j = 0 \quad j = 1,\cdots,i-1 γj=0j=1,,i1

(72) 式可简化为
Σ x u i = λ i u i \Sigma_ {\boldsymbol x} \boldsymbol u_i = \boldsymbol\lambda_i \boldsymbol u_i Σxui=λiui
即最优解 u i \boldsymbol u_i ui为协方差矩阵 Σ x \Sigma_{\boldsymbol x} Σx i i i 个特征值 λ i \lambda_i λi 对应的特征向量,此时的极值为
max      u i ⊤ Σ x u i = λ i u i ⊤ u i = λ i = V a r [ y i ] \text{max}\;\; \boldsymbol {u_i^{\top}} \boldsymbol\Sigma_x \boldsymbol u_i = \lambda_i \boldsymbol {u_i^{\top}} \boldsymbol u_i = \lambda_i = Var[y_i] maxuiΣxui=λiuiui=λi=Var[yi]
对于 Σ x \Sigma_{\boldsymbol x} Σx 有重复特征根的情形亦如此,略。

由上述定理可知,随机变量 x \boldsymbol x x d d d 个主元要优于一个主元,将所有的 d d d 个主元表示成一个向量
y = [ y 1 y 2 ⋮ y d ] = [ u 1 ⊤ x u 2 ⊤ x ⋮ u d ⊤ x ] = [ u 1 ⊤ u 2 ⊤ ⋮ u d ⊤ ] x = U ⊤ x \boldsymbol{y}=\begin{bmatrix} y_1\\ y_2 \\ \vdots \\ y_d \end{bmatrix} =\begin{bmatrix} \boldsymbol{u}_1^\top\boldsymbol{x}\\ \boldsymbol{u}_2^\top\boldsymbol{x}\\ \vdots \\ \boldsymbol{u}_d^\top\boldsymbol{x}\\ \end{bmatrix} =\begin{bmatrix} \boldsymbol{u}_1^\top\\ \boldsymbol{u}_2^\top\\ \vdots \\ \boldsymbol{u}_d^\top\\ \end{bmatrix}\boldsymbol{x} =U^\top\boldsymbol{x} y= y1y2yd = u1xu2xudx = u1u2ud x=Ux
其中 y ∈ R d , U ∈ R D × d \boldsymbol y \in R^d,U \in R^{D\times d} yRd,URD×d,此时 y \boldsymbol y y 的协方差矩阵可表示为
Σ y = E [ y y ⊤ ] = E [ U ⊤ x x ⊤ U ] = U ⊤ Σ x U \Sigma_{\boldsymbol y} = E[\boldsymbol y \boldsymbol y^{\top}] = E[U^{\top}\boldsymbol x\boldsymbol x^{\top}U] = U^{\top} \Sigma_{\boldsymbol x} U Σy=E[yy]=E[UxxU]=UΣxU
满足 U ⊤ U = I d U^{\top}U = I_d UU=Id

​ 由线性代数知识可知,对于任意可对角化的矩阵 A A A,则存在由 A A A的特征向量组成的列表示的矩阵 V V V,有 Λ = V − 1 A V \boldsymbol\Lambda = V^{-1}AV Λ=V1AV,而当矩阵 A A A是实对称半正定矩阵时,其特征值 λ i ≥ 0 \boldsymbol\lambda_i \ge 0 λi0,特征向量互相正交,且 V − 1 = V ⊤ V^{-1} = V^{\top} V1=V。因此,由于 Σ x \Sigma_x Σx是实对称正定矩阵,则方程 Σ y = U ⊤ Σ x U \Sigma_y = U^{\top} \Sigma_x U Σy=UΣxU U U U的列是协方差矩阵 Σ x \Sigma_x Σx d d d个特征向量组成。而 Σ y \Sigma_y Σy是一个对角矩阵,对角元为 Σ x \Sigma_x Σx d d d个特征值。因为我们的目标是极大化 y i \boldsymbol y_i yi的方差 V a r [ y i ] = λ i Var[\boldsymbol y_i] = \lambda_i Var[yi]=λi,所以我们的结论是协方差矩阵 Σ x \Sigma_x Σx的前 d d d个最大特征值对应的特征向量做为 U U U的列,即为目标的最优解,其极值则为 Σ y \Sigma_y Σy的对角元上 d d d个特征值。

3. 非零均值随机变量的主元

x ∈ R D \boldsymbol x \in R^D xRD 有非零均值,则 x \boldsymbol x x d d d 个不相关主元定义为
y i = u i ⊤ x + a i i = 1 , 2 , ⋯   , d y_i = \boldsymbol {u_i^{\top}} \boldsymbol x + a_i \qquad i = 1,2, \cdots ,d yi=uix+aii=1,2,,d
满足
u i ⊤ u i = 1 , V a r ( y 1 ) ≥ V a r ( y 2 ) ≥ ⋯ ≥ V a r ( y d ) > 0 \boldsymbol{u_i^{\top}} \boldsymbol u_i = 1,Var(\boldsymbol y_1) \ge Var(\boldsymbol y_2) \ge \cdots \ge Var(\boldsymbol y_d)>0 uiui=1Var(y1)Var(y2)Var(yd)>0
由于随机变量 y i y_i yi 满足
E [ y i ] = 0 cov ( y i , y j ) = 0 E [ y i ] = E [ u i ⊤ x + a i ] = u i ⊤ E [ x ] + a i = u i ⊤ μ x + a i = 0 i = 1 , 2 , ⋯   , d \mathbb E[y_i] = 0 \\ \text{cov}(y_i,y_j) = 0 \\ \mathbb E[y_i] = \mathbb E[\boldsymbol{u_i^{\top}} \boldsymbol x + a_i] = \boldsymbol{u_i^{\top}} \mathbb E[\boldsymbol x] + \boldsymbol a_i = \boldsymbol{u_i^{\top}} \boldsymbol\mu_ x + a_i = 0 \qquad i = 1,2, \cdots ,d E[yi]=0cov(yi,yj)=0E[yi]=E[uix+ai]=uiE[x]+ai=uiμx+ai=0i=1,2,,d
因此 a i = − u i ⊤ μ x a_i = - \boldsymbol{u_i^{\top}} \boldsymbol\mu_x ai=uiμx


V a r [ y 1 ] = V a r [ u 1 ⊤ x + a 1 ] = V a r [ u 1 ⊤ x − u 1 ⊤ μ x ] = V a r [ u 1 ⊤ ( x − μ x ) ] = E [ u 1 ⊤ ( x − μ x ) ( x − μ x ) ⊤ u 1 ] = u 1 ⊤ E [ ( x − μ x ) ( x − μ x ) ⊤ ] u 1 = u 1 ⊤ Σ x u 1 Var[y_1] = Var[\boldsymbol {u_1^{\top}} \boldsymbol x + a_1] = Var[\boldsymbol {u_1^{\top}} \boldsymbol x - \boldsymbol {u_1^{\top}} \boldsymbol\mu_x] =Var[\boldsymbol{u_1^{\top}} \left (\boldsymbol x - \boldsymbol\mu_x \right)] \\ = E[\boldsymbol{u_1^{\top}} (\boldsymbol x - \boldsymbol\mu_x) (\boldsymbol x - \boldsymbol\mu_x)^{\top} \boldsymbol u_1] = \boldsymbol {u_1^{\top}} E [(\boldsymbol x - \boldsymbol\mu_x) (\boldsymbol x - \boldsymbol\mu_x)^{\top} ] \boldsymbol u_1 = \boldsymbol{u_1^{\top}} \Sigma_{\boldsymbol x} \boldsymbol u_1 Var[y1]=Var[u1x+a1]=Var[u1xu1μx]=Var[u1(xμx)]=E[u1(xμx)(xμx)u1]=u1E[(xμx)(xμx)]u1=u1Σxu1
则最优解 u 1 \boldsymbol u_1 u1 的计算可描述为 max  V a r [ y 1 ] \text{max} \ Var[y_1] max Var[y1]


max ⁡ u 1 u 1 ⊤ Σ x u 1 u 1 ⊤ u 1 = 1 \max_{\boldsymbol u_1} \boldsymbol {u_1^{\top}} \Sigma_x \boldsymbol u_1 \\ \boldsymbol{u_1^{\top}} \boldsymbol u_1 = 1 u1maxu1Σxu1u1u1=1
构造拉格朗日函数
L   ( u 1 ) = u 1 ⊤ Σ x u 1 + λ i ( 1 − u 1 ⊤ u 1 ) \mathcal{L}\ (\boldsymbol{u}_{1})=\boldsymbol {{u}_{1}^{\top}} {\Sigma}_ {\boldsymbol x} \boldsymbol {u}_{1}+\boldsymbol\lambda_{i}\left(1-\boldsymbol {{u}_{1}^{\top}} \boldsymbol {u}_{1}\right) L (u1)=u1Σxu1+λi(1u1u1)
置拉格朗日函数偏导数为0
∂ L ( u 1 ) ∂ u 1 = 2 Σ x u 1 − 2 λ 1 u 1 = 0 \frac{\partial \mathcal{L} (\boldsymbol u_{1})}{\partial \boldsymbol {u}_{1}}=2 {\Sigma}_{x} \boldsymbol {u}_{1}-2 \boldsymbol\lambda_{1} \boldsymbol {u}_{1} = 0 u1L(u1)=2Σxu12λ1u1=0

Σ x u 1 = λ 1 u 1 \Sigma_ x \boldsymbol u_1 = \lambda_1 \boldsymbol u_1 Σxu1=λ1u1
由此可知 λ 1 \lambda_1 λ1 u 1 \boldsymbol u_1 u1分别为协方差矩阵 Σ x = ( x − μ ) ( x − μ ) ⊤ \Sigma_{\boldsymbol x} = (\boldsymbol x - \boldsymbol\mu ) (\boldsymbol x - \boldsymbol\mu )^{\top} Σx=(xμ)(xμ) 的最大特征值与其对应的特征向量。对于地 i i i个最优解 u i \boldsymbol u_i ui的解与前面定理的证明完全一致。

4. 零均值随机变量的样本主元

在实际应用中,我们并不知道随机变量的协方差矩阵,只能由样本点进行估计,对于独立同分布且期望为0的样本 { x i } i = 1 N \left \{ \boldsymbol x_i \right \} _{i=1}^N {xi}i=1N,构造样本矩阵 X = [ x 1 , x 2 , ⋯   , x N ] \boldsymbol X=[\boldsymbol x_1,\boldsymbol x_2, \cdots ,\boldsymbol x_N] X=[x1,x2,,xN],其样本协方差为
Σ N = 1 N ∑ i = 1 N x i x i ⊤ = 1 N X X ⊤ \Sigma_N = \frac{1}{N} \sum_{i=1}^N \boldsymbol x_i \boldsymbol{x_i^{\top}} = \frac{1}{N} \boldsymbol X \boldsymbol{X^{\top}} ΣN=N1i=1Nxixi=N1XX
d d d个样本主元为
y i = u ^ i ⊤ x i = 1 , 2 , ⋯   , d y_i = \boldsymbol{\hat{u}_i^{\top}} \boldsymbol x \qquad i = 1,2, \cdots ,d yi=u^ixi=1,2,,d
其中 { u i } i = 1 d \left \{ \boldsymbol u_i \right \} _{i=1}^d {ui}i=1d Σ ^ N = 1 N X X ⊤ \hat\Sigma_N = \frac{1}{N} \boldsymbol X \boldsymbol{X^{\top}} Σ^N=N1XX X X ⊤ \boldsymbol X \boldsymbol{ X^{\top} } XX的前 d d d个特征向量。

由于 X X ⊤ ∈ R D × D \boldsymbol X \boldsymbol{X^{\top}} \in \boldsymbol R^{D\times D} XXRD×D是一个非常大的矩阵,所以我们可以利用 X \boldsymbol X X的奇异值获得最优解,即
X = U x Σ x V x ⊤ X = U_x \Sigma_x V_x^{\top} X=UxΣxVx

y = [ y 1 y 2 ⋮ y d ] = [ u 1 ⊤ x u 2 ⊤ x ⋮ u d ⊤ x ] = [ u 1 ⊤ u 2 ⊤ ⋮ u d ⊤ ] x = U ⊤ x \boldsymbol{y}=\begin{bmatrix} y_1\\ y_2 \\ \vdots \\ y_d \end{bmatrix} =\begin{bmatrix} \boldsymbol{u}_1^\top\boldsymbol{x}\\ \boldsymbol{u}_2^\top\boldsymbol{x}\\ \vdots \\ \boldsymbol{u}_d^\top\boldsymbol{x}\\ \end{bmatrix} =\begin{bmatrix} \boldsymbol{u}_1^\top\\ \boldsymbol{u}_2^\top\\ \vdots \\ \boldsymbol{u}_d^\top\\ \end{bmatrix}\boldsymbol{x} =U^\top\boldsymbol{x} y= y1y2yd = u1xu2xudx = u1u2ud x=Ux

5. PCA 降维案例

We will first demonstrate PCA on a 13-dimensional dataset, by loading wine dataset from sklearn, see info here.

This dataset contains chemical analysis of N=178 different wines by three different cultivators.


The analysis contains the folowing measurements:

  • Alcohol

  • Malic acid

  • Ash

  • Alcalinity of ash

  • Magnesium

  • Total phenols

  • Flavanoids

  • Nonflavanoid phenols

  • Proanthocyanins

  • Colour intensity

  • Hue

  • OD280/OD315 of diluted wines

  • Proline

So overall, we have N=178 data points, lying in R D \mathbb{R}^{D} RD, with D=13. We stack all points together into a matrix X_wine ∈ R D × N \in \mathbb{R}^{D\times N} RD×N.

We have labels 0,1, or 2 for each wine (clutivator). The true labels are given in L_wine.

We want to see whether PCA can be helpful in the unsupervised task of clustering the 178 wines.

We start by loading the dataset, and printing the first 5 data points, just to get a general impression.

# 主成分分析算法
# 输入:
#      X: 数据矩阵大小为 n*D,每一行为 D 维向量(样本点)
# 参数:
#      dims_remain: 降维后保留的维数
#      with_std: 是否进行标准化操作,默认为进行标准化
# 返回:
#      X_reduction: 降维后的数据,数据矩阵大小为 n*d,每一行为 d 维向量(样本点)

from numpy.linalg import svd
from sklearn.preprocessing import StandardScaler

class PCA_PC:
    def __init__(self,dims_remain=2,with_std=True):
        self.dims_remain = dims_remain
        self.with_std = with_std
        
    def fit_transform(self,X):
        if self.with_std:
            ss = StandardScaler() # 此对象针对的是模式矩阵
            ss.fit(X)
            XS = ss.transform(X)
            U,_,_ = svd(XS.T) # 特征值分解函数的输入是模式矩阵的转置,输出 U 的每一列为新坐标轴
            X_reduction = XS@U[:,0:self.dims_remain]
        else:
            U,_,_ = svd(X.T)
            X_reduction = X@U[:,0:self.dims_remain]
        
        return X_reduction

调用函数

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_wine

if __name__ == '__main__':     
    X_wine, L_wine = load_wine(return_X_y=True)
    np.set_printoptions(suppress=True)
    
    model1 = PCA_PC(dims_remain=2,with_std=False)
    X_reduct1 = model1.fit_transform(X_wine)
    plt.figure(figsize=(15,6))
    plt.subplot(121),plt.scatter(X_reduct1[:,0], X_reduct1[:,1], c=L_wine)
    plt.title('Unstandard Preprocessing')
    
    model2 = PCA_PC(dims_remain=2,with_std=True)
    X_reduct2 = model2.fit_transform(X_wine)
    plt.figure(figsize=(15,6))
    plt.subplot(121),plt.scatter(X_reduct2[:,0], X_reduct2[:,1], c=L_wine)
    plt.title('Standard Preprocessing')
    
    plt.show()

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

搞定常见八大排序

文章目录 注意事项插入排序插入排序希尔排序 分组预排序选择排序堆排序直接选择排序(最拉胯的排序) 交换排序冒泡排序快速排序1. hoare版本如何解决快排缺陷?2.挖坑法版本3.双指针法版本(建议)快排算法优化实现非递归快排 归并排序归并排序 非…

Rainbond 结合 Jpom 实现云原生 本地一体化项目管理

Jpom 是一个简而轻的低侵入式在线构建、自动部署、日常运维、项目运维监控软件。提供了: 节点管理:集群节点,统一管理多节点的项目,实现快速一键分发项目文件项目管理:创建、启动、停止、实时查看项目控制台日志&…

CentOS系统设置中文输入法,并切换输入法

1.点击Application—>System Tools—>Settings,选择Region&Language 2.在Input Sources中,选择左下角的“”,找到Chinese(Intelligent Pinyin),选中后点击右上角的“add”即可 3.选择好后,就可以切换中英…

可口可乐如何管理其全球供应链

目录 (一)可口可乐供应链管理的核心组成部分 (二)可口可乐管理全球供应链的挑战 (三)可口可乐利用技术简化其供应链 转载自供应链星球 可口可乐在200多个国家和地区拥有约225家装瓶合作伙伴,并…

【李沐—AutoGluon背后的技术】

1.资料来源 AutoGluon背后的技术_哔哩哔哩_bilibili 也是一种Automl框架【在尽量不需要人的帮助下,对输入进行特征提取,选取适合的机器学习模型对它进行训练】。大部分基于超参数搜索技术【从数十或者数百个参数中选取一个合适的参数,媲美人…

vue插槽的使用

文章目录 前言默认插槽具名插槽作用域插槽 前言 插槽总共分为3类&#xff1a;默认插槽&#xff0c;具名插槽&#xff0c;作用域插槽 默认插槽 默认插槽只需要在子组件的新增一个slot标签&#xff0c;父组件的子组件标签的内容就是要插入的内容 父组件 <template v-bind…

mysql “order by”是怎么工作的?

开发应用的时候&#xff0c;一定会经常碰到需要根据指定的字段排序来显示结果的需求。还是以我们 前面举例用过的市民表为例&#xff0c;假设你要查询城市是“杭州”的所有人名字&#xff0c;并且按照姓名排序返回 前1000个人的姓名、年龄。 假设这个表的部分定义是这样的&…

【linux】基于单例模式实现线程池

文章目录 一、线程池1.1 池化的概念1.2 线程池的实现1.3 线程池的使用场景 二、单例模式2.1 单例模式概念2.2 单例模式的线程池2.3 防过度优化 三、源码 一、线程池 1.1 池化的概念 当我们处理任务的时候&#xff0c;一般就是来一个任务我们就创建一个线程来处理这个任务。这…

类实例化对象的存储与内存对齐,this指针与调用成员函数传参的本原面目(两种调用方式)

类的实例化对象的内存存储方式与内存对齐 对于类当中定义的成员函数&#xff0c;是放在公共代码区的&#xff0c;在公共代码区有类成员函数表。对于不同的实例化对象而言&#xff0c;它里面的各个成员变量都是不一样的&#xff0c;但是如果他们分别调用相同名字的成员函数&…

cmd切换壁纸 适用windows10

文章目录 代码代码讲解参考文章菜鸟的目录结构注意 昨天菜鸟上班但是真的没活干&#xff0c;闲着无聊&#xff0c;突然发现自己壁纸好久都是一个&#xff0c;看着真的烦了&#xff0c;但是下载一个壁纸软件又感觉实际用处不大还占着内存&#xff0c;所以菜鸟就想&#xff0c;要…

Java Type接口出现的原因以及它和泛型的关系

Java泛型很多人都用过&#xff0c;但是对于其中的原理可能很多人可能都不太清楚。 首先给出一个结论&#xff1a;Java的泛型是伪泛型&#xff0c;因为JVM在编译以后会将所有泛型参数擦除掉&#xff0c;这个就叫类型擦除。 下面用一段代码来证明&#xff0c;毕竟千言万语BB不如…

【软考数据库】第三章 数据结构与算法

目录 3.1 数据结构 3.1.1 线性结构 3.1.2 数组 3.1.3 矩阵 3.1.4 树与二叉树 3.1.5 图 3.2 查找 3.2.1 顺序查找 3.2.2 折半查找 3.2.3 哈希表 3.3 排序 3.3.1 直接插入排序 3.3.2 希尔排序 …

Win10任务栏卡死怎么办?这3个方法快收藏!

案例&#xff1a;win10任务栏卡死 【姐妹们&#xff0c;我的win10任务栏一直卡着&#xff0c;我完全没法使用计算机了&#xff0c;遇到这种情况&#xff0c;我应该怎么做呢&#xff1f;求大家给我支支招&#xff01;感谢感谢&#xff01;】 我们使用电脑的过程中&#xff0c;…

MyBatis的添加和简单使用

什么是MyBatis mybatis是一个方便我们更简单的操作数据库的框架&#xff0c;让我们不用再使用JDBC操作数据库。 MyBatis的创建 老项目添加mybatis&#xff0c;首先要安装好editstarters插件&#xff0c;然后在pom.xml中右键generate选择edit插件&#xff0c;注意不仅要添加m…

多维时序 | MATLAB实现BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆网络数据多变量时间序列预测

多维时序 | MATLAB实现BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆网络数据多变量时间序列预测 目录 多维时序 | MATLAB实现BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆网络数据多变量时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 基于贝叶斯优化卷…

C/C++|物联网开发入门+项目实战|宏定义|数据声明|位操作|类型修饰符|访问固定内存位置|嵌入式C语言高级|常见面试题目讲解-学习笔记(13)

文章目录 常见面试题目讲解宏定义数据声明类型修饰符的使用总结位操作访问固定内存位置 参考&#xff1a; 麦子学院-嵌入式C语言高级-C语言函数的使用-常见面试题目讲解 参考&#xff1a; 嵌入式程序员应该知道的0x10个基本问题 常见面试题目讲解 宏定义 1 .用预处理指令#d…

ERD Online 4.1.0对接ChatGPT,实现AI建模、SQL自由

ERD Online 是全球第一个开源、免费在线数据建模、元数据管理平台。提供简单易用的元数据设计、关系图设计、SQL查询等功能&#xff0c;辅以版本、导入、导出、数据源、SQL解析、审计、团队协作等功能、方便我们快速、安全的管理数据库中的元数据。 4.1.0 ❝ :memo: fix(erd): …

CARIS11.3使用一段时间后的经验和总结

虽然CARIS11.4存在一些小bug&#xff0c;但CARIS11.3使用没有什么问题&#xff0c;相对于CARIS9而言&#xff0c;在导入数据和程序界面有些改进。用过CARIS9的同学都知道其建立项目和导入数据的步骤比较繁琐。而CARIS11.3导入数据的过程比较简洁&#xff0c;基本步骤如下&#…

把阿里大鸟花3个月时间整理的软件测试面经偷偷给室友,差点被他开除了···

写在前面 “这份软件测试面经看起来不错&#xff0c;等会一起发给他吧”&#xff0c;我看着面前的面试笔记自言自语道。 就在这时&#xff0c;背后传来了leder“阴森森”的声音&#xff1a;“不错吧&#xff0c;我可是足足花了三个月整理的” 始末 刚入职阿里的我收到了大学…

牛客网Verilog刷题——VL2

牛客网Verilog刷题——VL2 题目答案 题目 要求用verilog实现两个串联的异步复位的T触发器的逻辑&#xff0c;如下图所示。   模块的输入输出信号如下表&#xff0c;需要注意的是&#xff1a;这里rst是低电平复位&#xff0c;且采用异步复位的方式复位。 信号类型输入/输出c…