机器学习降维之主成分分析

释放双眼,带上耳机,听听看~!

1. 主成分基本思想

主成分基本思想:在主成分分析中,首先对给定数据进行规范化,使得数据每一个变量的平均值维0,方差为1,之后对数据进行正交变换,原来由线性相关变量表示的数据,通过正交变换变成由若干个线性无关的新变量表示的数据。新变量是可能的正交变换中变量的方差的和最大的,方差表示了新变量上信息的大小,将新变量依次称为第一主成分,第二主成分等

通过主成分分析,可以利用主成分近似地表示原始数据,这可理解为发现数据的\'基本结构\',也可以把数据由少数主成分表示,这可理解为数据降维

2. 总体主成分定义

\\(假设X = {(x_1,x_2,x_3,...,x_m)}^T是m维随机变量,其均值向量为\\mu\\),\\[\\mu = E(X) = {(\\mu_1,\\mu_2,...,\\mu_m)}^T\\]

\\(协方差矩阵是\\xi\\),\\[\\xi = cov(x_i,x_j) = E[(x_i-\\mu){(x_j-\\mu)}^T]\\]

\\(考虑由m维随机变量x到m维随机变量y = {(y_1,y_2,...,y_m)}^T的线性变换\\)
\\[y_i = a_i^TX = a_{1i}x_1+a_{2i}x_2+...+a_{mi}x_m\\]

其中\\(a_i^T = (a_{1i},a_{2i},...,a_{mi})\\)

由随机变量的性质可以知道:
\\[E(y_i) = a_{i}^T\\mu\\]
\\[var(y_i) = a_i^T\\xi a_i\\]
\\[cov(y_i,y_j) = a_i^T\\xi a_j\\]

下面给出总体主成分的定义

定义(总体主成分):给定一个上面\\(y_i = a_i^TX = a_{1i}x_1+a_{2i}x_2+...+a_{mi}x_m\\)的线性变换,如果满足下列条件:

  • (1)系数向量\\(a_i^T是单位向量,即a_i^T a_i = 1\\)
  • (2)\\(变量y_i与y_j互不相关,即它们的协方差为0\\)
  • (3)\\(变量y_1是X的所有线性变换中方差最大的;y_2是与y_1不相关的X的所有线性变换中方差最大的;\\) \\(一般地y_i是与y_1,y_2,...,y_{i-1}都不相关的X的所有线性变换中方差最大的;\\) \\(这时分别称y_1,y_2,...,y_m为X的第一主成分、第二主成分、...、第m主成分\\)

3. 样本均值和方差

假设对m维随机变量\\(X={(x_1,x_2,...,x_m)}^T\\)进行n次独立观测,\\(x_1,x_2,...,x_n\\)表示观测样本,其中\\(x_j={(x_{1j},x_{2j},...,x_{mj})}^T\\)表示第j个观测样本,\\(x_{ij}表示第j个观测样本的第i个变量\\)

给定样本矩阵X,可以估计样本均值,以及样本协方差,样本均值向量\\[\\tilde x = \\frac{1}{n}\\sum_{j=1}^nx_j\\]

样本方差\\[S = \\frac{1}{n-1}\\sum_{j=1}^n(x_{ik} - \\tilde x_i)(x_{jk}-\\tilde j)\\]

3.1 样本方差推导

样本方差公式\\[S = \\frac{1}{n-1}\\sum_{i=1}^n(x_i-\\mu_i)^2\\]
扩展开来得到\\[S = \\frac{1}{n-1}[(X-\\frac{1}{n}X^TI_nI_n^T)^T(X-\\frac{1}{n}X^TI_nI_n^T)]\\]
\\[S = \\frac{1}{n-1}X^T(I_n - \\frac{1}{n}I_nI_n^T)(I_n - \\frac{1}{n}I_nI_n^T)X\\]
\\(H = I_n - \\frac{1}{n}I_nI_n^T\\)\\[S = \\frac{1}{n-1}X^THX\\]
其中H为等幂矩阵HH=H和中心矩阵\\(H_n*I_n = 0\\)

