Σ = [ Var ( x 1 ) Cov ( x 2 , x 1 ) … Cov ( x n , x 1 ) Cov ( x 1 , x 2 ) Var ( x 2 ) … Cov ( x n , x 2 ) ⋮ ⋮ ⋱ ⋮ Cov ( x 1 , x n ) Cov ( x 2 , x n ) … Var ( x n ) ] \Sigma = \begin{bmatrix} \text{Var}(x_1) & \text{Cov}(x_2, x_1) & \dots & \text{Cov}(x_n, x_1) \\ \text{Cov}(x_1, x_2) & \text{Var}(x_2) & \dots & \text{Cov}(x_n, x_2) \\ \vdots & \vdots & \ddots & \vdots \\ \text{Cov}(x_1, x_n) & \text{Cov}(x_2, x_n) & \dots & \text{Var}(x_n) \end{bmatrix} Σ= Var(x1)Cov(x1,x2)⋮Cov(x1,xn)Cov(x2,x1)Var(x2)⋮Cov(x2,xn)……⋱…Cov(xn,x1)Cov(xn,x2)⋮Var(xn)
每个元素有不同的含义:
- 对角线上的元素 Var ( x i ) \text{Var}(x_i) Var(xi) 表示变量 x i x_i xi 的方差。
- 对角线以外的元素 Cov ( x i , x j ) \text{Cov}(x_i, x_j) Cov(xi,xj) 表示变量 x i x_i xi 和 x j x_j xj 之间的协方差。
LDA 与 QDA 矩阵计算中的区别
1. LDA(线性判别分析)中的协方差矩阵
在 LDA(线性判别分析) 中,虽然协方差矩阵假设所有类别是相同的,但这并不意味着我们可以随便选择一个类别来计算协方差矩阵。LDA 的协方差矩阵是基于所有数据的整体协方差来计算的,而不是单独基于某个类别的数据。具体来说,LDA 要使用所有类别的样本数据来估计一个共享的协方差矩阵,从而反映数据的整体结构。
LDA 中协方差矩阵的计算方法
在 LDA 中,协方差矩阵是基于所有类别的样本点计算出来的,它是一个加权平均协方差矩阵。该协方差矩阵 Σ \Sigma Σ 结合了所有类别的信息,而不是单独某个类别的信息。计算公式为:
Σ = 1 N ∑ k = 1 K ∑ i ∈ C k ( x i − μ k ) ( x i − μ k ) ⊤ \Sigma = \frac{1}{N} \sum_{k=1}^{K} \sum_{i \in C_k} (\mathbf{x}_i - \boldsymbol{\mu}_k)(\mathbf{x}_i - \boldsymbol{\mu}_k)^\top Σ=N1k=1∑Ki∈Ck∑(xi−μk)(xi−μk)⊤
其中:
- N N N 是所有样本的总数(包含所有类别的样本),
- K K K 是类别的数量,
- C k C_k Ck 表示类别 k k k 的样本集合,
- x i \mathbf{x}_i xi 是类别 C k C_k Ck 中第 i i i 个样本的特征向量,
- μ k \boldsymbol{\mu}_k μk 是类别 C k C_k Ck 的均值向量。
分步理解:
- 对每个类别 C k C_k Ck,计算样本与该类别均值的差 ( x i − μ k ) (\mathbf{x}_i - \boldsymbol{\mu}_k) (xi−μk),然后计算差向量的外积 ( x i − μ k ) ( x i − μ k ) ⊤ (\mathbf{x}_i - \boldsymbol{\mu}_k)(\mathbf{x}_i - \boldsymbol{\mu}_k)^\top (xi−μk)(xi−μk)⊤。
- 对所有类别的样本进行加权求和,最终得到整体协方差矩阵 Σ \Sigma Σ。
为什么需要结合所有类别来计算协方差矩阵?
LDA 假设所有类别共享同一个协方差矩阵,这是基于以下假设:
- 不同类别的样本在数据特征空间中有相似的分布结构,即它们的分布形状(协方差)是一样的,尽管它们的均值不同。
- 协方差矩阵应该反映整个数据集的整体结构,因此必须使用所有类别的数据进行估计,而不是仅仅使用某个类别的数据。
因此,LDA 并不是计算某个类别的协方差矩阵,而是计算所有类别数据的整体协方差矩阵。这是为了确保模型能够适应不同类别的整体分布情况,而不仅仅是某个类别的局部分布。
2. QDA(二次判别分析)中的协方差矩阵
在 QDA 中,不同类别的协方差矩阵不再相同。每个类别
C
1
C_1
C1 和
C
2
C_2
C2 都有自己的协方差矩阵
Σ
1
\Sigma_1
Σ1 和
Σ
2
\Sigma_2
Σ2,即:
Σ
1
≠
Σ
2
\Sigma_1 \neq \Sigma_2
Σ1=Σ2
这意味着对于不同的类别,特征之间的方差和协方差结构可以是不同的。因此,在 QDA 中,协方差矩阵是分别对每个类别的数据进行计算的。
QDA 协方差矩阵公式
在 QDA 中,协方差矩阵是基于每个类别的样本计算的,公式如下:
Σ
k
=
1
N
k
∑
i
∈
C
k
(
x
i
−
μ
k
)
(
x
i
−
μ
k
)
⊤
\Sigma_k = \frac{1}{N_k} \sum_{i \in C_k} (\mathbf{x}_i - \boldsymbol{\mu}_k)(\mathbf{x}_i - \boldsymbol{\mu}_k)^\top
Σk=Nk1i∈Ck∑(xi−μk)(xi−μk)⊤
其中:
- N k N_k Nk 是类别 C k C_k Ck 的样本数量,
- x i \mathbf{x}_i xi 是属于类别 C k C_k Ck 的第 i i i 个样本的特征向量,
- μ k \boldsymbol{\mu}_k μk 是类别 C k C_k Ck 的均值向量。
决策边界
LDA 为什么使用相同的协方差矩阵?
使用相同协方差矩阵的假设使得决策边界是线性的。具体来说,LDA 假设特征的分布是高斯分布,并且各类别的协方差矩阵相同,这样当我们求解分类决策边界时,最终得到的分类边界是一个线性方程,因此分类边界是线性的。这样的假设虽然比较简单,但在实践中效果往往不错,尤其是在样本数量较少的情况下,这种简化模型有助于防止过拟合。
与 QDA(二次判别分析)的对比
相比之下,二次判别分析(Quadratic Discriminant Analysis, QDA)不假设所有类别共用同一个协方差矩阵。QDA 中,每个类别有自己的协方差矩阵 Σ 𝑘 ,因此模型会更灵活,能够适应类别间不同的分布形状和方向。由于不再假设相同的协方差矩阵,QDA 的决策边界是二次曲线而非直线。
为什么 C 1 C_1 C1 和 C 2 C_2 C2 的协方差矩阵可能不相等?
在现实世界的分类问题中,不同类别的数据可能有不同的分布特征。这种情况下,特征之间的方差和协方差可能会随类别而变化。
举个例子:
假设我们要分类两种不同的动物:猫和狗。它们的特征可能包括体重、身高、毛发长度等。对于猫来说,体重和身高之间的关系可能较弱,协方差值较小。而对于狗来说,体重和身高之间的关系可能较强,协方差值较大。因此,猫和狗的协方差矩阵 Σ 1 \Sigma_1 Σ1 和 Σ 2 \Sigma_2 Σ2 可能会不同。
结论:
当不同类别的数据分布形状差异较大时,假设协方差矩阵相同是不合理的。因此,在这种情况下,使用不同的协方差矩阵 Σ 1 \Sigma_1 Σ1 和 Σ 2 \Sigma_2 Σ2 更能捕捉到类别之间的差异。这就是为什么在 QDA 中允许每个类别有自己的协方差矩阵。
LDA 和 QDA 的判别函数公式
(1) LDA 判别函数公式
LDA 假设所有类别共用同一个协方差矩阵 Σ \Sigma Σ,即 Σ 1 = Σ 2 = ⋯ = Σ \Sigma_1 = \Sigma_2 = \dots = \Sigma Σ1=Σ2=⋯=Σ。判别函数(discriminant function)为:
δ k ( x ) = x ⊤ Σ − 1 μ k − 1 2 μ k ⊤ Σ − 1 μ k + log p ( C k ) \delta_k(\mathbf{x}) = \mathbf{x}^\top \Sigma^{-1} \boldsymbol{\mu}_k - \frac{1}{2} \boldsymbol{\mu}_k^\top \Sigma^{-1} \boldsymbol{\mu}_k + \log p(C_k) δk(x)=x⊤Σ−1μk−21μk⊤Σ−1μk+logp(Ck)
其中:
- x \mathbf{x} x 是待分类的样本向量,
- μ k \boldsymbol{\mu}_k μk 是类别 C k C_k Ck 的均值向量,
- Σ \Sigma Σ 是所有类别共用的协方差矩阵,
- p ( C k ) p(C_k) p(Ck) 是类别 C k C_k Ck 的先验概率。
这个公式的结果是一个线性判别边界,因此 LDA 的决策边界是线性的。
(2) QDA 判别函数公式
在 QDA 中,不同类别的协方差矩阵 Σ k \Sigma_k Σk 是不相等的。其判别函数为:
δ k ( x ) = − 1 2 log ∣ Σ k ∣ − 1 2 ( x − μ k ) ⊤ Σ k − 1 ( x − μ k ) + log p ( C k ) \delta_k(\mathbf{x}) = -\frac{1}{2} \log |\Sigma_k| - \frac{1}{2} (\mathbf{x} - \boldsymbol{\mu}_k)^\top \Sigma_k^{-1} (\mathbf{x} - \boldsymbol{\mu}_k) + \log p(C_k) δk(x)=−21log∣Σk∣−21(x−μk)⊤Σk−1(x−μk)+logp(Ck)
其中:
- x \mathbf{x} x 是待分类的样本向量,
- μ k \boldsymbol{\mu}_k μk 是类别 C k C_k Ck 的均值向量,
- Σ k \Sigma_k Σk 是类别 C k C_k Ck 的协方差矩阵,
- ∣ Σ k ∣ |\Sigma_k| ∣Σk∣ 是协方差矩阵的行列式,
- p ( C k ) p(C_k) p(Ck) 是类别 C k C_k Ck 的先验概率。
由于协方差矩阵 Σ k \Sigma_k Σk 不同,QDA 的判别边界包含二次项,因此 QDA 的决策边界是二次曲线。
公式中的每个部分解释
-
x ⊤ Σ − 1 μ k \mathbf{x}^\top \Sigma^{-1} \boldsymbol{\mu}_k x⊤Σ−1μk 和 x ⊤ Σ k − 1 ( x − μ k ) \mathbf{x}^\top \Sigma_k^{-1} (\mathbf{x} - \boldsymbol{\mu}_k) x⊤Σk−1(x−μk):这些项表示样本 x \mathbf{x} x 相对于类别均值 μ k \boldsymbol{\mu}_k μk 的“距离”,并且考虑了特征的协方差关系。
-
log ∣ Σ k ∣ \log |\Sigma_k| log∣Σk∣:这是协方差矩阵的行列式,对应着类别分布的“扩展范围”。行列式越大,表示数据分布越宽广。这个项在 QDA 中存在,在 LDA 中,由于协方差矩阵相同,该项会被消去。
-
log p ( C k ) \log p(C_k) logp(Ck):类别 C k C_k Ck 的先验概率,如果某个类别的先验概率更大(即样本更常见),这个项会提高该类别的判别函数值。
什么时候使用 LDA 或 QDA?
-
使用 LDA 的场景:
- 当各个类别的样本数据有相似的分布形状和范围时,LDA 更适合。
- LDA 模型较为简单,参数较少,因此在数据较少的情况下有较好的表现。
-
使用 QDA 的场景:
- 当不同类别的样本数据有明显不同的分布形状和范围时,QDA 更为合适。
- QDA 允许不同类别有各自的协方差矩阵,因此它更灵活,但同时需要更多的参数估计,适合数据量较大的情况。
总结
- LDA 假设所有类别共享相同的协方差矩阵 Σ \Sigma Σ,决策边界是线性的。
- QDA 允许每个类别有不同的协方差矩阵 Σ k \Sigma_k Σk,因此决策边界是二次曲线的。
- 选择 LDA 还是 QDA 取决于数据的分布情况:如果类别分布相似,用 LDA;如果类别分布差异大,用 QDA。