44、核Fisher判别分析:原理、实现与应用

核Fisher判别分析:原理、实现与应用

1. 引言

在解决分类问题时,之前采用的方法是先使用核主成分分析(Kernel PCA)进行特征提取,再在提取的特征上训练简单的线性判别分类器。而核Fisher判别(Kernel Fisher Discriminant, KFD)则将这两个步骤结合起来,在特征空间中解决Fisher线性判别的问题,从而在输入空间中得到非线性判别。

1.1 Fisher判别算法概述

在线性情况下,Fisher判别通过最大化Rayleigh系数来计算:
[J(w) = \frac{w^T S_B w}{w^T S_W w}]
其中,类间散布矩阵 (S_B) 和类内散布矩阵 (S_W) 分别为:
[S_B = (m_+ - m_-)(m_+ - m_-)^T]
[S_W = \sum_{q \in {+,-}} \sum_{i \in \Omega_q} (x_i - m_q)(x_i - m_q)^T]
这里,(m_q) 是类 (q) 的样本均值,(\Omega_q) 是类 (q) 的样本索引集。其思想是寻找一个投影方向,使得投影后类中心距离远,而类内散布小,从而减少两类的重叠。与主成分分析(PCA)不同,Fisher判别考虑了样本的类别标签,能找到最优的判别方向(在类分布为高斯分布的假设下,具有最小的期望误分类误差)。

1.2 特征空间中的Fisher判别

为了在特征空间 (\mathcal{F}) 中解决问题,将 (w) 展开为:
[w = \sum_{i} \alpha_i \Phi(x_i)]
定义一些相关的量:
- (1_q) 是 (m) 维向量,若样本 (x_i) 属于类 (q),则 ([1_q] i = 1),否则为 (0)。
- (m_q = |\Omega_q|) 是类 (q) 的样本数量。
- (\mu_q = \frac{1}{m_q} K 1_q),(N = K K^T - \sum
{q \in {+,-}} m_q \mu_q \mu_q^T),(\mu = \mu_+ - \mu_-),(M = \mu \mu^T),(K_{ij} = \langle \Phi(x_i), \Phi(x_j) \rangle = k(x_i, x_j))。

此时,优化问题变为最大化特征空间中的Rayleigh系数:
[J(\alpha) = \frac{\alpha^T M \alpha}{\alpha^T N \alpha} = \frac{(\alpha^T \mu)^2}{\alpha^T N \alpha}]
测试点在判别方向上的投影为:
[\langle w, \Phi(x) \rangle = \sum_{i=1}^{m} \alpha_i k(x_i, x)]

由于特征空间的维度通常远高于训练样本数量 (m),因此建议使用正则化。例如,在 (N) 中添加单位矩阵或核矩阵 (K) 的倍数,分别惩罚 (|\alpha|^2) 或 (|w|^2)。

最大化 (J(\alpha)) 有几种等价的方法:
- 求解广义特征值问题 (M \alpha = \lambda N \alpha),选择具有最大特征值 (\lambda) 的特征向量 (\alpha)。
- 计算 (\alpha = N^{-1} (\mu_+ - \mu_-))。

但对于大样本集,矩阵 (N) 和 (M) 会变得很大,且解 (\alpha) 是非稀疏的。为了解决这个问题,可以将KFD转化为凸二次规划问题:
[
\begin{align }
\min_{\alpha, b} &\quad \frac{1}{2} |\alpha|^2 + C \Omega(\alpha) \
\text{s.t.} &\quad K \alpha + 1 b = y \
& \quad 1_q^T \alpha = 0, \quad q \in {+,-}
\end{align
}
]
其中,(\alpha \in \mathbb{R}^m),(b \in \mathbb{R}),(y) 是类别标签向量 (\pm 1),(\Omega(\alpha)) 是正则化项,如 (|\alpha|^2) 或 (\alpha^T K \alpha)。这个二次规划问题与最大化 (J(\alpha)) 等价。第一个约束将每个样本的输出拉向其类别标签,(|\alpha|^2) 最小化误差的方差,约束 (1_q^T \alpha = 0) 确保每个类的平均输出等于其标签。

选择 (\ell_1) 范数正则化项 (\Omega(\alpha) = |\alpha|_1) 可以得到稀疏解,因为 (\ell_1) 范数正则化是 (\ell_0) 范数正则化(计算非零元素个数)的合理近似。

2. 核Fisher判别的高效训练

2.1 二次规划问题的重写

