zoukankan      html  css  js  c++  java
  • UFLDL之PCA与白化

    参考资料:UFLDL教程tornadomeet的博客
    个人代码:github地址

    主成份分析与白化

    PCA

    1、PCA部分在Andrew Ng的Coursera公开课笔记中有涉及,链接点这里
    2、由PCA部分,我们知道:

    sigma = x * x' / m;
    [U,S,V] = svd(sigma);
    xRot = U'* x;
    xTilde = U(:, 1:k)' * x;

    选取U的前k个特征向量,转置后与x进行运算就可以得到PCA分析的结果了。白化是在此基础上进一步的预处理步骤。白化的目的是减少输入的冗余性,即降低特征之间的相关性并使所有特征具有相同的方差。
    实际上,选取特征向量对x进行映射已经消除了不同特征之间的相关性,而方差相同可以通过特征值开根号作为缩放因子来实现,即:(x_{PCAwhite,i} = frac{x_{rot,i}}{sqrt{lambda + varepsilon}}),其中(varepsilon)是为了防止特征值过小而导致得到的结果太大,因此(varepsilon)一般取得很小。此时,U接近于单位矩阵。

    ZCA

    ZCA白化是:(x_{ZCAwhite} = R*x_{PCAwhite}),其中(R)必须满足(RR^T = R^TR = I),实现该变换的矩阵不唯一,为了简便,可以选取(R=U)
    因此:

    xPCAwhite = diag(1./sqrt(diag(S) + epsilon)) * U' * x;
    xZCAwhite = U * diag(1./sqrt(diag(S) + epsilon)) * U' * x;

  • 相关阅读:
    第八章 Libgdx输入处理(7)罗盘
    第六日
    第十日
    第五日
    第七日
    第九日
    第四日
    第三日
    使用EVM进行项目管理时的注意事项
    第八日
  • 原文地址:https://www.cnblogs.com/lity/p/6030594.html
Copyright © 2011-2022 走看看