线性子空间学习


线性子空间学习是机器学习和统计学中的一个重要分支,主要关注 如何在高维数据中找到一个合适的低维线性子空间,使得数据在这个子空间中的表示能够更好地反映其内在结构,·同时降低处理的复杂度·。

线性子空间简介

线性子空间,或称为向量子空间,在线性代数中是指一个向量空间V的一个非空子集W,它满足以下条件:

  1. 加法封闭:对于W中的任意两个向量u和v,它们的和u + v也在W中。
  2. 标量乘封闭:对于W中的任意向量u和域K中的任意标量α,标量乘αu也在W中。
  3. 含单位元:如果V是有单位元(零向量)的,则W也必须包含这个单位元。

主要线性子空间学习方法

1. 主成分分析(PCA)

PCA是一种常用的数据降维技术,它寻找数据方差最大的方向作为新的坐标轴。设原始数据矩阵 X(每行为一个样本),其协方差矩阵为 C = 1 n − 1 X T X C = \frac{1}{n-1}X^TX C=n11XTX,其中(n)是样本数量。PCA的目标是最小化数据投影后的方差,从而找到正交的主成分。主要步骤和公式包括:

  • 计算协方差矩阵 C
  • 求解 C 的特征值 λ i 和对应的特征向量 v i 。 求解C的特征值\lambda_i和对应的特征向量v_i。 求解C的特征值λi和对应的特征向量vi
  • 按特征值大小排序,选择前(k)个最大的特征值对应的特征向量作为新的坐标轴。
  • 将原始数据转换到这(k)个特征向量定义的新空间中,转换公式为(Z = XV),其中(V)是前(k)个特征向量组成的矩阵。

例子

主成分分析(PCA)的具体计算过程。假设我们有一个简单的数据集,包含两个特征 x 1 和 x 2 x_1 和 x_2 x1x2
共有4个观测样本:

编号 x 1 x_1 x1 x 2 x_2 x2
123
231
342
414

首先,我们需要执行以下步骤来完成PCA的计算:

步骤 1: 数据中心化

数据去中心化,通常称为数据中心化或数据标准化,是一种数据预处理方法,目的是消除数据集中的均值效应,使得处理后的数据围绕原点分布,即使数据集的每个特征均值为0。这种方法在统计分析和机器学习中尤为常见,因为它可以帮助减少特征之间的偏斜,使得模型对所有特征给予相等的重视。
数据去中心化的公式简单来说是:
x ′ = x − μ x' = x - \mu x=xμ

其中:

  • x x x 表示原始数据值,
  • x ′ x' x 表示去中心化(中心化后)的数据值,
  • μ \mu μ 表示原始数据集的平均值。
    计算平均值:
  • x ˉ 1 = 2 + 3 + 4 + 1 4 = 2.5 \bar{x}_1 = \frac{2+3+4+1}{4} = 2.5 xˉ1=42+3+4+1=2.5
  • x ˉ 2 = 3 + 1 + 2 + 4 4 = 2.5 \bar{x}_2 = \frac{3+1+2+4}{4} = 2.5 xˉ2=43+1+2+4=2.5

数据中心化后数据:

编号 x 1 ′ x_1' x1 x 2 ′ x_2' x2
1-0.50.5
20.5-1.5
31.5-0.5
4-1.51.5
步骤 2: 计算协方差矩阵

使用数据中心化后的数据计算协方差矩阵 (C),以衡量两个特征之间的相关性。
C = 1 n − 1 X T X C = \frac{1}{n-1}X^TX C=n11XTX
C = [ σ 11 σ 12 σ 21 σ 22 ] C = \begin{bmatrix} \sigma_{11} & \sigma_{12} \\ \sigma_{21} & \sigma_{22} \end{bmatrix} C=[σ11σ21σ12σ22]
其中,

  • σ 11 = ( − 0.5 ) 2 + ( 0.5 ) 2 + ( 1.5 ) 2 + ( − 1.5 ) 2 4 = 1.25 \sigma_{11} = \frac{(-0.5)^2 + (0.5)^2 + (1.5)^2 + (-1.5)^2}{4} = 1.25 σ11=4(0.5)2+(0.5)2+(1.5)2+(1.5)2=1.25
  • σ 22 = σ 11 = 1.25 \sigma_{22} = \sigma_{11} = 1.25 σ22=σ11=1.25 (因为对称)
  • σ 12 = σ 21 = ( − 0.5 ) ∗ 0.5 + 0.5 ∗ ( − 1.5 ) + 1.5 ∗ ( − 0.5 ) + ( − 1.5 ) ∗ 1.5 4 = − 0.75 \sigma_{12} = \sigma_{21} = \frac{(-0.5)*0.5 + 0.5*(-1.5) + 1.5*(-0.5) + (-1.5)*1.5}{4} = -0.75 σ12=σ21=4(0.5)0.5+0.5(1.5)+1.5(0.5)+(1.5)1.5=0.75