使用 (\Omega(\alpha) = |\alpha|^2) 重写二次规划问题。定义:
[a =
\begin{bmatrix}
b \
\alpha
\end{bmatrix},
c =
\begin{bmatrix}
m_+ - m_- \
K^T y
\end{bmatrix},
A_q =
\begin{bmatrix}
m_q \
K^T 1_q
\end{bmatrix},
H =
\begin{bmatrix}
m & 1^T K \
K^T 1 & K^T K + C I
\end{bmatrix}
]
则原问题可重写为:
[
\begin{align }
\min_{a} &\quad \frac{1}{2} a^T H a - c^T a + \frac{m}{2} \
\text{s.t.} &\quad A_+^T a - m_+ = 0 \
& \quad A_-^T a + m_- = 0
\end{align
}
]
构造拉格朗日函数:
[L(a, \xi_+, \xi_-) = \frac{1}{2} a^T H a - c^T a + \xi_+ (A_+^T a - m_+) + \xi_- (A_-^T a + m_-) + \frac{m}{2}]
对 (a) 求偏导,得到对偶问题:
[
\begin{align }
\max_{\xi_+, \xi_-} &\quad -\frac{1}{2} a^T H a - \xi_+ m_+ + \xi_- m_- + \frac{m}{2} \
\text{s.t.} &\quad H a - c + (\xi_+ A_+ + \xi_- A_-) = 0
\end{align
}
]
由对偶约束解出 (a):
[a = H^{-1} (c - (\xi_+ A_+ + \xi_- A_-))]
将其代入对偶问题,得到一个关于 (\xi_+) 和 (\xi_-) 的问题,可以解析求解,进而得到 (a) 或 (\alpha) 和 (b) 的值。

2.2 稀疏贪心近似

对于大样本集,直接求解上述问题不可行,因为 (H^{-1}) 是一个 ((m + 1) \times (m + 1)) 的矩阵,求逆的时间和内存开销都很大。因此,采用稀疏贪心近似方法:
- 不试图找到 (m) 个系数 (\alpha_i) 的完整解,而是用包含 (n \ll m) 项的较短展开式来近似解。
- 从空解 (n = 0) 开始,每次迭代选择一个新的样本 (x_i)(或索引 (i)),并重新求解包含这个新索引和所有先前选择索引的展开式的问题,直到满足合适的准则为止。

在每次迭代中,求解问题的复杂度为 (O(\beta m n^2)),其中 (\beta) 是用户定义的值。具体来说,将解的展开式限制在训练模式的 (n) 元素子集 (\mathcal{I} \subseteq [m]) 上,将 (m \times m) 的矩阵 (K) 替换为 (m \times n) 的矩阵 (K_n),其中 (K_{n_{ij}} = k(x_i, x_j)),(i = 1, \cdots, m),(j \in \mathcal{I})。

假设已经知道使用 (n) 个核函数的解(和 (H) 的逆),则 (n + 1) 个样本的 (H^{-1}) 可以通过对先前的 (H^{-1}) 进行秩一更新得到:
[
\begin{bmatrix}
H_n & B \
B^T & C
\end{bmatrix}^{-1} =
\begin{bmatrix}
(H_n)^{-1} + \frac{(H_n)^{-1} B (H_n)^{-1} B^T}{s - B^T (H_n)^{-1} B} & -\frac{(H_n)^{-1} B}{s - B^T (H_n)^{-1} B} \
-\frac{B^T (H_n)^{-1}}{s - B^T (H_n)^{-1} B} & \frac{1}{s - B^T (H_n)^{-1} B}
\end{bmatrix}
]
其中,(s = (C - B^T H_n^{-1} B)^{-1})。

每次迭代选择索引 (i) 时,理想情况下应选择使原目标函数下降最大的索引,但这需要计算所有未使用的 (m - n) 个索引的 (H^{-1}) 更新,计算量太大。因此,通常选择一个随机子集的索引,根据相关理论,随机选择大小为 59 的样本,有 0.95 的概率能得到所有估计中前 0.05 的估计。

2.3 稀疏贪心核Fisher算法

下面是稀疏贪心核Fisher算法的伪代码:

Algorithm 15.1 The Sparse Greedy Kernel Fisher Algorithm
arguments:
    X = [x1, ..., xm], y = [y1, ..., ym], C, β, k, OPTS
returns:
    I, α

function SparseGreedyKFD(X, y, C, β, k, OPTS)
    n = 0
    I = []
    while termination criterion not met do
        randomly select i \in [m] \setminus I
        for all j in the selected subset do
            solve the quadratic program for the current set of indices
            compute the objective function value
            if the objective function value improves then
                best_index = j
            end
        end
        I = I ∪ {best_index}
        update H^{-1} using rank-one update
    end
    return I, α
end

2.4 训练时间实验

