背景
解决过拟合的方法有:
维度过高会造成维度灾难,维度灾难是造成过拟合的主要原因。在不充足的数据情况下,主要采用降维的方法。
从几何的角度来看维度灾难:
n 维球的体积为:
那么在球体积与边长为 2R 的超立方体比值为:
n→0lim2nRnCRn=0 这就是所谓的维度灾难,在高维数据中,主要样本都分布在立方体的边缘,所以数据集更加稀疏。
降维的方法有:
样本均值&样本方差矩阵
假设数据集X={x1,x2,⋯,xN},xi∈R,i=1,2,⋯,N,记为:
X=(x1,x2,⋯,xN)T=x1Tx2T⋮xNTN×p=x11x21⋮xN1x12x22⋮xN2⋯⋯⋱⋯x1px2p⋮xNpN×p Sample Mean(样本均值):
Xˉp×1=N1N∑i=1xi=N1(x1,x2,⋯,xN)11⋮1N×1=N1XtIN Sample Coveriance(样本协方差):
Sp×p=N1N∑i=1(xi−xˉ)(xi−xˉ)T=N1(x1−x,x2−x,⋯,xN−x)(x1−x,x2−x,⋯,xN−x)T=N1(XT−N1XTIN1IN1T)(XT−N1XTIN1IN1T)T=N1XT(EN−N1IN1I1N)(EN−N1IN1I1N)TX=N1XTHNHNTX=N1XTHNHNX=N1XTHX 这个式子利用了中心矩阵 H的对称性,这也是一个投影矩阵。
H=EN−N1IN1I1NHT=HH2=H...HnH 线性降维-主成分分析 PCA
即,主成分分析中,基本想法是将所有数据投影到一个字空间中,从而达到降维的目标,为了寻找这个子空间,我们基本想法是:
一个中心:对原始特征空间的重构(相关->无关)
两个基本点:最大投影方差,最小重构距离
原来的数据很有可能各个维度之间是相关的,于是希望找到一组 p个新的线性无关的单位基 ui,降维就是取其中的 q 个基。于是对于一个样本 xi,经过这个坐标变换后:
xi^=i=1∑p(uiTxi)ui=i=1∑q(uiTxi)ui+i=q+1∑p(uiTxi)ui 最大投影方差
对于数据集来说,首先将其中心化然后再去上面的式子的第一项,并使用其系数的平方平均作为损失函数并最大化:
J=N1i=1∑Nj=1∑q((xi−x)Tuj)2=j=1∑qujTSuj , s.t. ujTuj=1 由于每个基都是线性无关的,于是每一个 uj 的求解可以分别进行,使用拉格朗日乘子法:
argmaxujL(uj,λ)=argmaxujujTSuj+λ(1−ujTuj) 于是:
∂uj∂L(uj)=2Suj−2λuj)=0有,Suj=λuj uj:S的特征向量,λ:特征值
最小重构距离
下面看其损失的信息最少这个条件,同样适用系数的平方平均作为损失函数,并最小化:
J=N1i=1∑Nj=q+1∑p((xi−x)Tuj)2=j=q+1∑pujTSuj , s.t. ujTuj=1 (原坐标-新坐标)的平方
同样的:
argminujL(uj,λ)=argminujujTSuj+λ(1−ujTuj) 损失函数最小取在本征值剩下的个最小的几个值。数据集的协方差矩阵可以写成 $S=U\Lambda U^T$,直接对这个表达式可以得到本征矢。
λ为最小的,Λ为特征值矩阵
SVD 与 PCoA
下面使用实际训练时常常使用的 SVD(奇异值分解)
直接求得这个 q 个本征矢。
对中心化后的数据集进行奇异值分解:
HX=UΣVT,UTU=EN,VTV=Ep,Σ:N×p HX是中心化后的矩阵
于是:
Sp×p=N1XTHX=N1XTHTHX=N1VΣTΣVT 因此,直接对中心化后的数据集进行 SVD
,就可以得到特征值和特征向量 V,在新坐标系中的坐标就是:
HX⋅V=UΣ 由上面的推导,可以得到另一种方法 PCoA
主坐标分析,定义并进行特征值分解:
TN×N=HXXTH=UΣΣTUT 可知,T和S有相同的eigen value
(特征值)
S:特征分解,得到方向(主成分),然后HXV->坐标
T:特征分解,直接得到坐标(主坐标分析/PCoA)
由于:
TUΣ=UΣ(ΣTΣ) 于是可以直接得到坐标。这两种方法都可以得到主成分,但是由于方差矩阵是 p×p的,而 T是 N×N 的,所以对样本量较少的时候可以采用 PCoA
的方法。
PCA求解步骤:
1. u1
2. 去中心化(xi-x_mean)u1 -> zi
p-PCA
下面从概率的角度对 PCA 进行分析,概率方法也叫 p-PCA。使用线性模型,类似之前 LDA,选定一个方向,对原数据 x∈Rp,降维后的数据为 z∈Rq,q<p。降维通过一个矩阵变换(投影)进行:
线性高斯模型:zxεεEVx∼N(Oq1,Iqq)=Wz+μ+ε∼N(0,σ2Ipp)⊥z(x∣z)=E(Wz+μ+ε)=Wz+μar[x]=Var[Wz+μ+ε]=σ2I∣z∼N(Wz+μ,σ2I) p-PCA问题有两个:
inference:p(z∣x)
learing(求参数):w,μ,σ2
对于这个模型,可以使用期望-最大(EM)的算法进行学习,在进行推断的时候需要求得 p(z∣x),推断的求解过程和线性高斯模型类似。
p(z∣x)=p(x)p(x∣z)p(z)E[x]=E[Wz+μ+ε]=E[Wz+μ]+E[ε]=μVar[x]=Var[Wz+μ+ε] =Var[Wz]+Var[μ]+Var[ε] =W⋅Iqq⋅WT+σ2Ipp =WWT+σ2I有,x∼N(μ,WWT+σ2I) 接下来求z的后验
记,x=(xaxb)有,x∼N[(μaμb)(ΣaaΣbaΣabΣbb)]于是, xb⋅a=xb−ΣbaΣaa−1xa μb⋅a=μb−ΣbaΣaa−1μa Σbb⋅a=Σb⋅a−ΣbaΣaa−1Σa⋅b有, xb⋅a∼N(μb⋅a,Σbb⋅a)又 xb=xb⋅a+Σbb⋅aΣaa−1xa E(xb∣xa)=E(xb⋅a)+Σbb⋅aΣaa−1xa =μb⋅a+Σbb⋅aΣaa−1xa =μb+Σbb⋅aΣaa−1(xa−μa) Var(xb∣xa)=Var(xb⋅a)=Σbb⋅a有, xb∣xa∼N(μb+Σbb⋅aΣaa−1(xa−μa),Σbb⋅a) 由上可知,
记,(xz)∼N[(μ0)(WWT+σ2IΔΔI)]求解,Δ由于Δ=Cov(x,z)=Cov(z,x),求解一个即可Cov(x,z)=E[(x−μ)(z−0)T]=E[(x−μ)zT] =E[(Wz+ε)zT]=E[WzzT+εzT] =E[WzzT]+E[εzT] =WE[zzT]=W⋅I求出后,有(xz)∼N[(μ0)(WWT+σ2IW⋅IW⋅II)]即可套公式求出p(z∣x) 即,p(z∣x)=N(WT(WWT+σ2I)−1(x−μ),I−WT(WWT+σ2I)−1W) 小结
降维是解决维度灾难和过拟合的重要方法,除了直接的特征选择外,还可以采用算法的途径对特征进行筛选,线性的降维方法以 PCA 为代表,在 PCA 中,只要直接对数据矩阵进行中心化然后求奇异值分解或者对数据的协方差矩阵进行分解就可以得到其主要维度。非线性学习的方法如流形学习将投影面从平面改为超曲面。