zoukankan      html  css  js  c++  java
  • 机器学习之PCA主成分分析

    前言

               以下内容是个人学习之后的感悟,转载请注明出处~

    简介

      在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性。人们自然希望变量个数较少而得到的

    信息较多。在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反

    映此课题的信息有一定的重叠。主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立

    尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有的信息。

      降维算法有很多,比如PCA、ICA、SOM、MDS、ISOMAP、LLE等,在此不一一列举。PCA是一种无监督降维算法,

    它是最常用的降维算法之一,可以很好地解决因变量太多而复杂性、计算量增大的弊端。

    PCA主成分分析原理

    1、协方差原理

      样本X和样本Y的协方差(Covariance):

                                            

      协方差为正时说明X和Y是正相关关系,协方差为负时X和Y是负相关关系,协方差为0时X和Y相互独立。Cov(X,X)就是

    X的方差(Variance).当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵),方阵的边长是Cn2。比如对于3

    维数据(x,y,z),计算它的协方差就是:

                                                       

    2、SVD分解原理

      若AX=λX,则称λ是A的特征值,X是对应的特征向量。实际上可以这样理解:矩阵A作用在它的特征向量X上,仅仅使得

    X的长度发生了变化,缩放比例就是相应的特征值λ。当A是n阶可逆矩阵时,A与P-1Ap相似,相似矩阵具有相同的特征值。

      特别地,当A是对称矩阵时,A的奇异值等于A的特征值,存在正交矩阵Q(Q-1=QT),使得:

                                                   

      对A进行奇异值分解就能求出所有特征值和Q矩阵。A∗Q=Q∗D,D是由特征值组成的对角矩阵由特征值和特征向量的定

    义知,Q的列向量就是A的特征向量。

    3、PCA原理及实现

      PCA主要通过把数据从高维映射到低维来降低特征维度。如下图所示,但映射的时候要保留尽量多的主要信息。

                            

      PCA的算法步骤如下:

    • 输入数据集x={x(1)x(2)x(3),.....,x(m)}、需要降到K维;
    • 对所有样本进行均值归一化,如右图所示; 
    • 计算协方差矩阵
    • 对协方差矩阵进行奇异值分解
    • 选取最大的前K个特征值对应的特征向量u(1)u(2)u(3),.....,u(k)
    • 输出降维的投影特征矩阵Ureduce={u(1)u(2)u(3),.....,u(k)}
    • 输出降维后的数据集z=UreduceTx

    4、选择降维后的维度K(主成分的个数)

       如何选择主成分个数K呢?先来定义两个概念:

                      

      选择不同的K值,然后用下面的式子不断计算,选取能够满足下列式子条件的最小K值即可。

                                              

      其中t值可以由自己定,比如t值取0.01,则代表了该PCA算法保留了99%的主要信息。当你觉得误差需要更小,

    你可以把t值设的更小。上式还可以用SVD分解时产生的S矩阵来表示,如下面的式子:

                                                           

      注意1:虽然PCA有降维的效果,也许对避免过拟合有作用,但是最好不要用PCA去作用于过拟合。

      注意2:在训练集中找出PCA的主成分,(可以看做为映射 mapping),然后应用到测试集和交叉验

                  证集中。而不是对所有数据集使用PCA然后再划分训练集,测试集和交叉验证集。

    以上是全部内容,如果有什么地方不对,请在下面留言,谢谢~

  • 相关阅读:
    批量插入测试脚本
    Show Profile分析sql语句的资源消耗
    慢查询日志
    ORDER BY优化
    Join查询
    Explain(执行计划)分析
    索引
    MySQL中的DML(数据操作语言)和DQL(数据查询语言)
    MySQL中的DDL(数据定义语言)和DCL(数据控制语言)
    MySQL架构体系介绍
  • 原文地址:https://www.cnblogs.com/steed/p/7454329.html
Copyright © 2011-2022 走看看