第二章 使用基于核Adatron的进化算法训练支持向量机进行数据分类
2.1. 引言
随着数据在较短时间长度内的急剧增加,出现了新的问题。诸如染色体分类、垃圾邮件过滤、定义在网页上向个人展示哪些广告等问题[25,13],产生了海量数据。有时这些数据量非常庞大,以至于训练集的潜在规模无法存储在计算机中。这一问题通过大规模学习得以解决,大规模学习旨在找到一种函数,将数据及其相应的类别标签转换为可存储在现代计算机内存中的数据量[9]。主要限制因素是算法获得准确结果所需的时间长度,而不是需要处理的样本数量[30]。
支持向量机(SVM)在处理大规模数据集时面临的一个典型问题是,学习算法通常是二次的,并且需要对数据进行多次扫描。为了解决这个问题,可以区分三种常见策略来降低这种实际复杂性[9,30]:
- 通过处理训练数据的子集而非完整的大型数据集来解决多个较小问题,
- 并行化学习算法,以及
- 设计复杂度较低的算法,以提供具有同等或更优性能的近似解。
本研究提出了一种通过设计复杂度较低的算法来训练大规模支持向量机,从而解决大规模学习问题的新方法。该方法结合了核Adatron(KA)和一些最先进的进化算法(EAs)来解决大规模学习问题[17]。所得到的算法处理小规模子问题,具有较低的计算复杂度,且易于实现。除了提供精确的泛化结果外,该方法还具有高度的可并行性。
2.2. 支持向量机
自弗拉基米尔·瓦普尼克在1995[10]首次提出支持向量机以来,由于支持向量机具有的特征,它已成为分类任务中最流行的方法之一。这些特征包括其简单模型、核函数的使用以及优化函数的凸性(仅存在一个全局最小值)。与多层感知机相比,支持向量机的这些特性使其更具吸引力[35]。目前已为支持向量机提出了许多大规模训练算法[28,39,42,15]。这些算法的主要思想是通过求解以下方程来最小化正则化风险函数 $ R $ 并最大化类别之间的间隔(图2.1)
$$
w^* = \arg\min_{w \in \mathbb{R}^D} F(w) := \frac{1}{2} |w|^2 + C R(w),
\tag{2.1}
$$
其中 $ w $ 是法向量,$ \frac{1}{2} |w|^2 $ 是二次正则化项,$ C > 0 $ 是缩放风险函数的固定常数。
方程(2.1)称为原始形式[19]。通过使用拉格朗日乘子,原始形式可以表示为其对偶形式[30]:
$$
L(\alpha) = \arg\max_{\alpha} \left{ \sum_{i=1}^{n} \alpha_i - \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j K(x_i, x_j) \right}
$$
subject to $ 0 \leq \alpha_i \leq C $ and $ \sum_{i=1}^{n} \alpha_i y_i = 0, $
\tag{2.2}
其中 $ C $ 是一个固定常数,$ (x_i, y_i)_{i=1}^n $ 是训练集,$ \alpha_i $ 是拉格朗日乘子,$ K(x_i, x_j) $ 是由内积定义的核矩阵的值 —— 点积 $ \langle x_i, x_j \rangle $(当使用线性核 $ K $ 时),且 $ y_i \in {\pm 1} $ 是类别标签[30]。
图2.1 为了获得更好的泛化效果,具有最大间隔($ d^+ + d^- $)的超平面能够给出最佳结果,尽管可能存在多个能够最优分离数据集的超平面。
对偶形式与原始形式具有相同的最优值,但这种表示形式的主要优势在于使用了“核技巧”(参见图2.2)。由于支持向量机只能在线性可分的特征空间中进行数据分类,因此核函数的作用是通过将训练数据隐式映射到高维空间,从而诱导出这样的特征空间,在该空间中数据是线性可分的[19,32]。
图2.2 应用核技巧后,非线性可分的数据集可以在更高维度中通过超平面进行分离。
大规模支持向量机训练算法主要有两类方法:一类是通过基于梯度的方法(如支持向量机的原始估计次梯度求解器、谨慎拟牛顿随机梯度下降、前向次梯度等)求解原始支持向量机形式,如公式(2.1)所示;另一类是通过二次规划(QP)方法求解公式(2.2)的对偶形式(如用于多变量性能度量的支持向量机、大规模线性分类库以及风险最小化束方法等)[30,39,40,8]。还有一些不属于这两类的方法,例如优化割平面算法(OCA),
该方法采用了一种改进的割平面技术,基于用于多变量性能度量的支持向量机(SVMperf)和风险最小化束方法。与随机梯度下降和支持向量机的原始估计次梯度求解器(Pegasos)等方法相比,OCA具有较快的收敛速度,并已显示出良好的分类结果,且计算复杂度具有次线性扩展特性[15]。然而,由于需要使用二次规划求解器来解决线性约束问题(每个线性约束为一个割平面),即使约束数量远低于数据维度,该方法在实现上仍然较为复杂。
基于梯度的方法通常是快速的算法(尤其是使用随机梯度下降的方法),并且具有良好的泛化能力。然而,它们在获得良好收敛速度方面高度依赖于步长的选择。如果步长没有被仔细选择或缺乏调整准则,则可能导致收敛缓慢[30]。对偶二次规划方法能够方便地处理核函数,并可通过与其他优化技术结合实现快速收敛。这些方法的主要缺点是二次规划求解器的计算复杂度较高,且相比梯度下降法或进化算法更难实现[30,43,18,14,16]。
近年来,已提出多种基于进化计算的SVM训练算法[31,29,1,20]。这些算法求解对偶形式(公式(2.2)),通常易于实现,并在小规模数据上表现出良好的效果。然而,其实现的缺点在于其计算复杂度为 $ O(n^2) $ 或更高,其中 $ n $ 表示训练样本的数量。由于每次迭代都需要完整的核矩阵来计算适应度函数,随着训练样本数量的增加,处理数据所需的时间将急剧增长。
2.3. 进化算法
正如我们在第1章所述,进化算法是可良好扩展至高维问题的全局优化方法。它们对噪声评估函数具有鲁棒性,并且相对容易实现和并行化[41]。即使可能发生早熟收敛至局部极值的情况,但已证明在大规模学习任务中,一个在优化上“不够好”或“较差”的算法,也可能在泛化方面表现出色[30]。
本文提出了一系列基于KA算法作为适应度函数的并行化算法,结合人工蜂群算法(ABC)、微人工蜂群算法(μABC)、差分进化(DE)和粒子群优化(PSO),以解决支持向量机学习问题。所选用的与KA结合的进化算法,因其在求解各类优化问题中表现出的良好效果,以及具备较强的探索与开发能力,并且具有较低的计算复杂度[27,11,36,4,44,33,26]。
使用进化算法训练支持向量机的大规模训练算法是一个尚未被充分探索的有前景领域。尽管并行化是解决大规模分类问题的一种非常理想的方法,但大多数大规模支持向量机训练算法并未考虑这一点,以在更短的时间内获得更好的结果。部分原因在于测试复杂的并行应用以确保其行为正确具有挑战性。在存在固有数据依赖性的场景中,由于顺序约束,复杂任务无法被划分,使得并行化变得不那么方便[9,30]。并行化进化算法的主要目标之一是减少搜索时间。对于某些具有严格搜索时间要求的问题类别而言,这是一个非常重要的方面,例如动态优化问题和实时规划[22]。
2.4. 核Adatron算法
自适应感知器算法(或Adatron)最早由Anlauf和Biehl[3]于1989年为线性分类器提出。该算法被提出作为一种计算最大间隔分类器的方法。Adatron用于在线学习感知器,并在最优解存在时保证收敛到该最优解[34]。
1998年,Fries等人[17]提出了KA算法。本质上,KA算法是Adatron算法的一种改进,用于在高维空间中结合核函数进行分类。该算法将Adatron实现简单的特点与支持向量机在非线性特征空间中工作的能力相结合,通过在线学习[32]构建最大间隔超平面。
使用KA算法的一个优势是采用梯度上升而非二次规划,这更容易实现且计算速度显著更快。
要实现KA算法,需要计算点积 $ w \cdot x_i $,其中 $ x_i $ 是训练点集,$ w $ 表示法向量到以最大间隔划分类别的超平面。由于核函数 $ K $ 通过方程与高维映射 $ \phi(x_i) $ 相关
$$
K(x_i, x_j) = \phi(x_i) \cdot \phi(x_j),
\tag{2.3}
$$
$ w $ 可以表示为
$$
w = \sum_{i=1}^{n} \alpha_i y_i \phi(x_i).
\tag{2.4}
$$
然后,通过使用核函数 $ K $,点积可以表示为
$$
z_i = \sum_{j=1}^{d} \alpha_j y_j K(x_i, x_j).
\tag{2.5}
$$
为了更新乘子,必须提出对 $ \alpha_i $ 的更改以进行评估。该更改可以按如下方式计算:
$$
\delta\alpha_i = \eta(1 - \gamma_i),
\tag{2.6}
$$
$$
\gamma_i = y_i z_i,
\tag{2.7}
$$
其中 $ \eta $ 是步长。如果 $ \alpha_i + \delta\alpha_i \leq 0 $,则对乘子的建议更改将导致 $ \alpha_i $ 为负值。为了避免此问题,设置 $ \alpha_i = 0 $。否则,更新 $ \alpha_i \leftarrow \alpha_i + \delta\alpha_i $。偏置可通过以下方式获得:
$$
b = \frac{1}{2}(\min(z_i^+) + \max(z_i^-)),
\tag{2.8}
$$
其中 $ z_i^+ $ 是类别标签为+1的模式,而 $ z_i^- $ 是类别标签为−1的模式。
伪代码在算法6中简要描述。
2.5. 使用进化算法训练的核Adatron
如前所述,KA算法需要通过 $ \alpha_i $ 值的迭代进行调整。在此方法中,使用EA进行调整(图2.3)。之所以选择这类算法作为优化方法,是因为它们易于实现和并行化,并且在计算机视觉、图像处理和路径规划等不同领域已表现出良好的效果[27,11,4,6,12,2]。
图2.3 该示意图解释了本章节所述算法的基本思想。
提出的算法背后的基本思想是采用“分治”策略,其中进化算法(EA)种群中的每个个体(差分进化(DE)中的向量,ABC及μABC中的蜜蜂)被视为一个子进程;在这种情况下,即为解决整个问题一部分的线程。一旦每个子进程得到结果,便会将其与同级进程的结果进行比较,以改进未来的结果。
由于每个个体可以独立评估,差分进化、ABC和μABC很容易实现并行化。算法仅在涉及变异和选择最优个体的阶段才需要个体之间的通信。此外,通过将计算过程划分为多个子任务,核矩阵的获取过程也可以轻松实现并行化。
在所提出算法的每种变体中,个体 $ x_i $(向量或蜜蜂)表示一个由进化算法在迭代过程中需优化的乘子组成的n维度向量。
算法所使用的适应度函数由以下方程描述
$$
f(x) = \varepsilon \ast e^{\text{abs}(1 - \Delta)},
\tag{2.9}
$$
其中 $ \varepsilon $ 是被错误分类的元素数量,$ \Delta $ 是超平面在类别之间的间隔。后者可以按如下方式估计:
$$
\Delta = \frac{1}{2}(\min(z_i^+) - \max(z_i^-)),
\tag{2.10}
$$
其中 $ z_i $ 可通过公式(2.5)获得,$ z_i^+ $ 是具有类别标签+1的模式,而 $ z_i^- $ 是具有类别标签−1的模式。
适应度函数不仅关注优化超平面的间隔,同时还最小化分类错误。
2.6. 使用基准仓库数据集的结果
测试中总共使用了六个数据集。它们可以在表2.1和2.2中看到。Astro‐ph数据集专注于对来自物理学ArXiv的科学论文摘要进行分类[24]。aut‐avn和real‐sim分类数据集来自四个讨论组的Usenet文章集合:模拟赛车、模拟航空、真实汽车和真实航空。CCAT和C11数据集来自Reuters RCV1集合,其任务是区分与企业相关的文章[9]。蠕虫数据集专注于分类蠕虫RNA剪接[15]。实验在一台配备16 GB内存的Intel Core i7‐3770机器上进行,操作系统为Fedora Linux 20。代码使用C++编写,采用POSIX线程和Armadillo[37]。
禁用了表2.2中出现的算法的偏置项。停止条件为 $ f(x) \leq 0.1 $ 或500次迭代。对于进化算法的适应度函数,所有算法均使用了线性核,因为在泛化测试中给出了最佳结果。
在测试之前,从每个数据集中提取了4000个训练样本的子集,并对其进行归一化处理,用于二分类和交叉验证。结果如表2.1所示。通过在每个数据集上应用10折交叉验证获得泛化准确率。为了测试每种算法的训练能力的准确性,支持向量机每次运行使用400个训练样本进行训练。训练样本的数量是通过实验方式确定的,因为观察到少于400个训练样本会导致较差的泛化结果,而超过400个则未能显著改善结果。
用于训练支持向量机的每种进化算法的参数值均通过实验获得。对于μABC版本的算法,使用的参数值为:RF = 0.85,C = 10和FCR = 0.35;ABC版本使用了:C = 10和lt = 75;差分进化算法使用了:C = 10,F = 0.85和CROV = 0.25。差分进化算法和ABC版本均使用了30个个体的群体。
| 数据集 | 维度 | 密度 |
|---|---|---|
| 天体物理学 | 99757 | 0.08% |
| 自动AVN | 20707 | 0.23% |
| C11 | 47236 | 0.16% |
| CCAT | 47236 | 0.16% |
| Real‐Sim | 20958 | 0.23% |
| Worm | 804 | 25% |
本章节所述算法实现的主要关注点是核矩阵的处理,因为其计算复杂度为 $ O(d \ast n^2) $,其中 $ d $ 表示任意训练样本中非零特征的最大数量,$ n $ 表示训练样本的数量。然而,正如在表2.1中可以看出,在大多数情况下,数据样本的密度非常低。因此,计算核矩阵所需的运算量可以大幅减少;并且,如果将其视为一个分治问题,则计算复杂度最坏情况下可降低至 $ O(d \ast n^2 / t) $,其中 $ t $ 表示线程数。
在大多数进化算法中,计算复杂度源于适应度函数的评估。对于本章所示的方法,适应度函数的计算复杂度为 $ O(n^2) $,通过并行化可降低至 $ O(n^2 / t) $。当 $ d > n $ 时,$ O(n^2) $ 的复杂度优于 $ O(d \ast n) $ 的问题,相比之下,SVMlight的计算复杂度为 $ O(d \ast n^2) $。本章所示的方法提供了更具吸引力的结果,尽管对于OCAS和SVMperf等算法而言,计算复杂度为 $ O(d \ast n) $[30],这比前述的更为优越。
然而,如表2.2所示,本章所示的方法在处理时间和分类方面尚无法与之竞争;但在泛化测试中表现出的结果与OCAS、SVMlight以及SVMperf的结果具有竞争力(见图2.4)。值得注意的是,相比于实现或并行化OCAS[15]、SVMlight[23]和SVMperf[24]所使用的二次规划求解器,实现和并行化进化算法更容易。
| 数据集 | Alg. | 训练 | Gen. | Time |
|---|---|---|---|---|
| 天体物理学 | μABC | 93.2% | 91.82% | 0.669 |
| ABC | 91.05% | 88.55% | 3.1505 | |
| DE | 92.52% | 91.08% | 0.3315 | |
| 支持向量机light | 100% | 92.89% | 0.020 | |
| 支持向量机perf | 100% | 93.02% | 0.061 | |
| OCAS | 99.75% | 92.86% | 0.109 | |
| 自动AVN | μABC | 92.67% | 89.84% | 0.5275 |
| ABC | 92.50% | 89.51% | 1.668 | |
| DE | 92.52% | 89.82% | 0.054 | |
| 支持向量机light | 99.97% | 90.95% | 0.027 | |
| 支持向量机perf | 100% | 93.02% | 0.061 | |
| OCAS | 99.75% | 90.93% | 0.052 | |
| C11 | μABC | 75.47% | 72.37% | 0.832 |
| ABC | 79.90% | 75.35% | 6.878 | |
| DE | 81.10% | 76.43% | 1.634 | |
| 支持向量机light | 99.67% | 77.83% | 0.021 | |
| 支持向量机perf | 99.80% | 77.61% | 0.065 | |
| OCAS | 99.65% | 76.14% | 0.075 | |
| CCAT | μABC | 75.32% | 73.05% | 0.863 |
| ABC | 80.70% | 79.70% | 6.333 | |
| DE | 82.55% | 80.99% | 1.110 | |
| 支持向量机light | 99.62% | 82.76% | 0.025 | |
| 支持向量机perf | 99.90% | 82.78% | 0.089 | |
| OCAS | 99.67% | 83.17% | 0.078 | |
| Real‐Sim | μABC | 93.90% | 91.82% | 0.256 |
| ABC | 93.92% | 91.90% | 0.937 | |
| DE | 93.97% | 92.06% | 1.637 | |
| 支持向量机light | 99.87% | 93.52% | 0.018 | |
| 支持向量机perf | 99.87% | 93.48% | 0.062 | |
| OCAS | 99.57% | 93.52% | 0.036 | |
| Worm | μABC | 90.00% | 89.53% | 0.717 |
| ABC | 90.52% | 89.91% | 6.910 | |
| DE | 91.87% | 90.65% | 0.803 | |
| SVMlight | 99.17% | 91.18% | 0.027 | |
| 支持向量机perf | 100% | 89.06% | 0.028 | |
| OCAS | 99.75% | 89.12% | 0.145 |
图2.4 从ROC曲线可以看出,本章所示分类器的泛化性能非常相似。
2.7. 应用于分类肌电信号
本节展示了所提出的SVM-EA系统在分类代表手部动作的人体上肢动作产生的肌电信号中的应用;该工作基于[7]。
图2.5 抓握三种不同直径的球体。
肌电信号(sEMG)是一种肌电生理信号(MES),是与收缩肌肉相关的神经肌肉激活的电学表现。它们具有时间和力依赖性,其幅度在零值上下随机变化[5]。这些信号的时域结构变化较大。然而,波形的统计特征可能较为稳定,可用于模式分类[21]。迄今为止,尚未能够获得一个单一参数来恰当地反映所测得的MES特征。因此,必须选择一组特征作为模式分类阶段的输入。我们的实验数据是通过在六名受试者(三名女性F1、F2、F3和三名男性M1、M2、M3)的前臂肌肉上放置表面电极获得的。在每次抓握阶段中,他们抓握三种不同直径的发泡聚苯乙烯球体(小D1、中D2、大D3)之一(重量可忽略不计);参见图2.5。受试者舒适地坐着,手臂用酒精清洁并剃去毛发,以避免信号阻抗过高。在每次抓握阶段中,测量了五块前臂肌肉的表面肌电信号:桡侧腕屈肌、尺侧腕屈肌、拇长屈肌、指深屈肌和指伸肌;参见图2.6。
图2.6 表面肌电信号从这些手臂肌肉中测量得到。
每位受试者执行一个批次,该批次定义为依次抓握三个球体,每次抓握之间间隔5秒,批次之间有放松的时间间隔。每个批次包含六次收缩(从抓握开始到结束),且每位受试者执行动作的顺序是随机化的。在初始抓握球体时进行一次短暂收缩,以指示信号记录的开始。之后,受试者被要求维持抓握。当听到声音提示后,发生另一次收缩,随后手张开并回到解剖学休息位。用于提取肌电生理信号(MES)中时域特征(TD)的特征,以去除不需要的EMG数据是参考[21,38,45]中开发的研究所使用的数据。因此,输入数据是每个受试者在每次抓握阶段中每个sEMG的TD特征,与此输入数据相关的类别由受试者在该阶段抓握的球体大小表示。
我们总共有三个不同的类别。每个数据集被分为四个测试,其中两个用于评估所用每个分类器的训练能力,另外两个用于评估泛化能力。在每次测试中,数据来自两次抓握阶段。也就是说,一个受试者依次抓握两个球体,然后我们从每个受试者获得三个抓握阶段:抓握球体D1–D2、D1–D3和D2–D3;因此每次测试都是一个二分类实验。数据集的维度为40,每次测试共使用40个样本(每类20个样本),其中36个样本用于训练,其余用于测试所用每个分类器的泛化能力。对于泛化测试,采用了10折交叉验证。所使用的分类器包括KA-PSO、KA-DE、OCAS和SVMperf。结果如表2.3和表2.4所示。
| 数据集 | 球体 Di−Dj | 1‐2 | 1‐3 | 2‐3 | 1‐2 | 1‐3 | 2‐3 | 1‐2 | 1‐3 | 2‐3 | 1‐2 | 1‐3 | 2‐3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| F1 | F2 | M1 | M2 | ||||||||||
| OCAS | 0.97 | 0.93 | 0.79 | 0.82 | 0.88 | 0.51 | 0.82 | 0.83 | 0.74 | 0.66 | 0.68 | 0.79 | |
| 支持向量机perf | 0.97 | 0.96 | 0.90 | 0.88 | 0.95 | 0.82 | 0.81 | 0.83 | 0.72 | 0.67 | 0.72 | 0.80 | |
| KA-DE | 0.97 | 0.93 | 0.95 | 0.85 | 0.90 | 0.66 | 0.83 | 0.84 | 0.70 | 0.74 | 0.75 | 0.83 | |
| KA-PSO | 0.97 | 0.92 | 0.93 | 0.85 | 0.90 | 0.60 | 0.83 | 0.83 | 0.69 | 0.71 | 0.73 | 0.81 |
| 数据集 | 球体 Di−Dj | 1‐2 | 1‐3 | 2‐3 | 1‐2 | 1‐3 | 2‐3 | 1‐2 | 1‐3 | 2‐3 | 1‐2 | 1‐3 | 2‐3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| F1 | F2 | M1 | M2 | ||||||||||
| OCAS | 0.95 | 0.90 | 0.80 | 0.80 | 0.83 | 0.45 | 0.65 | 0.65 | 0.53 | 0.60 | 0.55 | 0.73 | |
| 支持向量机perf | 0.95 | 0.93 | 0.88 | 0.83 | 0.88 | 0.80 | 0.68 | 0.73 | 0.53 | 0.68 | 0.55 | 0.73 | |
| KA-DE | 0.98 | 0.90 | 0.95 | 0.83 | 0.83 | 0.45 | 0.75 | 0.73 | 0.50 | 0.65 | 0.63 | 0.75 | |
| KA-PSO | 0.97 | 0.90 | 0.94 | 0.83 | 0.81 | 0.44 | 0.75 | 0.71 | 0.50 | 0.65 | 0.61 | 0.73 |
结果表明,尽管存在抓握过程中手指姿态与所抓取物体之间的映射关系的复杂性,仍有可能找到两者之间的对应关系。在sEMG中可能存在的干扰。肌电数据集F1、F2和M1在训练阶段表现出良好的结果。最佳结果由KA-DE获得,SVMperf紧随其后。在泛化测试中,结果不如训练阶段的结果理想。同样,KA-DE和SVMperf表现最好,但值得指出的是,与SVMperf和OCAS相比,KA-DE更容易实现和并行化。
2.8. 结论
我们开发了一种易于实现的方法,用于使用并行性结合三种进化算法对稀疏的大规模数据集进行分类。这些算法主要设计用于处理稀疏数据,但也可以处理非高度稀疏的数据。例如,线虫数据集给出了良好的泛化结果,并且所获得的时间与其他测试中进化算法方法所获得的时间相当。
测试结果表明,本章节提出的算法在泛化性能方面具有竞争力,尽管在执行时间和训练准确率百分比方面,OCAS、SVMlight和SVMperf更优。比较本章提出的三种算法可以明显看出,在大多数测试中,μABC版本更快,而DE版本具有最高的准确率。
该方法的未来改进将集中在这两个版本上,特别是μABC方法。这项工作还将通过减少每次迭代所需的训练样本数量来降低算法的计算复杂度,并开发该方法的多类版本。
1366

被折叠的 条评论
为什么被折叠?