使用USPS手写数字数据集构建一对多任务,测试新算法的运行时间。数据维度为 (N = 256),包含 7291 个样本。所有实验使用高斯核 (exp(-\frac{|x - x’|^2}{0.3 N})) 和正则化常数 (C = 1)。将稀疏贪心算法与二次规划公式(15.10)进行比较,结果表明:
- 二次规划算法的计算复杂度大致与样本数量的立方成正比。
- 对于大样本集,稀疏贪心近似算法的复杂度指数约为 (\frac{3}{2})。
- 稀疏贪心算法只需要存储最多 (n \times n) 的矩阵,而之前的方法需要存储 (m \times m) 的矩阵。

2.5 流程总结

下面是核Fisher判别分析的整体流程:

graph TD
    A[输入数据 X, y] --> B[初始化参数 C, β, k 等]
    B --> C[选择算法(稀疏贪心或二次规划)]
    C --> |稀疏贪心| D[初始化 n = 0, I = []]
    D --> E{终止条件是否满足}
    E --> |否| F[随机选择索引 i]
    F --> G[求解当前索引集的二次规划问题]
    G --> H[计算目标函数值]
    H --> I{目标函数值是否改善}
    I --> |是| J[更新最优索引]
    J --> K[更新 I]
    K --> L[使用秩一更新更新 H^-1]
    L --> E
    E --> |是| M[输出结果 I, α]
    C --> |二次规划| N[构造二次规划问题]
    N --> O[求解二次规划问题]
    O --> M

3. 概率输出

KFD的泛化误差性能与支持向量机(SVM)相当,但它的一个重要优势是其输出可以很容易地转换为类别的条件概率。这是因为在高维特征空间中,每个类的训练样本在判别方向上的投影直方图可以近似为高斯分布。

3.1 计算类概率的步骤

  • 步骤1:估计高斯密度
    • 设 (m_+) 和 (m_-) 分别是正例和反例的数量,(m = m_+ + m_-)。
    • 计算训练点在判别方向上的投影 (q_j = \langle w, \Phi(x_j) \rangle = \sum_{i=1}^{m} \alpha_i k(x_i, x_j))。
    • 估计每个高斯分布的均值和方差:
      [
      \mu_q = \frac{1}{m_q} \sum_{y_i = q} q_i
      ]
      [
      \sigma_q^2 = \frac{1}{m_q - 1} \sum_{y_i = q} (q_i - \mu_q)^2
      ]
    • 类条件密度为:
      [
      p(q | y = q) = \frac{1}{\sqrt{2 \pi \sigma_q^2}} \exp \left( -\frac{(q - \mu_q)^2}{2 \sigma_q^2} \right)
      ]
  • 步骤2:确定先验概率
    • 先验概率 (P(y = q)) 可以是已知的,也可以从当前数据集估计。如果样本组成能代表问题,则 (P(y = q) = \frac{m_q}{m})。
  • 步骤3:使用贝叶斯规则计算条件概率
    [
    P(y = q | x) = P(y = q | q) = \frac{p(q | y = q) P(y = q)}{p(q | y = +) P(y = +) + p(q | y = -) P(y = -)}
    ]

3.2 概率输出的应用

  • 信息融合 :在需要将分类器的输出与其他信息源融合的应用中,估计条件概率很有用。
  • 处理噪声标签 :在存在噪声标签的分类问题中,可以建立标签噪声的概率模型。在学习过程中,使用期望最大化(EM)算法优化噪声模型和KFD的参数,以及训练模式的条件概率。该算法可以从仅全局标记的图像中学习任务,减少了手动标记大量图像块的工作量。

3.3 总结

核Fisher判别分析将特征提取和分类步骤结合起来,通过在特征空间中解决Fisher线性判别的问题,得到输入空间中的非线性判别。稀疏贪心近似算法提高了大样本集的计算效率,而概率输出则为分类结果提供了更丰富的信息,使其在实际应用中更具优势。

3.4 结果展示

在对图像补丁进行自然与人造物体分类的任务中,我们可以看到KFD方法的优势。以下是相关结果的展示:

分类方法 投影直方图特点 概率估计准确性
Fisher线性判别(FLD) 由于输入空间的特性,直方图可能不规则 较难准确估计类概率
核Fisher判别(KFD) 在高维特征空间中,直方图更接近高斯分布 更易准确估计类概率

分类结果可视化

从图中可以直观地看出,KFD方法在高维特征空间下使得类别的投影直方图更符合高斯分布,这为准确估计类概率提供了良好的基础。

3.5 详细步骤对比

为了更清晰地了解不同方法在核Fisher判别分析中的步骤差异,我们进行如下对比:

二次规划方法
  1. 定义相关矩阵和向量,将原问题重写为二次规划形式。
  2. 构造拉格朗日函数。
  3. 对拉格朗日函数求偏导,得到对偶问题。
  4. 求解对偶问题,得到相关参数。
稀疏贪心方法
  1. 初始化 (n = 0) 和索引集 (I = [])。
  2. 当终止条件不满足时,随机选择索引 (i)。
  3. 对选定子集中的每个索引,求解当前索引集的二次规划问题。
  4. 计算目标函数值,若有改善则更新最优索引。
  5. 更新索引集 (I),并使用秩一更新更新 (H^{-1})。

3.6 实际应用案例

图像分割

在图像分割任务中,如将图像分割为天空和非天空区域,传统的分类方法可能需要手动标记大量的图像块来构建足够大的训练集。而KFD的概率输出方法可以从仅全局标记的图像中学习任务。具体操作如下:
1. 准备仅全局标记的图像数据集,即标记图像是否包含天空。
2. 使用KFD算法进行训练,在训练过程中,采用期望最大化(EM)算法优化噪声模型和KFD的参数,以及训练模式的条件概率。
3. 根据训练得到的模型,对新的图像进行分割,输出每个像素属于天空或非天空的概率。

信息融合

在某些应用中,分类器的输出需要与其他信息源进行融合。例如,在一个多传感器的系统中,分类器的输出可以与传感器的其他数据进行结合。具体步骤如下:
1. 使用KFD算法对数据进行分类,并输出每个类别的条件概率。
2. 将分类器的条件概率与其他信息源的数据进行融合,可以采用加权平均等方法。
3. 根据融合后的结果进行决策。

3.7 注意事项

在使用核Fisher判别分析时,有以下几点需要注意:
- 核函数的选择 :不同的核函数会对结果产生影响,需要根据具体问题选择合适的核函数,如高斯核、多项式核等。
- 正则化参数的设置 :正则化参数 (C) 的大小会影响模型的复杂度和泛化能力,需要通过实验进行调整。
- 样本数量和维度 :对于大样本集和高维数据,稀疏贪心近似算法可以提高计算效率,但需要注意参数的选择和算法的收敛性。

3.8 对比总结

对比项 二次规划方法 稀疏贪心方法
计算复杂度 大致与样本数量的立方成正比 大样本集时复杂度指数约为 (\frac{3}{2})
存储需求 需要存储 (m \times m) 的矩阵 最多存储 (n \times n) 的矩阵
解的稀疏性 非稀疏解 可得到稀疏解
适用场景 样本数量较少时适用 大样本集时更有优势

3.9 流程补充

下面是对核Fisher判别分析整体流程的补充,包含了概率输出和应用部分:

graph TD
    A[输入数据 X, y] --> B[初始化参数 C, β, k 等]
    B --> C[选择算法(稀疏贪心或二次规划)]
    C --> |稀疏贪心| D[初始化 n = 0, I = []]
    D --> E{终止条件是否满足}
    E --> |否| F[随机选择索引 i]
    F --> G[求解当前索引集的二次规划问题]
    G --> H[计算目标函数值]
    H --> I{目标函数值是否改善}
    I --> |是| J[更新最优索引]
    J --> K[更新 I]
    K --> L[使用秩一更新更新 H^-1]
    L --> E
    E --> |是| M[得到参数 α 和 b]
    C --> |二次规划| N[构造二次规划问题]
    N --> O[求解二次规划问题]
    O --> M
    M --> P[计算训练点投影 q]
    P --> Q[估计高斯密度参数 μ 和 σ^2]
    Q --> R[确定先验概率 P(y = q)]
    R --> S[使用贝叶斯规则计算条件概率 P(y = q | x)]
    S --> T[应用于实际场景(信息融合、处理噪声标签等)]

4. 总结与展望

核Fisher判别分析是一种强大的分类方法,它将特征提取和分类步骤结合起来,通过在特征空间中解决Fisher线性判别的问题,得到输入空间中的非线性判别。其主要优势总结如下:
- 结合特征提取和分类 :避免了传统方法中特征提取和分类分离的问题,提高了分类的效果。
- 高效处理大样本集 :稀疏贪心近似算法显著提高了大样本集的计算效率,减少了计算时间和存储需求。
- 概率输出 :能够输出类别的条件概率,为分类结果提供了更丰富的信息,便于在实际应用中与其他信息源进行融合。

在未来的研究中,可以进一步探索以下方向:
- 核函数的优化 :寻找更适合特定问题的核函数,提高分类的准确性和泛化能力。
- 算法的并行化和分布式计算 :进一步提高算法的计算效率,使其能够处理更大规模的数据。
- 与其他方法的结合 :将核Fisher判别分析与其他机器学习方法相结合,如深度学习,以应对更复杂的问题。

总之,核Fisher判别分析在分类领域具有广阔的应用前景,通过不断的研究和改进,将为实际问题的解决提供更有效的方法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值