4. PCA求解流程

  • (1)数据归一化,均值为0,方差为1
  • (2)计算协方差矩阵
  • (3)计算协方差矩阵的特征值和特征向量
  • (4)将特征值从大到小排序
  • (5)保留最上面的N个特征向量
  • (6)将数据转换到上述N个特征向量构建的新空间中

4.1 python实现PCA

def pca(dataMat, topNfeat=9999999):
    meanVals = mean(dataMat, axis=0)
    meanRemoved = dataMat - meanVals #remove mean
    covMat = cov(meanRemoved, rowvar=0)
    eigVals,eigVects = linalg.eig(mat(covMat))
    eigValInd = argsort(eigVals)            #sort, sort goes smallest to largest
    eigValInd = eigValInd[:-(topNfeat+1):-1]  #cut off unwanted dimensions
    redEigVects = eigVects[:,eigValInd]       #reorganize eig vects largest to smallest
    lowDDataMat = meanRemoved * redEigVects#transform data into new dimensions
    reconMat = (lowDDataMat * redEigVects.T) + meanVals
    return lowDDataMat, reconMat

5. PCA最小平方误差理论推导

PCA求解其实是寻找最佳投影方向,即多个方向的标准正交基构成一个超平面。

理论思想:在高维空间中,我们实际上是要找到一个d维超平面,使得数据点到这个超平面的距离平方和最小

假设\\(x_k\\)表示p维空间的k个点,\\(z_k\\)表示\\(x_k\\)在超平面D上的投影向量,\\(W = {w_1,w_2,...,w_d}\\)为D维空间的标准正交基,即PCA最小平方误差理论转换为如下优化问题\\[z_k = \\sum_{i=1}^d (w_i^T x_k)w_i---(1)\\]
\\[argmin \\sum_{i=1}^k||x_k - z_k||_2^2\\]
\\[s.t. w_i^Tw_j = p(当i==j时p=1,否则p=0)\\]

注:\\(w_i^Tx_k\\)为x_k在w_i基向量的投影长度,\\(w_i^Tx_kw_i\\)为w_i基向量的坐标值

求解:

\\(L = (x_k - z_k)^T(x_k-z_k)\\)

\\(L= x_k^Tx_k - x_k^Tz_k - z_k^Tx_k + z_k^Tz_k\\)

由于向量内积性质\\(x_k^Tz_k = z_k^Tx_k\\)

\\(L = x_k^Tx_k - 2x_k^Tz_k + z_k^Tz_k\\)

将(1)带入得\\[x_k^Tz_k = \\sum_{i=1}^dw_i^Tx_kx_k^Tw_i\\]

\\[z_k^Tz_k = \\sum_{i=1}^d\\sum_{j=1}^d(w_i^Tx_kw_i)^T(w_j^Tx_kw_j)\\]

根据约束条件s.t.得\\[z_k^Tz_k = \\sum_{i=1}^dw_i^Tx_k^Tx_kw_i\\]

\\[L =x_k^Tx_k - \\sum_{i=1}^dw_i^Tx_kx_k^Tw_i\\]

根据奇异值分解\\[\\sum_{i=1}^dw_i^Tx_kx_k^Tw_i = tr(W^Tx_k^Tx_kW)\\]

\\[L =argmin\\sum_{i=1}^kx_k^Tx_k - tr(W^Tx_k^Tx_kW) = argmin\\sum_{i=1}^k- tr(W^Tx_k^Tx_kW) + C\\]

等价于带约束得优化问题:\\[argmaxtr(W^TXX^TW)\\]
\\[s.t. W^TW = I\\]

最佳超平面W与最大方差法求解的最佳投影方向一致,即协方差矩阵的最大特征值所对应的特征向量,差别仅是协方差矩阵\\(\\xi\\)的一个倍数

5.1 定理

\\[argmin\\phi(W,Z|X) = tr((X-W^TZ)^T(X-W^TZ)) = ||X-W^TZ||_F^2\\]
\\[s.t.W^TW=I_q\\]

注:X为(n,p),Z为(n,q),q < p,w为(p,q)

该定理表达的意思也就是平方差理论,将降维后的矩阵通过W^T投影回去,再与X计算最小平方差,值越小说明信息损失越少