同等计算:
C = 1 n X T X = 1 4 [ − 0.5 0.5 1.5 − 1.5 0.5 − 1.5 − 0.5 1.5 ] [ − 0.5 0.5 0.5 − 1.5 1.5 − 0.5 − 1.5 1.5 ] C = \frac{1}{n}X^TX = \frac{1}{4}\begin{bmatrix} -0.5& 0.5& 1.5& -1.5 \\ 0.5& -1.5& -0.5& 1.5 \end{bmatrix}\begin{bmatrix} -0.5& 0.5\\ 0.5& -1.5\\ 1.5& -0.5\\ -1.5& 1.5 \end{bmatrix} C=n1XTX=41[0.50.50.51.51.50.51.51.5] 0.50.51.51.50.51.50.51.5
除以 ( n-1 ) 是使用无偏估计的方式计算样本协方差,如果是在总体数据上计算则会除以n。

所以协方差矩阵 (C) 为:
C = [ 1.25 − 0.75 − 0.75 1.25 ] C = \begin{bmatrix} 1.25 & -0.75 \\ -0.75 & 1.25 \end{bmatrix} C=[1.250.750.751.25]

步骤 3: 计算特征值和特征向量

接下来,我们需要计算协方差矩阵 (C) 的特征值和对应的特征向量
假设计算结果为:

  • 第一个特征值 λ 1 = 3 \lambda_1 = 3 λ1=3 对应特征向量 v 1 = [ 1 / 2 , 1 / 2 ] v_1 = [1/\sqrt{2}, 1/\sqrt{2}] v1=[1/2 ,1/2 ](比例系数省略)
  • 第二个特征值 λ 2 = − 0.25 \lambda_2 = -0.25 λ2=0.25 对应特征向量 v 2 = [ − 1 / 2 , 1 / 2 ] v_2 = [-1/\sqrt{2}, 1/\sqrt{2}] v2=[1/2 ,1/2 ](比例系数省略)
步骤 4: 选择主成分

通常,我们会根据特征值的大小来选择主成分。在本例中, λ 1 \lambda_1 λ1 远大于 λ 2 \lambda_2 λ2,因此我们选取第一个特征向量 v 1 v_1 v1 所代表的方向作为第一主成分。

步骤 5: 数据转换

最后,我们将原始数据转换到这个新的坐标系中。对于每个样本 x ′ = [ x 1 ′ , x 2 ′ ] T x' = [x_1', x_2']^T x=[x1,x2]T,其在第一主成分上的投影为 x ′ T v 1 x'^T v_1 xTv1

例如,取第一个样本 x ′ = [ − 0.5 , 0.5 ] T x' = [-0.5, 0.5]^T x=[0.5,0.5]T,其转换后的第一主成分得分 z 1 = x ′ T v 1 = ( − 0.5 ∗ 1 / 2 ) + ( 0.5 ∗ 1 / 2 ) = 0 z_1 = x'^T v_1 = (-0.5*1/\sqrt{2}) + (0.5*1/\sqrt{2}) = 0 z1=xTv1=(0.51/2 )+(0.51/2 )=0

通过上述步骤,就完成了PCA的基本计算过程,得到了数据在第一主成分上的投影。实践中,如果需要降低维度,通常只保留那些具有较大特征值对应的主成分,并据此转换数据。

2. 线性判别分析(LDA)

LDA是一种监督学习的降维方法,旨在找到最大化类间距离并最小化类内距离的投影方向。

