原始数据通常具有较高的维数导致维数灾难,通过降维(Dimensionality reduction)可以消除数据冗余与数据噪声,降低算法的计算开销,使得数据更加易用,结果更加易懂。

1. 主成分分析

主成分分析(PCA,Principal Component Analysis)将数据从原来的坐标系转换到新的坐标系,新坐标系的选择由数据本身决定。

1.1 问题定义

nn维正交空间中,坐标系Wn={w1,w2,...,wn}W_n=\{w_1,w_2,...,w_n\},其中ww是标准正交基,即w2=1,wiTwj=0||w||_2=1, w_i^Tw_j=0

mm个样本数据(x(1),x(2),...,x(m)),i=1mx(i)=0(\boldsymbol x^{(1)},\boldsymbol x^{(2)},...,\boldsymbol x^{(m)}),\sum\limits_{i=1}^{m}x^{(i)}=0(已中心化)。

其中x(i)=(x1(i),x2(i),...,xn(i))Ti=1,2,...,m\boldsymbol x^{(i)} = (x_1^{(i)}, x_2^{(i)}, ...,x_n^{(i)})^{T},i={1,2,...,m}

mm个数据的维度从nn维降到nn'维(通常由用户指定),新的坐标系W={w1,w2,...,wn}W = \{w_1,w_2,...,w_{n'}\}

