PCA和核PCA

PCA

当处理高维数据时,需要面临降维,进行特征抽取,PCA是特征抽取的主要方法之一,特征抽取即利用映射的方法,将高维度的样本映射至低维度。PCA适用于非监督的不带标签的样本降维,特别是小样本问题。广义认为,这类样本属性之间的相关性很大,通过映射,将高维样本向量映射成属性不相关的样本向量。实际上,大的特征值表征这个映射向量——或者映射方向,能够使样本在映射后,具有最大的方差。样本在这个方向最发散。通常情况下,有用信息具有较大的方差,噪声有较小的方差。

PCA推导

设有数据集 X=[x1,x2,...,xN]Rd×N
样本均值 μ=1NNi=1xi xixiμ ,设中心化后的样本集为 X=[x1,x2,...,xN]Rd×N
PCA的目的是为了寻找一个投影方向,使数据集投影到新方向上时尽量散开,即有最大方差。
设投影方向为 v (是d×1向量),则 xi v 方向上的表示为
||xi||cosθv||v||= ||xi||<xi,v>||xi||||v||v||v|| = <xi,v>||v||2v = vTxiv
(设 ||v||=1 vTxi 是一个数值,表示向量 xi v 方向上的投影长度)
则样本在方向v上的坐标分别为 vTx1,vTx2,...,vTxN ,现要使它们尽量散开,即方差最大。
新坐标的方差: σ2 = 1NNi=1(vTxi0)2 = 1NNi=1(vTxi)(vTxi) = 1NNi=1(vTxi)(vTxi)T = 1NNi=1vTxixTiv = 1NvTNi=1xixTiv (一个数)
C =Ni=1xixTi= [x1,x2,...,xN]xT1xT2xTN = XXT d×d 矩阵)
σ2 = 1NvTCv
原问题变为 max σ2 = vTCv   s.t ||v||2=vTv=1
用拉格朗日乘数法: L(v,λ) = vTCv - λ(vTv1)
Lv = 2Cv2λv =0 Cv=λv
Lv = 1vTv =0 vTv=1
σ2 = vTCv = vTλv = λvTv = λ
所求方向 v 即为样本协方差矩阵C的最大特征值对应的单位特征向量
若要将样本降到 k 维,则选出样本协方差矩阵C的前 k 个最大特征值对应的单位特征向量组成投影矩阵,将样本投影到k维空间。

PCA步骤

1.特征中心化,即每个样本点减去均值
2.计算样本协方差矩阵
3.计算协方差矩阵的特征值和特征向量
4.选取若干个最大的特征值对应的特征向量作为投影矩阵,将原高维样本映射到低维空间

KPCA

PCA针对线性的情况效果比较好,但对于非线性的情况效果并不理想,为了更好的处理非线性数据,引入非线性映射函数 ϕ ,将原空间中的数据映射到高维空间,在这个高维空间中线性不可分的样本变得线性可分了,接着可再运用PCA思想了。

KPCA推导

设有数据集 X=[x1,x2,...,xN]Rd×N ,设非线性映射函数 ϕ ϕ Rd FD , Dd
将样本空间映射到高维特征空间得 Φ(X) = [ϕ(x1),ϕ(x2),...,ϕ(xN)] RD×N
假设 Φ(X) 的均值为0,即 1NNi=1ϕ(xi)=0
设投影方向为 V (是一个D×1向量),则由以上PCA的分析可知:样本 Φ(X) 在方向 V 上的坐标为VTϕ(x1),VTϕ(x2),...,VTϕ(xN)
则问题转化为 max VTΦ(X)Φ(X)TV   s.t ||V||2=VTV=1
我们现在的问题是要求 Φ(X)Φ(X)T D×D )的最大特征值对应的单位特征向量,但 Φ(X) 是未知的,要怎样解决现在的问题呢?
注意到核矩阵 K=ϕ(x1)Tϕ(x1)ϕ(xN)Tϕ(x1)ϕ(x1)Tϕ(xN)ϕ(xN)Tϕ(xN)
= ϕ(x1)Tϕ(x2)Tϕ(xN)T [ϕ(x1)ϕ(x2)ϕ(xN)] = Φ(X)TΦ(X) N×N )
Kξ = λξ ,即 Φ(X)TΦ(X)ξ = λξ (设 ξ 为单位特征向量)
两边同时左乘 Φ(X) Φ(X)Φ(X)TΦ(X)ξ = λΦ(X)ξ
Φ(X)Φ(X)TΦ(X)ξ = λΦ(X)ξ
则所要求的投影方向为 V =Φ(X)ξ||Φ(X)ξ||= Φ(X)ξξTΦ(X)TΦ(X)ξ = Φ(X)ξξTλξ = Φ(X)ξλξTξ = Φ(X)ξλ
由于 Φ(X) 是未知的,故投影方向是求不出的。
Φ(X) 的投影坐标为 VTΦ(X) = ξTΦ(X)TΦ(X)λ = ξTKλ = ξTKTλ = (Kξ)Tλ = λξTλ = λξT . (即 Φ(X) 中每个向量的投影坐标的第一个分量即第一主成分)
若要将样本降到 k 维,则选出样本协方差矩阵K的前 k 个最大特征值对应的单位特征向量ξ1,ξ2,...,ξk组成投影矩阵 Ξ ,可直接求出原样本在低维空间的坐标 λ1ξT1λ2ξT2λkξTk

思考

上面假设 Φ(X) 的均值为0,若 Φ(X) 的均值不为0,则首先需要对 Φ(X) 进行中心化处理,令中心化处理后的样本为 Ψ(X) = [ψ(x1),ψ(x2),...,ψ(xN)] ,其中 ψ(xi) = ϕ(xi) - 1NNk=1ϕ(xk)
问题转化为 max V~TΨ(X)Ψ(X)TV~   s.t ||V~||2=V~TV~=1
和上面一样,这个问题的解是通过求 K~=Ψ(X)TΨ(X) 的特征值特征向量得到的。
下面来求 K~ij :
K~ij = ψ(xi)Tψ(xj)
= (ϕ(xi)1NNk=1ϕ(xk))T ( ϕ(xj) - 1NNl=1ϕ(xl) )
= ϕ(xi)Tϕ(xj) - 1NNk=1ϕ(xk)Tϕ(xj) - 1NNl=1ϕ(xi)Tϕ(xl) + 1N2Nk=1Nl=1ϕ(xk)Tϕ(xl)
= Kij - 1NNi=1Kij - 1NNj=1Kij + 1N2Ni=1Nj=1Kij
I 是每个元素都为1的N×N的矩阵,则 KI 的第 i 行每个元素为K的第 i 行元素之和,
(KI)ij= Nk=1Kik j=1,2,...,N
IK 的第 j 列每个元素为K的第 j 列元素之和,
(IK)ij= Nk=1Kkj i=1,2,...,N
IKI 的每个元素为 K 的所有元素之和,即(IKI)ij=Ni=1Nj=1Kij
K~=K1NIK1NKI+1N2IKI = (E1NI)K(E1NI)
其中 E N×N单位矩阵

KPCA步骤

1.利用核方程 K(x,y) 计算矩阵 K
2.求矩阵K的前几个最大特征值对应的单位特征向量
3.选取几个最大特征值对应的特征向量带入公式求解投影坐标

常见的核函数

线性核: k(x,y)=xTy+c
多项式核: k(x,y)=axTy+c)d
高斯核: k(x,y)=exp(||xy||22σ2)

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCA(Kernel Principal Component Analysis)是一种非线性的主成分分析方法,用于降维和数据可视化。它通过将数据映射到高维空间中,并在高维空间中找到主成分,来实现降维。与传统的线性PCA不同,PCA使用函数来进行非线性映射,从而更好地捕捉数据中的非线性结构。 在Python中,我们可以使用Scikit-learn库中的KernelPCA类来实现PCA。首先,需要导入相应的模块和数据集,然后创建一个KernelPCA对象,设置函数的类型和参数,接着使用fit_transform方法对数据进行降维,最后可以使用matplotlib库来可视化降维后的数据。 以下是一个使用Scikit-learn库实现PCA的示例代码: ```python from sklearn.decomposition import KernelPCA from sklearn.datasets import make_moons import matplotlib.pyplot as plt # 创建一个半月形状的数据集 X, y = make_moons(n_samples=100, random_state=123) # 初始化一个主成分分析对象 kpca = KernelPCA(kernel='rbf', gamma=15, n_components=2) # 使用KPCA对数据进行降维 X_kpca = kpca.fit_transform(X) # 绘制降维后的数据 plt.scatter(X_kpca[y==0, 0], X_kpca[y==0, 1], color='red', marker='^', alpha=0.5) plt.scatter(X_kpca[y==1, 0], X_kpca[y==1, 1], color='blue', marker='o', alpha=0.5) plt.xlabel('PC1') plt.ylabel('PC2') plt.show() ``` 以上代码中,我们使用了高斯函数(rbf)作为函数,并设置了gamma参数为15。通过fit_transform方法对数据进行降维得到X_kpca,然后使用scatter函数将降维后的数据可视化到平面上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值