zoukankan      html  css  js  c++  java
  • PCA 推导

    写在之前

    时间充裕的话,可以从文末给出的参考链接中观看李正轩博士视频,本文是其讲课资料整理。

    基本概念

    对于给定0均值的训练样本({x_1, x_2, ...x_n} in R ^d), PCA的目的就是在空间(R^d)中,找p(p<d)个向量组成的集合,使其包含训练样本的最大方差。

    可以证明:向量(x_j)在单位向量(v)的投影坐标为(<x_j , v> = v^T x_j)

    投影方差为;

    [sigma ^2 = frac{1}{N} sum _{i=1}^{N}(v^Tx_i- 0)^2 =frac{1}{N} sum _{i=1}^{N}(v^Tx_i)(v^Tx_i)^T \= frac{1}{N} sum _{i=1}^{N}v^Tx_ix_i^Tv = v^T C v ]

    其中$C = frac{1}{N} sum _{i= 1} ^N x_ix_i^T $

    为使投影方差最大:

    [v= argmax_{v in R^d ,||v||=1} (v^TCv) ]

    使用Lagrangian求:

    [f(v, lambda ) = v^T Cv - lambda(v^Tv-1) ]

    [frac {partial f}{partial v} = 2Cv -2 lambda v Rightarrow Cv = lambda v ]

    [frac {partial f}{partial lambda} = v^Tv -1 Rightarrow v^Tv =1 ]

    [v= argmax(v^TCv) = argmax(v^Tlambda v)= argmax(lambda) ]

    找到最大的特征值,对应一个方向下最大的方差;最大的两个特征值,就是两个方向下最大的方差。

    单个数据在k个特征向量的投影坐标:

    [V_k^T x_j =[v_1, v_2, ...v_k]^T x_j ]

    多个数据在k个特征向量的投影坐标:

    [V_k^T X^T =[v_1, v_2, ...v_k]^T [x_1, ...x_n] ]

    算法流程

    1. 数据归一化
    2. 求协方差矩阵C
    3. 求协方差矩阵C的前k个最大的特征向量
    4. 计算投影坐标

    参考文献

    [1]https://www.youtube.com/watch?v=G2NRnh7W4NQ&index=2&list=PLt0SBi1p7xrRKE2us8doqryRou6eDYEOy
    [2]http://www.iis.ee.ic.ac.uk/ComputerVision/docs/lectures/lec1314.pdf

  • 相关阅读:
    CF1324F Maximum White Subtree——换根dp
    bzoj3029 守卫者的挑战
    k8s-pod
    k8s 介绍
    docker-dockerfile
    docker学习
    git
    windows 上git安装及gitlab 连接
    gitlab 配置管理
    gitlab安装/配置/维护
  • 原文地址:https://www.cnblogs.com/hainingwyx/p/6836323.html
Copyright © 2011-2022 走看看