《1 引言》
1 引言
作为线性方法, PCA (主分量分析) 方法是最小均方误差意义上的最优维数压缩技术
如果原始数据的特征存在复杂的非线性关系, 相比主分量分析, 非线性主分量分析更适合用作特征抽取方法
《2 PCA与KPCA》
2 PCA与KPCA
《2.1PCA》
2.1PCA
设X是一个n维的随机变量, u1, u2, …, un是n维空间的正交归一化矢量系, 即
则可将X无误差地表示为
其中yi= (ui) TX, i=1, 2, …, n, 若用前r项估计X, 即
则由此引起的均方误差为
亦即
使用拉格朗日乘子法, 可以求出在满足正交归一化条件式 (1) 下, 使得均方误差ε取极值的坐标系统。换言之, 拉格朗日函数
取得极值时, 式 (5) 也取得极值。而式 (6) 取得极值应满足条件
令r=0, 则可得到如下结论:
以矩阵Σ的特征向量作为坐标轴来展开X时, 其截断均方误差具有极值性质, 且当取r个ui (i=1, …, r) 来表示X时, 其均方误差为
式中, λi是矩阵Σ的相应特征值。因此, PCA方法一般求出协方差矩阵较大特征值对应的特征向量作为变换轴。
《2.2PCA中核函数的引入》
2.2PCA中核函数的引入
假设x1, x2, …, xN为训练样本, 用{xi}表示输入空间。KPCA方法的基本思想是通过某种隐式方式将输入空间映射到某个高维空间 (常称为特征空间) , 并在特征空间中实现PCA。假设相应的映射为ϕ, 并且由此映射而得的特征空间中数据满足中心化的条件, 即
则特征空间中协方差矩阵为
对不满足中心化的情况, 可参考文献
联合式 (6) 与式 (11) , 令r=0, 得
矩阵K中元素为Mercer核, 即 (K) ij=k (xi, xj) =ϕ (xi) ϕ (xj) 。 由于此处K为对称阵, 将式 (12) 对α (i) 求导, 可得
式 (13) 可改写为特征方程
其中 λ′=Nλi。
《2.3基于KPCA的特征抽取》
2.3基于KPCA的特征抽取
在特征空间的训练样本集{ϕ (xi) }上计算特征方程式 (14) 的非零特征值与相应特征向量。假设按降序排列的若干个较大非零特征值为λ1, λ2, …, λm (m≤N) , 相应特征向量为α (1) , α (2) , …, α (m) , 并假设特征空间中相应单位特征向量分别为u (1) , u (2) , …, u (m) , 则关系式
成立。据此容易给出特征空间中样本ϕ (x) 在u (i) 上投影的计算式。若将ϕ (x) 在m个特征向量上的投影值组成矢量, 则可得
在实际应用中, 可根据不同情况选定m值, m也称为KPCA方法的主分量数。分类可基于式 (16) 给出的样本特征进行。
《3 提升KPCA特征抽取效率的算法设计》
3 提升KPCA特征抽取效率的算法设计
《3.1提高KPCA方法特征抽取效率的思路》
3.1提高KPCA方法特征抽取效率的思路
KPCA算法认为特征空间中的特征向量位于ϕ (x1) , ϕ (x2) , …, ϕ (xN) 张成的子空间中, 特征抽取由式 (16) 规定。式 (16) 表明, 为了得出一个样本在特征空间的每一个特征分量, 均需计算该样本与所有训练样本间的核函数, 并做累加。若训练样本集较大, 特征抽取会对应很大的计算量, 使得基于KPCA的特征抽取效率较低, 其他核方法也面临这一问题。而在一些实时性要求很强的应用中, 算法的高效性是必须考虑的重要因素。鉴于此, 提升KPCA方法特征抽取效率很有重要意义。
假设, 在特征空间中训练样本集中一部分样本的线性组合即可较好地表示主分量 (或者称逼近主分量) 。换个角度分析, 虽然所有样本的线性组合可准确描述式 (15) 中的特征向量u (i) ;但可认为特征空间中不同样本在该线性组合中的重要性不完全相同, 其中一部分样本的贡献较大, 而另一些则相反。假如能从所有样本中找出比较重要的那部分样本, 并以其线性组合的形式给出特征空间中主分量的近似表示式, 则可减少基于KPCA的特征抽取的计算代价。相似的思路曾在KFD (核Fisher鉴别分析) 中得到很好的应用
根据PCA方法的特点, 提出按照相应特征值的大小判断训练样本的重要程度, PCA方法中特征值越大, 相应主分量对原数据的描述能力越强, 由此抽取出的特征包含原数据的信息越多。
假设
称ϕ (xj (0) ) 为特征空间中的节点。令α (i) =[α1 (i) α2 (i) … αN (m) ]T。此时式 (12) 相应变形为
其中
将式 (18) 对α (i) 求导, 可得广义特征方程
K2可逆条件下, 令 λ′=Nλi, 该特征方程可改写为如下等价形式
若K2非可逆, 则可采用 (K2+μI) -1K1 (K1) Tα=λ′iα求解α, 其中I为单位矩阵, μ为正常数。
《3.2算法设计》
3.2算法设计
Step 1 选出第一个节点:
对单个训练样本xi, i=1, 2, …, N, 首先计算相应K1, K2。根据上面相应公式可知, 在该步骤中, K2为一数量值, K1 (K1) T也为一数量值。计算λi=K1 (K1) T/K2。将对应最大λi 的样本作为第一个节点, 并记为x1 (0) 。将对应x1 (0) 的K1, K2分别记为K1 (0) , K2 (0) 。
Step 2 选出第二个节点:
称
为样本xj (xj≠x1 (0) ) 的核向量, 且与x1 (0) , xj对应的矩阵K1, K2分别为
计算相应特征方程式 (19) 的特征值λ1, λ2, 令v=λ1+λ2。考察完所有满足条件的样本后, 将对应最大v值的样本选作第二个节点, 并记为x2 (0) 。将x1 (0) , x2 (0) 对应的矩阵K1, K2分别记为K1 (0) , K2 (0) 。
Step 3 选出第三个节点:
令样本x1 (0) , x2 (0) , xj (xj≠x1 (0) , x2 (0) ) 对应矩阵K1, K2为
其中 (kj (2) ) =[k (xj, x1 (0) ) k (xj, x2 (0) ) ], kj (1) 同式 (21) 。计算相应特征方程式 (19) 的特征值λ1, λ2, λ3, 令v=λ1+λ2+λ3。考察完所有满足条件的样本后, 将对应最大v值的样本选作第三个节点, 并记为x3 (0) 。将x1 (0) , x2 (0) , x3 (0) 对应的矩阵K1, K2分别记为K1 (0) , K2 (0) 。
Step s 选出第s个节点:
假设 已有s-1个节点x1 (0) , x2 (0) , …, xs-1 (0) 被选出, 与其对应的矩阵K1, K2分别记为K1 (0) , K2 (0) 。对样本xj (xj≠x1 (0) , x2 (0) , …, xs-1 (0) ) 仍令
其中 (kj (2) ) =[k (xj, x1 (0) ) k (xj, x2 (0) ) … k (xj, xs-1 (0) ) ], kj (1) 同式 (21) 。计算相应特征方程式 (19) 的所有特征值λ1, λ2, …, λs。若s≤p, 令v=λ1+λ2+ … +λs;若s>p, 令v=λ1+λ2+ … +λp (p为主分量分析中选取的特征向量数目) 。考察完所有满足条件的样本后, 将对应最大v值 (记为vs) 的样本选作第s个节点, 并记为xs (0) 。将 x1 (0) , x2 (0) , …, xs (0) 对应的矩阵K1, K2分别记为K1 (0) , K2 (0) 。重复该步骤, 当条件s≥Nr (r为小于1的系数, N为训练样本总数) 满足时终止节点的选择过程。
节点选择完毕后, 特征空间中样本ϕ (x) 的特征抽取可按下式进行
《4 实验》
4 实验
实验在4个基准数据集上进行。每个数据集被随机地分成了100部分 (S除了plice除了数据集只包含20部分外) , 每部分又分别包含训练样本子集与测试样本子集。实验采用高斯型核函数 k (x, y) =exp (-‖x-y‖2/2σ2) 。每次实验中, 将σ2取为第一个训练样本子集协方差矩阵F-范数的二次方。在第一个训练样本子集上进行训练, 然后对所有测试样本子集进行分类。除了关于数据集Splice的实验中r取0.25外, 其他数据集的r=0.5。对测试样本的分类使用最小距离分类器。
表1与表2分别给出了KPCA与IPKCA在4个基准数据集上的实验结果。实验得出的特征抽取时间显示, 改进的KPCA方法的特征抽取效率大大高于KPCA方法。对4个数据集的分类结果显示, 在Diabetis与Cancer两个数据集上, 基于两类方法的分类错误率相当; 在Banana数据集上, 基于改进的KPCA方法的分类错误率略高于基于KPCA方法的分类错误率;在训练数据多达1 000的数据集Splice上, 基于改进的KPCA方法的分类错误率明显低于KPCA方法。需要说明的是, 错误率一项中的2个数据分别为平均分类错误率与分类错误率标准差。
Table 1 KPCA experimental result on benchmark datasets
《表1》
主分量数 | 错误率 | 训练样本总数 | 特征抽取 时间/s | |
Splice | 100 | 25.5±2.6 | 1 000 | 864 |
90 | 24.7±2.5 | 832 | ||
80 | 24.0±2.4 | 801 | ||
70 | 21.8±2.2 | 778 | ||
Diabetis | 100 | 11.5±2.8 | 468 | 238 |
90 | 11.7±2.8 | 212 | ||
80 | 11.5±2.8 | 202 | ||
70 | 11.8±2.9 | 191 | ||
Banana | 100 | 13.8±0.2 | 400 | 3 128 |
90 | 13.8±0.2 | 2 983 | ||
80 | 13.8±0.2 | 2 908 | ||
70 | 13.8±0.2 | 2 825 | ||
Cancer | 70 | 9.0±3.2 | 200 | 25.4 |
60 | 8.5±3.0 | 23.2 | ||
50 | 8.5±3.0 | 22.2 | ||
40 | 9.8±3.3 | 21.8 |
Table 2 Improved PCA experimental result on benchmark datasets
《表2》
主分量数 | 错误率 | 节点数 | 特征抽取 时间/s | |
Splice | 100 | 17.8±1.8 | 250 | 260 |
90 | 17.8±1.8 | 247 | ||
80 | 17.5±1.8 | 230 | ||
70 | 17.6±1.7 | 214 | ||
Diabetis | 100 | 11.4±2.8 | 234 | 140 |
90 | 11.9±2.9 | 125 | ||
80 | 11.6±2.8 | 121 | ||
70 | 12.0±2.9 | 114 | ||
Banana | 100 | 14.1±0.2 | 200 | 1 807 |
90 | 14.2±0.2 | 1 799 | ||
80 | 14.2±0.2 | 1 734 | ||
70 | 14.2±0.2 | 1 688 | ||
Cancer | 70 | 9.2±3.3 | 100 | 15.3 |
60 | 8.6±2.9 | 13.9 | ||
50 | 8.6±2.9 | 13.2 | ||
40 | 8.1±2.9 | 12.7 |
《5 结论》
5 结论
作为一类核方法, KPCA方法在特征抽取中得到了较多的应用。由于KPCA抽取一个样本的特征时, 需计算训练集中所有样本与该样本间的核函数, 特征抽取的效率会随着训练集的增大而减小。另一方面, 实际应用中往往要求系统有较高的特征抽取效率。假定特征空间中KPCA对应的变换轴可由一部分训练样本 (节点) 线性表出, 并设计了一个改进的KPCA (IKPCA) 算法。 IKPCA算法只基于所有节点与某样本间的核函数, 即可抽取该样本特征。因此, IKPCA抽取特征的效率与节点数的多少直接相关, 节点数越少, 特征抽取效率越高。在基准数据集上进行的 KPCA与IKPCA的对比实验显示, IKPCA方法对应较高的特征抽取效率, 而且在此基础上的分类正确率与基于KPCA方法所抽取特征的分类正确率相当。