假设数据分为(C)个类别,每个类别的样本中心 μ c \mu_c μc总体样本中心 μ \mu μ,类内散度矩阵 S W S_W SW和类间散度矩阵 S B S_B SB的定义如下:

  • 类内散度矩阵: S W = ∑ i = 1 c ∑ x j ∈ C i ( x j − μ i ) ( x j − μ i ) T S_W = \sum_{i=1}^{c} \sum_{x_j \in C_i} (x_j - \mu_i)(x_j - \mu_i)^T SW=i=1cxjCi(xjμi)(xjμi)T
    其中,
    ( c ) 表示类别总数。
    C i C_i Ci 表示第 ( i ) 个类别。
    x j x_j xj 表示第 ( j ) 个样本点,该样本属于类别 C i C_i Ci
    μ i \mu_i μi 是第 ( i ) 个类别的样本均值向量。
    ( x j − μ i ) (x_j - \mu_i) (xjμi) 是第 ( j ) 个样本减去其类别均值后的向量。
    ( x j − μ i ) ( x j − μ i ) T (x_j - \mu_i)(x_j - \mu_i)^T (xjμi)(xjμi)T 是上述向量与其转置的外积,结果是一个对称矩阵,反映了该样本点相对于类别中心的偏差方向和幅度。
    对所有类别重复这一过程并将结果相加,即得到总的类内散度矩阵 S W S_W SW
    类内散度矩阵体现了各个类别的数据在各自类内的分布情况,LDA通过最大化类间散度同时最小化类内散度来寻找最佳分类边界。

  • 类间散度矩阵: S B = ∑ c = 1 C ( μ c − μ ) ( μ c − μ ) T S_B = \sum_{c=1}^{C} (\mu_c - \mu)(\mu_c - \mu)^T SB=c=1C(μcμ)(μcμ)T

LDA的目标是找到投影矩阵(W),最大化类间散度与类内散度的比值,即 J ( W ) = W T S B W W T S W W J(W) = \frac{W^TS_BW}{W^TS_WW} J(W)=WTSWWWTSBW。通常,前(k)个最大的特征向量对应于 S W − 1 S B S_W^{-1}S_B SW1SB的特征值,被用作降维的基。

例子

线性判别分析(LDA)是一种用于分类问题有监督降维技术,其目的是找到能够最大化类别间差异同时最小化类别内差异的投影方向。下面,将以一个简化示例来说明LDA的计算过程。

假设我们有两类二维数据,用于区分苹果和橙子,每类各有两个样本:

