zoukankan      html  css  js  c++  java
  • 通过主成分分析方法进行降维

      在高维数据上工作会碰到很多问题:分析很困难,解读起来困难,不能可视化,对于数据的存储也很昂贵。高维数据还是值得研究,比如有些维度是冗余,某一个维度其实是可以被其他几个维度的组合进行解释。正因为某些维度是相关的,所以高维数据内在有更低维的结构。降维方法就是探索数据的内在相关性生成一个压缩后的数据,同时尽可能减少信息的损失。所以降维方法也可以看做是一个压缩方法,类似于jpeg,mp3对于图片和音乐的压缩。

      主成分分析是一种线性降维,由Pearson和Hotelling提出已经有上百年了,仍然最常用的数据压缩和数据可视化的方法,可以用于识别简单的模式,隐藏的因素和高维数据的结构。

    我们知道一个n维向量x到一个单位向量$omega$上的投影是$omega^{T}x$, 假如有d个正交的基坐标形成新的子空间,向量x在这个d维的子空间(坐标系)下的投影变为$z = B^{T}x$,其中$B=[omega_{1}, omega_{2}, ..., omega_{d}]$ 是一个n*d的矩阵,这样n维向量x映射成为了一个d维向量。我们的目标就是找到这么一个合适的B,使得新的向量接近于原向量。

    从方差的角度看,主成分分析可以认为是在子空间里面最大化数据的方差,这样可以让信息保留得尽可能地多。计算$omega^{T}x$的方差, $D(x)=w^{T}(frac{1}{n}sum{x*x^{T}})w = w^{T} Sigma w$,其中$Sigma$是协方差矩阵,约束条件是 $w^{T}*w=1$。通过拉格朗日变换得到拉格朗日对偶问题

    $L=w^{T}(frac{1}{n}sum{x*x^{T}})w + lambda(1-w^{T}w)$, 对w和$lambda$求偏导

    $frac{vartheta L}{vartheta w}=2 w^{T}sum - 2lambda w^{T}$

    $frac{vartheta L}{vartheta lambda}=1 - w^{T}*w$

    让偏导为0,可以得到 $Sigma w = lambda w$, 并且 $D(x) = lambda$,于是x在特征向量w方向上的投影都是方差的极值点,此时方差的大小就是特征值的大小。

  • 相关阅读:
    乐观锁和悲观锁
    [转载] Java实现生产者消费者问题
    [转载] 最全最强解析:支付宝系统架构内部剖析(架构图)
    [转载] Linux五种IO模型
    [转载] Hibernate与 MyBatis的比较
    Spring的69个知识点
    Spring MVC工作原理
    你不知道的JS系列 ( 12 ) - 声明提升
    你不知道的JS系列 ( 11 ) - 块作用域
    你不知道的JS系列 ( 10 ) - 立即执行函数表达式
  • 原文地址:https://www.cnblogs.com/learninglife/p/10282068.html
Copyright © 2011-2022 走看看