本博客转载自链接,已获得授权。
KPCA-KLPP代码实现
0.引言
传统基于核主成分分析 (Kernel principal component analysis, KPCA) 的数据降维方法在提取有效特征信息时只考虑全局结构保持而未考虑样本间的局部近邻结构保持问题, 本文提出一种改进全局结构保持算法的特征提取与降维方法,改进的特征提取与降维方法将流形学习中核局部结构保持 (Kernel locality preserving projection, KLPP) 的思想融入核主成 分分析的目标函数中, 使样本投影后的特征空间保持原始样本空间的整体结构, 还保持样本空间相似的局部近邻结构, 包含更丰富的特征信息。最后,采用UCI数据集进行降维可视化分析。
1.原理
1.1 KPCA目标函数
PCA的核心是通过投影矩阵A将高维数据降成低维数据,实现数据沿该坐标系的分布方差最大化,能够实现最大化保持数据的全局结构特性,其目标函数如下:
m a x t r ( A ′ K K A ) max tr(A'KKA) maxtr(A′KKA)
1.2 KLPP目标函数
m
i
n
t
r
(
A
′
K
L
K
A
)
;
L
=
D
−
W
;
s
t
.
A
′
K
D
K
A
=
I
min tr(A'KLKA); L=D-W; st.A'KDKA=I
mintr(A′KLKA);L=D−W;st.A′KDKA=I
1.3 KPCA-KLPP原理
m
a
x
t
r
(
l
A
′
K
K
A
−
(
1
−
l
)
A
′
K
L
K
A
)
;
s
t
.
A
′
K
D
K
A
=
I
;
其
中
:
l
是
用
于
平
衡
K
P
C
A
与
K
L
P
P
这
两
个
目
标
函
数
的
权
重
系
数
max tr(lA'KKA-(1-l)A'KLKA);st.A'KDKA=I; 其中:l是用于平衡KPCA与KLPP这两个目标函数的权重系数
maxtr(lA′KKA−(1−l)A′KLKA);st.A′KDKA=I;其中:l是用于平衡KPCA与KLPP这两个目标函数的权重系数
2.方案验证
clc;clear;close all
load wine;fea=double(wine);gnd=wine_labels;
options = [];
options.Metric = 'Euclidean';
options.NeighborMode = 'KNN';
options.k = 5;
options.bSelfConnected = 1;
options.delta=10000;
options.WeightMode = 'HeatKernel';
options.t = 1;
options.ReducedDim = 6;
options.PCARatio = 1;
[W,K] = constructW3(fea,gnd,options);
[eigvector, eigvalue,Y]=KPCAKLPP(fea,W,K,options);
%%
figure
for i=1:max(gnd)
n=find(gnd==i);
plot(fea(n,1),fea(n,2),'*')
hold on
grid on
end
mappedX1=Y;
figure
for i=1:max(gnd)
n=find(gnd==i);
plot3(mappedX1(n,1),mappedX1(n,2),mappedX1(n,3),'*')
hold on
grid on
end
legend('1','2','3')
图1 原始数据可视化
图2 本文方法
3.结论
从图上可以,本文方法聚类效果更好。