样本编号类别 x 1 x_1 x1 x 2 x_2 x2
1A (苹果)23
2A (苹果)32
3B (橙子)14
4B (橙子)41
步骤 1: 计算类内散度矩阵(Within-Class Scatter Matrix, S W S_W SW

首先,计算总体和每种类别的均值向量(Mean Vector):

  • 总体均值向量 μ = ( ∑ i = 1 n x i 1 N , ∑ i = 1 n x i 2 N ) = ( 2 + 3 + 1 + 4 4 = 10 4 = 2.5 , 3 + 2 + 4 + 1 4 = 10 4 = 2.5 ) = ( 2.5 , 2.5 ) \mu = \left( \frac{\sum_{i=1}^{n} x_{i1}}{N}, \frac{\sum_{i=1}^{n} x_{i2}}{N} \right) =\left ( \frac{2+3+1+4}{4} = \frac{10}{4} = 2.5,\frac{3+2+4+1}{4} = \frac{10}{4} = 2.5\right ) = \left ( 2.5,2.5\right ) μ=(Ni=1nxi1,Ni=1nxi2)=(42+3+1+4=410=2.5,43+2+4+1=410=2.5)=(2.5,2.5)
  • 类别A的均值向量 μ A = ( 2 + 3 , 3 + 2 ) 2 = ( 2.5 , 2.5 ) \mu_A = \frac{(2+3, 3+2)}{2} = (2.5, 2.5) μA=2(2+3,3+2)=(2.5,2.5)
  • 类别B的均值向量 μ B = ( 1 + 4 , 4 + 1 ) 2 = ( 2.5 , 2.5 ) \mu_B = \frac{(1+4, 4+1)}{2} = (2.5, 2.5) μB=2(1+4,4+1)=(2.5,2.5)

然后,计算类内散度矩阵 S W S_W SW。由于每类只有两个样本,类内散度矩阵简化为各个样本与其类均值向量差的外积之和:

S W = S A + S B S_W = S_A + S_B SW=SA+SB

类别A的贡献
其中,

  • 样本1与均值的差: ( − 0.5 , 0.5 ) (-0.5, 0.5) (0.5,0.5)
  • 样本2与均值的差: ( 0.5 , − 0.5 ) (0.5, -0.5) (0.5,0.5)

简化计算后得第A类 类内散度矩阵
( − 0.5 , 0.5 ) ⋅ ( − 0.5 , 0.5 ) T + ( 0.5 , − 0.5 ) ⋅ ( 0.5 , − 0.5 ) T = ( 0.25 − 0.25 − 0.25 0.25 ) + ( 0.25 − 0.25 − 0.25 0.25 ) = 2 × ( 0.25 − 0.25 − 0.25 0.25 ) = ( 0.5 − 0.5 − 0.5 0.5 ) (-0.5, 0.5) \cdot (-0.5, 0.5)^T + (0.5, -0.5) \cdot (0.5, -0.5)^T \\ = \begin{pmatrix} 0.25 & -0.25 \\ -0.25 & 0.25 \end{pmatrix} + \begin{pmatrix} 0.25 & -0.25 \\ -0.25 & 0.25 \end{pmatrix} \\ = 2 \times \begin{pmatrix} 0.25 & -0.25 \\ -0.25 & 0.25 \end{pmatrix} = \begin{pmatrix} 0.5 & -0.5 \\ -0.5 & 0.5 \end{pmatrix} (0.5,0.5)(0.5,0.5)T+(0.5,0.5)(0.5,0.5)T=(0.250.250.250.25)+(0.250.250.250.25)=2×(0.250.250.250.25)=(0.50.50.50.5)

类别B的贡献
其中,

  • 样本3与均值的差: ( − 1.5 , 2.5 ) (-1.5, 2.5) (1.5,2.5)
  • 样本4与均值的差: ( 1.5 , − 2.5 ) (1.5, -2.5) (1.5,2.5)
    简化计算后得第B类 类内散度矩阵
    ( − 1.5 , 2.5 ) ⋅ ( − 1.5 , 2.5 ) T + ( 1.5 , − 2.5 ) ⋅ ( 1.5 , − 2.5 ) T = ( 2.25 − 3.75 − 3.75 6.25 ) + ( 2.25 3.75 3.75 6.25 ) = 2 × ( 2.25 0 0 6.25 ) = ( 4.5 0 0 12.5 ) (-1.5, 2.5) \cdot (-1.5, 2.5)^T + (1.5, -2.5) \cdot (1.5, -2.5)^T \\ = \begin{pmatrix} 2.25 & -3.75 \\ -3.75 & 6.25 \end{pmatrix} + \begin{pmatrix} 2.25 & 3.75 \\ 3.75 & 6.25 \end{pmatrix} \\ = 2 \times \begin{pmatrix} 2.25 & 0 \\ 0 & 6.25 \end{pmatrix} = \begin{pmatrix} 4.5 & 0 \\ 0 & 12.5 \end{pmatrix} (1.5,2.5)(1.5,2.5)T+(1.5,2.5)(1.5,2.5)T=(2.253.753.756.25)+(2.253.753.756.25)=2×(2.25006.25)=(4.50012.5)

合并类内散度矩阵:
S W = S A + S B = ( 0.5 − 0.5 − 0.5 0.5 ) + ( 4.5 0 0 12.5 ) = ( 5 − 0.5 − 0.5 13 ) S_W = S_A + S_B = \begin{pmatrix} 0.5 & -0.5 \\ -0.5 & 0.5 \end{pmatrix}+\begin{pmatrix} 4.5 & 0 \\ 0 & 12.5 \end{pmatrix} = \begin{pmatrix} 5& -0.5 \\ -0.5 & 13 \end{pmatrix} SW=SA+SB=(0.50.50.50.5)+(4.50012.5)=(50.50.513)

步骤 2: 计算类间散度矩阵(Between-Class Scatter Matrix, S B S_B SB

类间散度矩阵基于各类别均值向量的差异:

S B = ∑ c = 1 C ( μ c − μ ) ( μ c − μ ) T S_B = \sum_{c=1}^{C} (\mu_c - \mu)(\mu_c - \mu)^T SB=c=1C(μcμ)(μcμ)T

其中,(N) 是总样本数(此处为4), μ T \mu_T μT 是所有样本的总均值(此处也是 (2.5, 2.5))。但由于两类别均值相同, μ A = μ B = μ T \mu_A = \mu_B = \mu_T μA=μB=μT,故 S B S_B SB 为零矩阵,这意味着在这个特定的简化例子中,LDA无法找到有效的投影方向,因为两类别的数据完全重叠,没有类间差异。

在实际情况中,如果类别的均值不同,会计算出非零的 S B S_B SB,然后求解 S W − 1 S B S_W^{-1}S_B SW1SB特征值和特征向量,选择最大的特征值对应的特征向量作为分类的最优方向。

注意

这个例子极端简化,实际上LDA在处理类别分布有显著差异的数据时能发挥很好的效果。在实际应用中,数据点通常不会如此巧合地导致类别均值相等,从而能够有效地计算 S B S_B SB 并找到分类超平面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不易撞的网名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值