\\(\\phi\\)目标函数最小时,W为X的前q个特征向量矩阵且\\(Z=W^TX\\)

以上优化可以通过拉格朗日对偶问题求得,最终也会得到\\[argmaxtr(W^TXX^TW)\\]
\\[s.t. W^TW = I\\]

6. 核PCA推导

核函数:设X是输入空间(\\(R^n\\)的子集或离散子集),又F为特征空间(希尔伯特空间),如果存在一个从X到F的隐射\\[\\phi (X):X -> F\\]使得对所有x,z\\in X,函数K(x,z)满足条件\\[K(x,z) = \\phi (x)\\bullet \\phi (z)\\]

下面推导F投影到的主成分定义的平面,根据F样本方差的特征值分解得(为推导方便去掉前面的(\\(\\frac{1}{n-1}\\))\\[F^THFV_i = \\lambda _i V_i\\]由于H为等逆矩阵,则\\[F^THHFV_i = \\lambda _i V_i\\]

由于想得到F很难,我们换一种思路将求F转移求K上,根据AA^T与A^TA的关系:非零特质值相同,得到\\[HFF^THU_i = \\lambda _iU_i \\]

两边同时乘以\\(F^TH\\)得到\\[F^THHFF^THU_i = \\lambda _iF^THU_i\\]

从上式可以得到\\(F^THU_i\\)\\(F^THHF\\)的特征向量

\\(F^THU_i\\)进行归一化\\[U_{normal} = \\frac{F^THU_i}{{||U_i^THFF^THU_i||}_2}\\]

由于\\(HFF^TH = HKH = \\lambda _i\\),则\\[U_{normal} = \\lambda ^{-\\frac{1}{2}}F^THU_i\\]

F投影到\\(U_normal\\)定义的平面\\[P = F_{center} U_{normal}\\]

\\[P= (F-\\frac{1}{n}\\sum_{i=1}^nF_i)(\\lambda ^{-\\frac{1}{2}}F^THU_i)\\]

\\[P= (F-\\frac{1}{n}F^TI_n)(\\lambda ^{-\\frac{1}{2}}F^THU_i)\\]

\\[P= \\lambda ^{-\\frac{1}{2}}(K - \\frac{1}{n}K(x,x_i))HU_i\\]

附:奇异值分解

奇异值分解是一个能适用于任意矩阵的一种分解方法:\\[A = U\\xi{V}^T\\]

假设A是一个MN的矩阵,那么U就是MM的方阵(里面的向量是正交的,U里面向量为左奇异向量),\\(\\xi\\)为MN的实数对角矩阵(对角线以外的元素都是0,对角线上的元素为奇异值),
\\(V^T\\)是一个N
N的矩阵(里面的向量是正交的,V里面的向量称为右奇异向量)

再结合特征值分解:\\[(A^T\\bullet{A})\\bullet{V_i} = \\lambda{_i}\\bullet{V_i}\\]

上面得到的\\(V_i\\)就是奇异值分解种的右奇异向量,\\(\\lambda{_i}\\)为特征值

此外我们还可以得到:\\[\\sigma{_i} = \\sqrt{\\lambda{_i}}\\\\u_i=\\frac{1}{\\sigma{_i}}AV_i\\]

上面的\\(\\sigma{_i}为奇异值\\)\\(u_i\\)为左奇异向量

常见的做法是将奇异值由大到小排列,在大多数情况下,前10%甚至1%的奇异值的和就占了全部奇异值和的99%以上,也就是说我们可以用前r大的奇异值来近似描述矩阵
\\[A_{m\\times{n}}\\approx{U_{m\\times{r}}\\xi{_{r\\times{r}}}V_{r\\times{n}}^T}\\]

r是一个远小于m,n的数

参考资料:

  • (1)李航老师的
  • (2)
  • (3)

给TA打赏
共{{data.count}}人
人已打赏
随笔日记

从后端到前端之Vue(一)写个表格试试水

2020-11-9 5:56:38

随笔日记

TLS示例开发-golang版本

2020-11-9 5:56:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索