zoukankan      html  css  js  c++  java
  • 无监督学习——降维

    降维算法应用:数据压缩、数据可视化。
    主成分分析(PCA)是最常见的降维算法。
    PCA 中,我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据
    都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点
    的向量,而投射误差是从特征向量向该方向向量作垂线的长度。
    • PCA算法推导

    关于PCA算法推导我觉得还是挺复杂的。之前在做数模比赛时,经常用到PCA算法,但是都是拿来直接套用解决实际问题,根本没有仔细思考原理推导。

    这里总结一下PCA算法原理推导中用到的两个重要原理:

    特征值分解矩阵和SVD分解矩阵。

    1. 特征值分解矩阵原理

    (1) 特征值与特征向量

    如果一个向量v是矩阵A的特征向量,将一定可以表示成下面的形式:

    [公式]

    其中,λ是特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。

    (2) 特征值分解矩阵

    对于矩阵A,有一组特征向量v,将这组向量进行正交化单位化,就能得到一组正交单位向量。特征值分解,就是将矩阵A分解为如下式:

    [公式]

    其中,Q是矩阵A的特征向量组成的矩阵,[公式]则是一个对角阵,对角线上的元素就是特征值。

    2. SVD分解矩阵原理

    奇异值分解是一个能适用于任意矩阵的一种分解的方法,对于任意矩阵A总是存在一个奇异值分解:

    [公式]

    假设A是一个m*n的矩阵,那么得到的U是一个m*m的方阵,U里面的正交向量被称为左奇异向量。Σ是一个m*n的矩阵,Σ除了对角线其它元素都为0,对角线上的元素称为奇异值。 [公式] 是v的转置矩阵,是一个n*n的矩阵,它里面的正交向量被称为右奇异值向量。而且一般来讲,我们会将Σ上的值按从大到小的顺序排列。

    SVD分解矩阵A的步骤:

    (1) 求[公式] 的特征值和特征向量,用单位化的特征向量构成 U。

    (2) 求 [公式] 的特征值和特征向量,用单位化的特征向量构成 V。

    (3) 将 [公式] 或者 [公式] 的特征值求平方根,然后构成 Σ。

    • PCA算法步骤

     

    •  PCA算法目的

    1.减少预测变量个数;

    2.确保这些变量是相互独立的;

    3.提供一个框架来解释结果;

    4.去除噪声;

    • PCA算法优缺点

     优点:

    它是无监督学习,完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。

    用PCA技术可以对数据进行降维,同时对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。

    各主成分之间正交,可消除原始数据成分间的相互影响。

    计算方法简单,易于在计算机上实现。

     

    缺点:

    如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。

    贡献率小的主成分往往可能含有对样本差异的重要信息。

    特征值矩阵的正交向量空间是否唯一有待讨论。

    在非高斯分布的情况下,PCA方法得出的主元可能并不是最优的,此时在寻找主元时不能将方差作为衡量重要性的标准。

  • 相关阅读:
    API网关服务
    技术攻关:从零到精通 https://mp.weixin.qq.com/s/mix-0Ft9G1F5yddNjSzkrw
    如何在团队中推广一项技术 —— 解决Odin一站式微前端的缓存问题
    设计模式的底层逻辑 找到变化,封装变化
    从Android内存到图片缓存优化
    百度C++工程师的那些极限优化(内存篇)
    享元模式
    协同编辑冲突处理算法综述
    大型前端项目内存优化总结
    雪碧图
  • 原文地址:https://www.cnblogs.com/CuteyThyme/p/11361260.html
Copyright © 2011-2022 走看看