样本点x(i)\boldsymbol x^{(i)}在新的nn'维坐标系中投影:
z(i)=(z1(i),z2(i),...,zn(i))T,    i=1,2,...,m\boldsymbol z^{(i)} = (z_1^{(i)}, z_2^{(i)},...,z_{n'}^{(i)})^T, \;\; i={1,2,...,m}其中zj(i)=wjTx(i),    i=1,2,...,m,j=1,2,...,nz_j^{(i)} = w_j^T \boldsymbol x^{(i)},\;\; i={1,2,...,m}, j={1,2,...,n'}
xi\boldsymbol x^{i}在低维坐标系中第jj维的坐标。

使用zi\boldsymbol z^{i}恢复原始数据xi\boldsymbol x_{i},则得到的恢复数据
x(i)=j=1nzj(i)wj=Wz(i)\overline{\boldsymbol x}^{(i)} = \sum\limits_{j=1}^{n'}z_j^{(i)}w_j = Wz^{(i)}

1.2 优化目标

降维相当于使用一个超平面对样本进行表达,该超平面具有以下性质

  • 最近重构性:样本点到这个超平面距离足够近
  • 最大可分性:样本点在这个超平面上的投影尽可能分开

(1)基于最小投影距离

希望mmnn'维的数据集尽可能的代表原始数据集,即数据从nn维降到nn'维的损失尽可能小,优化目标为
mini=1mx(i)x(i)22\min \sum\limits_{i=1}^{m}||\overline{\boldsymbol x}^{(i)} - \boldsymbol x^{(i)}||_2^2

i=1mx(i)x(i)22=i=1mWz(i)x(i)22=tr(WTXXTW)+i=1mx(i)Tx(i)\begin{aligned} \sum\limits_{i=1}^{m}||\overline{\boldsymbol x}^{(i)} - \boldsymbol x^{(i)}||_2^2 & = \sum\limits_{i=1}^{m}|| W\boldsymbol z^{(i)} - \boldsymbol x^{(i)}||_2^2 \\ & = -tr( W^TXX^TW) + \sum\limits_{i=1}^{m} \boldsymbol x^{(i)T}\boldsymbol x^{(i)} \end{aligned} 由于i=1mx(i)x(i)T\sum\limits_{i=1}^{m}\boldsymbol x^{(i)}\boldsymbol x^{(i)T}是数据集的协方差矩阵,为常量,优化目标等价于:
minW  tr(WTXXTW)s.t.    WTW=I\begin{aligned}\min_{W}\; & -tr( W^TXX^TW) \\ &s.t. \;\; W^TW=I \end{aligned}

(2)基于最大投影方差

对于任意一个样本x(i)\boldsymbol x^{(i)},在新的坐标系中的投影为WTx(i)W^T \boldsymbol x^{(i)},在新坐标系中的投影方差为WTx(i)x(i)TWW^T\boldsymbol x^{(i)} \boldsymbol x^{(i)T}W
要使所有的样本的投影方差和最大,也就是最大化i=1mWTx(i)x(i)TW\sum\limits_{i=1}^{m}W^Tx^{(i)}x^{(i)T}W的迹,即:
maxW  tr(WTXXTW)s.t.    WTW=I\begin{aligned}\max_{W}\; & tr( W^TXX^TW) \\ &s.t. \;\; W^TW=I \end{aligned}

可以看出最近重构性等价于最大可分性。

1.3 问题求解

使用拉格朗日乘子法,引入拉格朗日函数J(W)=tr(WTXXTW+λ(WTWI))J(W) = -tr( W^TXX^TW + \lambda(W^TW-I))
WW求导,令导数等于0得,XXTW=λWXX^TW=\lambda W

WWXXTXX^Tnn'个特征向量组成的矩阵,而λ\lambdaXXTXX^T的若干特征值组成的矩阵,特征值在主对角线上,其余位置为0。将数据集从nn维降到nn'维时,需要找到最大的nn'个特征值对应的特征向量。

对协方差矩阵XXTXX^T进行特征值分解,将求得的特征值排序:
λ1λ2...λn\lambda_1 \geq \lambda_2 \geq ... \geq \lambda_n取前nn'个特征值对应的特征向量构成解
W=(w1,w2,...wn)W^* = (w_1,w_2,...w_{n'})
实践中,一般对XX进行奇异值分解代替协方差矩阵的特征值分解。

2. SVD

奇异值分解(SVD,Singular Value Decomposition)是以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域,是很多机器学习算法的基石。

2.1 特征分解

AA是一个nn阶矩阵,若λ\lambdann维非零向量x\boldsymbol x满足:Ax=λxA \boldsymbol x=\lambda \boldsymbol xλ\lambda是矩阵AA的一个特征值,x\boldsymbol x是矩阵AA对应特征值λ\lambda的特征向量。
λEA\mid \lambda E - A\mid称为AA的特征多项式,当特征多项式等于0的时候,称为AA的特征方程,特征方程是一个齐次线性方程组,求解特征值的过程就是求解特征方程的解。

矩阵AAnn个特征值λ1λ2...λn\lambda_1 \leq \lambda_2 \leq ... \leq \lambda_n,以及这nn个特征值所对应的特征向量{w1,w2,...wn}\{w_1,w_2,...w_n\},如果这nn个特征向量线性无关,那么矩阵A就可以用下式的特征分解表示:A=WΣW1A=W\Sigma W^{-1}

其中,WW是这nn个特征向量所张成的n×nn×n矩阵,而Σ\Sigma为这nn个特征值为主对角线的n×nn×n阶矩阵。
一般会把WWnn个特征向量标准化,即满足wi2=1||w_i||_2 =1 或者说wiTwi=1w_i^Tw_i =1,此时WWnn个特征向量为标准正交基,满足WTW=IW^TW=I,即WT=W1W^T=W^{-1}, 也就是说WW为酉矩阵。
此时特征分解表达式可以写成:A=WΣWTA=W\Sigma W^T

2.2 SVD

要进行特征分解,矩阵AA必须为方阵,那么如果AA不是方阵,即行和列不相同时,需要使用SVD。
假设矩阵AA是一个m×nm×n的矩阵,定义矩阵AA的SVD为:A=UΣVTA = U\Sigma V^T

其中UU是一个m×mm×m的矩阵,VV是一个n×nn×n的矩阵。UUVV称为A的左/右奇异向量矩阵,都是酉矩阵,即满足UTU=I,VTV=IU^TU=I,V^TV=I
Σ\Sigma是一个m×nm×n的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值,通常将奇异值由大到小排列,这样Σ\Sigma便能由AA唯一确定。
Machine Learning-L20-降维

奇异值与特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快。很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,也可以用最大的kk个的奇异值和对应的左右奇异向量来近似描述矩阵:

Am×n=Um×mΣm×nVn×nTUm×kΣk×kVk×nT\begin{aligned} A_{m \times n} = & U_{m \times m}\Sigma_{m \times n} V^T_{n \times n}\\ \approx & U_{m \times k}\Sigma_{k \times k} V^T_{k \times n} \end{aligned}

其中kk要比nn小很多,即一个大的矩阵AA可以用三个小的矩阵Um×k,Σk×k,Vk×nTU_{m \times k},\Sigma_{k \times k} ,V^T_{k \times n}来表示:
Machine Learning-L20-降维
由于这个重要的性质,SVD可以用于PCA降维,来做数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。

相关文章: