数据降维技术——PCA(主成分分析)

来源:互联网 发布:欧特克软件下载 编辑:程序博客网 时间:2024/05/21 04:25

     为什么要对数据进行降维?

    在机器学习或者数据挖掘中,我们往往会get到大量的数据源,这些数据源往往有很多维度来表示它的属性,但是我们在实际处理中只需要其中的几个主要的属性,而其他的属性或被当成噪声处理掉。比如,13*11的源数据经过将为后变成了13*4的优化数据,那么,中间就减去了7个不必要的属性,选取了4个主要属性成分,简化了计算。

    常用的数据降维方法有:主成分分析、因子分析、独立成分分析。本文仅介绍主成分分析方法。

    主成分分析PCA,Principal Component Analysis),其中的数学原理可参考360图书馆http://www.360doc.com/content/13/1124/02/9482_331688889.shtml

    优点:

    降低数据的复杂性,识别最重要的多个特征。

    缺点:

    不一定需要,且可能损失有用的信息。

    适用类型:

    数值型数据。

    木羊根据自己的学习与理解总结出的PCA步骤:

  1.  获取n行m列原始数据,写成n*m的矩阵形式;
  2. 数据中心化。即把每个属性的均值处理设为0(下面木羊将给出自己编写的源代码,木羊的数据用列代表属性,在该步骤中,就把每列的均值都设置为0)。
  3. 根据中心化后的矩阵求协方差矩阵。协方差有三种值,0表示属性之间相互独立,没有影响;正值表示属性是正相关的关系,若属性A和属性B是正相关关系,则A增加B也增加,A减小B也减小;负值表示属性是负相关的关系,若属性C和属性D是负相关关系,则C增加D减小,C减小D增加。所以,协方差矩阵也可以理解为相关系数矩阵,表示属性间的相关程度。
  4. 根据协方差矩阵求特征值矩阵。特征值矩阵只有对角线上的元素有值,上三角和下三角元素都为0.
  5. 根据特征值矩阵求对应的特征向量。
  6. 对特征值矩阵进行排序,并设定一个阈值,若前i个特征矩阵的和>=设定的阈值,则就有i个主成分,取其对应的特征向量,定为主成分向量矩阵。
  7. 原始矩阵乘以转置后的主成分向量即得降维后的矩阵。比如,原始数据是150*4的矩阵,在步骤6中取得了2个主成分,那么主成分矩阵就是2*4的矩阵。150*4的矩阵乘以4*2的矩阵,即得150*2的矩阵,体现了降维效果。(选取这个属性较少的数据集是为了方便初学者的理解,在实际工程中,我们的属性值往往不止4个,但降维方法都一样的。)
    下面是木羊根据机器学习中鸢尾花iris数据(该数据集的获取请参照木羊前面的博文)写的java程序,程序附件请在博文最后的链接下载。介绍一些代码思路:

  1.     DBConnection.java和SelectData.java 实现了从数据库中读取数据存到二维数组中,详细操作可参照上一篇博文http://blog.csdn.net/u013159040/article/details/45605637。
  2.   PCA.java是具体实现的PCA降维算法。其中用到的第三方的矩阵包jama.jar,下载链接及API参考文档请移步http://download.csdn.net/detail/u013159040/8691187。用到的数据结构有:二维数组、HashMap、TreeMap等,HashMap的key存特征值,value存对应的特征向量,方便索引。TreeMap是排好序的map,方便找主成分。详情请参照木羊的工程代码http://download.csdn.net/detail/u013159040/8691503,如有疑问,欢迎留言互相探讨。下面给出该程序的运行结果:
--------------------------------------------原始数据: 150行,4列5.1 3.5 1.4 0.2 4.9 3.0 1.4 0.2 4.7 3.2 1.3 0.2 4.6 3.1 1.5 0.2 5.0 3.6 1.4 0.2 5.4 3.9 1.7 0.4 4.6 3.4 1.4 0.3 5.0 3.4 1.5 0.2 4.4 2.9 1.4 0.2 4.9 3.1 1.5 0.1 5.4 3.7 1.5 0.2 4.8 3.4 1.6 0.2 4.8 3.0 1.4 0.1 4.3 3.0 1.1 0.1 5.8 4.0 1.2 0.2 5.7 4.4 1.5 0.4 5.4 3.9 1.3 0.4 5.1 3.5 1.4 0.3 5.7 3.8 1.7 0.3 5.1 3.8 1.5 0.3 5.4 3.4 1.7 0.2 5.1 3.7 1.5 0.4 4.6 3.6 1.0 0.2 5.1 3.3 1.7 0.5 4.8 3.4 1.9 0.2 5.0 3.0 1.6 0.2 5.0 3.4 1.6 0.4 5.2 3.5 1.5 0.2 5.2 3.4 1.4 0.2 4.7 3.2 1.6 0.2 4.8 3.1 1.6 0.2 5.4 3.4 1.5 0.4 5.2 4.1 1.5 0.1 5.5 4.2 1.4 0.2 4.9 3.1 1.5 0.1 5.0 3.2 1.2 0.2 5.5 3.5 1.3 0.2 4.9 3.1 1.5 0.1 4.4 3.0 1.3 0.2 5.1 3.4 1.5 0.2 5.0 3.5 1.3 0.3 4.5 2.3 1.3 0.3 4.4 3.2 1.3 0.2 5.0 3.5 1.6 0.6 5.1 3.8 1.9 0.4 4.8 3.0 1.4 0.3 5.1 3.8 1.6 0.2 4.6 3.2 1.4 0.2 5.3 3.7 1.5 0.2 5.0 3.3 1.4 0.2 7.0 3.2 4.7 1.4 6.4 3.2 4.5 1.5 6.9 3.1 4.9 1.5 5.5 2.3 4.0 1.3 6.5 2.8 4.6 1.5 5.7 2.8 4.5 1.3 6.3 3.3 4.7 1.6 4.9 2.4 3.3 1.0 6.6 2.9 4.6 1.3 5.2 2.7 3.9 1.4 5.0 2.0 3.5 1.0 5.9 3.0 4.2 1.5 6.0 2.2 4.0 1.0 6.1 2.9 4.7 1.4 5.6 2.9 3.6 1.3 6.7 3.1 4.4 1.4 5.6 3.0 4.5 1.5 5.8 2.7 4.1 1.0 6.2 2.2 4.5 1.5 5.6 2.5 3.9 1.1 5.9 3.2 4.8 1.8 6.1 2.8 4.0 1.3 6.3 2.5 4.9 1.5 6.1 2.8 4.7 1.2 6.4 2.9 4.3 1.3 6.6 3.0 4.4 1.4 6.8 2.8 4.8 1.4 6.7 3.0 5.0 1.7 6.0 2.9 4.5 1.5 5.7 2.6 3.5 1.0 5.5 2.4 3.8 1.1 5.5 2.4 3.7 1.0 5.8 2.7 3.9 1.2 6.0 2.7 5.1 1.6 5.4 3.0 4.5 1.5 6.0 3.4 4.5 1.6 6.7 3.1 4.7 1.5 6.3 2.3 4.4 1.3 5.6 3.0 4.1 1.3 5.5 2.5 4.0 1.3 5.5 2.6 4.4 1.2 6.1 3.0 4.6 1.4 5.8 2.6 4.0 1.2 5.0 2.3 3.3 1.0 5.6 2.7 4.2 1.3 5.7 3.0 4.2 1.2 5.7 2.9 4.2 1.3 6.2 2.9 4.3 1.3 5.1 2.5 3.0 1.1 5.7 2.8 4.1 1.3 6.3 3.3 6.0 2.5 5.8 2.7 5.1 1.9 7.1 3.0 5.9 2.1 6.3 2.9 5.6 1.8 6.5 3.0 5.8 2.2 7.6 3.0 6.6 2.1 4.9 2.5 4.5 1.7 7.3 2.9 6.3 1.8 6.7 2.5 5.8 1.8 7.2 3.6 6.1 2.5 6.5 3.2 5.1 2.0 6.4 2.7 5.3 1.9 6.8 3.0 5.5 2.1 5.7 2.5 5.0 2.0 5.8 2.8 5.1 2.4 6.4 3.2 5.3 2.3 6.5 3.0 5.5 1.8 7.7 3.8 6.7 2.2 7.7 2.6 6.9 2.3 6.0 2.2 5.0 1.5 6.9 3.2 5.7 2.3 5.6 2.8 4.9 2.0 7.7 2.8 6.7 2.0 6.3 2.7 4.9 1.8 6.7 3.3 5.7 2.1 7.2 3.2 6.0 1.8 6.2 2.8 4.8 1.8 6.1 3.0 4.9 1.8 6.4 2.8 5.6 2.1 7.2 3.0 5.8 1.6 7.4 2.8 6.1 1.9 7.9 3.8 6.4 2.0 6.4 2.8 5.6 2.2 6.3 2.8 5.1 1.5 6.1 2.6 5.6 1.4 7.7 3.0 6.1 2.3 6.3 3.4 5.6 2.4 6.4 3.1 5.5 1.8 6.0 3.0 4.8 1.8 6.9 3.1 5.4 2.1 6.7 3.1 5.6 2.4 6.9 3.1 5.1 2.3 5.8 2.7 5.1 1.9 6.8 3.2 5.9 2.3 6.7 3.3 5.7 2.5 6.7 3.0 5.2 2.3 6.3 2.5 5.0 1.9 6.5 3.0 5.2 2.0 6.2 3.4 5.4 2.3 5.9 3.0 5.1 1.8 --------------------------------------------均值0化后的数据: 150行,4列-0.74333334 0.446 -2.3586667 -0.99866664 -0.9433333 -0.054 -2.3586667 -0.99866664 -1.1433333 0.146 -2.4586666 -0.99866664 -1.2433333 0.046 -2.2586668 -0.99866664 -0.8433333 0.546 -2.3586667 -0.99866664 -0.44333333 0.846 -2.0586667 -0.79866666 -1.2433333 0.346 -2.3586667 -0.8986667 -0.8433333 0.346 -2.2586668 -0.99866664 -1.4433334 -0.154 -2.3586667 -0.99866664 -0.9433333 0.046 -2.2586668 -1.0986667 -0.44333333 0.646 -2.2586668 -0.99866664 -1.0433333 0.346 -2.1586666 -0.99866664 -1.0433333 -0.054 -2.3586667 -1.0986667 -1.5433333 -0.054 -2.6586666 -1.0986667 -0.043333333 0.946 -2.5586667 -0.99866664 -0.14333333 1.346 -2.2586668 -0.79866666 -0.44333333 0.846 -2.4586666 -0.79866666 -0.74333334 0.446 -2.3586667 -0.8986667 -0.14333333 0.746 -2.0586667 -0.8986667 -0.74333334 0.746 -2.2586668 -0.8986667 -0.44333333 0.346 -2.0586667 -0.99866664 -0.74333334 0.646 -2.2586668 -0.79866666 -1.2433333 0.546 -2.7586668 -0.99866664 -0.74333334 0.246 -2.0586667 -0.6986667 -1.0433333 0.346 -1.8586667 -0.99866664 -0.8433333 -0.054 -2.1586666 -0.99866664 -0.8433333 0.346 -2.1586666 -0.79866666 -0.6433333 0.446 -2.2586668 -0.99866664 -0.6433333 0.346 -2.3586667 -0.99866664 -1.1433333 0.146 -2.1586666 -0.99866664 -1.0433333 0.046 -2.1586666 -0.99866664 -0.44333333 0.346 -2.2586668 -0.79866666 -0.6433333 1.046 -2.2586668 -1.0986667 -0.34333333 1.146 -2.3586667 -0.99866664 -0.9433333 0.046 -2.2586668 -1.0986667 -0.8433333 0.146 -2.5586667 -0.99866664 -0.34333333 0.446 -2.4586666 -0.99866664 -0.9433333 0.046 -2.2586668 -1.0986667 -1.4433334 -0.054 -2.4586666 -0.99866664 -0.74333334 0.346 -2.2586668 -0.99866664 -0.8433333 0.446 -2.4586666 -0.8986667 -1.3433334 -0.754 -2.4586666 -0.8986667 -1.4433334 0.146 -2.4586666 -0.99866664 -0.8433333 0.446 -2.1586666 -0.59866667 -0.74333334 0.746 -1.8586667 -0.79866666 -1.0433333 -0.054 -2.3586667 -0.8986667 -0.74333334 0.746 -2.1586666 -0.99866664 -1.2433333 0.146 -2.3586667 -0.99866664 -0.54333335 0.646 -2.2586668 -0.99866664 -0.8433333 0.246 -2.3586667 -0.99866664 1.1566666 0.146 0.94133335 0.20133333 0.5566667 0.146 0.7413333 0.30133334 1.0566666 0.046 1.1413333 0.30133334 -0.34333333 -0.754 0.24133334 0.101333335 0.6566667 -0.254 0.8413333 0.30133334 -0.14333333 -0.254 0.7413333 0.101333335 0.45666668 0.246 0.94133335 0.40133333 -0.9433333 -0.654 -0.45866665 -0.19866666 0.75666666 -0.154 0.8413333 0.101333335 -0.6433333 -0.354 0.14133333 0.20133333 -0.8433333 -1.054 -0.25866666 -0.19866666 0.05666667 -0.054 0.44133332 0.30133334 0.15666667 -0.854 0.24133334 -0.19866666 0.25666666 -0.154 0.94133335 0.20133333 -0.24333334 -0.154 -0.15866667 0.101333335 0.8566667 0.046 0.64133334 0.20133333 -0.24333334 -0.054 0.7413333 0.30133334 -0.043333333 -0.354 0.34133333 -0.19866666 0.35666665 -0.854 0.7413333 0.30133334 -0.24333334 -0.554 0.14133333 -0.09866667 0.05666667 0.146 1.0413333 0.6013333 0.25666666 -0.254 0.24133334 0.101333335 0.45666668 -0.554 1.1413333 0.30133334 0.25666666 -0.254 0.94133335 0.0013333333 0.5566667 -0.154 0.5413333 0.101333335 0.75666666 -0.054 0.64133334 0.20133333 0.95666665 -0.254 1.0413333 0.20133333 0.8566667 -0.054 1.2413334 0.50133336 0.15666667 -0.154 0.7413333 0.30133334 -0.14333333 -0.454 -0.25866666 -0.19866666 -0.34333333 -0.654 0.041333333 -0.09866667 -0.34333333 -0.654 -0.058666665 -0.19866666 -0.043333333 -0.354 0.14133333 0.0013333333 0.15666667 -0.354 1.3413334 0.40133333 -0.44333333 -0.054 0.7413333 0.30133334 0.15666667 0.346 0.7413333 0.40133333 0.8566667 0.046 0.94133335 0.30133334 0.45666668 -0.754 0.64133334 0.101333335 -0.24333334 -0.054 0.34133333 0.101333335 -0.34333333 -0.554 0.24133334 0.101333335 -0.34333333 -0.454 0.64133334 0.0013333333 0.25666666 -0.054 0.8413333 0.20133333 -0.043333333 -0.454 0.24133334 0.0013333333 -0.8433333 -0.754 -0.45866665 -0.19866666 -0.24333334 -0.354 0.44133332 0.101333335 -0.14333333 -0.054 0.44133332 0.0013333333 -0.14333333 -0.154 0.44133332 0.101333335 0.35666665 -0.154 0.5413333 0.101333335 -0.74333334 -0.554 -0.7586667 -0.09866667 -0.14333333 -0.254 0.34133333 0.101333335 0.45666668 0.246 2.2413332 1.3013333 -0.043333333 -0.354 1.3413334 0.70133334 1.2566667 -0.054 2.1413333 0.90133333 0.45666668 -0.154 1.8413334 0.6013333 0.6566667 -0.054 2.0413334 1.0013334 1.7566667 -0.054 2.8413334 0.90133333 -0.9433333 -0.554 0.7413333 0.50133336 1.4566667 -0.154 2.5413334 0.6013333 0.8566667 -0.554 2.0413334 0.6013333 1.3566667 0.546 2.3413334 1.3013333 0.6566667 0.146 1.3413334 0.8013333 0.5566667 -0.354 1.5413333 0.70133334 0.95666665 -0.054 1.7413334 0.90133333 -0.14333333 -0.554 1.2413334 0.8013333 -0.043333333 -0.254 1.3413334 1.2013333 0.5566667 0.146 1.5413333 1.1013334 0.6566667 -0.054 1.7413334 0.6013333 1.8566667 0.746 2.9413333 1.0013334 1.8566667 -0.454 3.1413333 1.1013334 0.15666667 -0.854 1.2413334 0.30133334 1.0566666 0.146 1.9413333 1.1013334 -0.24333334 -0.254 1.1413333 0.8013333 1.8566667 -0.254 2.9413333 0.8013333 0.45666668 -0.354 1.1413333 0.6013333 0.8566667 0.246 1.9413333 0.90133333 1.3566667 0.146 2.2413332 0.6013333 0.35666665 -0.254 1.0413333 0.6013333 0.25666666 -0.054 1.1413333 0.6013333 0.5566667 -0.254 1.8413334 0.90133333 1.3566667 -0.054 2.0413334 0.40133333 1.5566666 -0.254 2.3413334 0.70133334 2.0566666 0.746 2.6413333 0.8013333 0.5566667 -0.254 1.8413334 1.0013334 0.45666668 -0.254 1.3413334 0.30133334 0.25666666 -0.454 1.8413334 0.20133333 1.8566667 -0.054 2.3413334 1.1013334 0.45666668 0.346 1.8413334 1.2013333 0.5566667 0.046 1.7413334 0.6013333 0.15666667 -0.054 1.0413333 0.6013333 1.0566666 0.046 1.6413333 0.90133333 0.8566667 0.046 1.8413334 1.2013333 1.0566666 0.046 1.3413334 1.1013334 -0.043333333 -0.354 1.3413334 0.70133334 0.95666665 0.146 2.1413333 1.1013334 0.8566667 0.246 1.9413333 1.3013333 0.8566667 -0.054 1.4413333 1.1013334 0.45666668 -0.554 1.2413334 0.70133334 0.6566667 -0.054 1.4413333 0.8013333 0.35666665 0.346 1.6413333 1.1013334 0.05666667 -0.054 1.3413334 0.6013333 ---------------------------------------------协方差矩阵: 0.6856935-0.0392684561.27368240.5169038-0.0392684560.18800403-0.32171276-0.117981211.2736824-0.321712763.11317941.29638740.5169038-0.117981211.29638740.5824143--------------------------------------------特征值矩阵:     0.023683    0.000000    0.000000    0.000000    0.000000    0.078524    0.000000    0.000000    0.000000    0.000000    0.242244    0.000000    0.000000    0.000000    0.000000    4.224841--------------------------------------------特征向量矩阵:    -0.32   -0.58   -0.66    0.36    0.32    0.60   -0.73   -0.08    0.48    0.07    0.18    0.86   -0.75    0.55    0.07    0.36--------------------------------------------当前阈值: 0.95取得的主成分数: 2主成分矩阵:    0.362  -0.082   0.857   0.359  -0.657  -0.730   0.176   0.075--------------------------------------------降维后的矩阵:    2.827  -5.641   2.796  -5.145   2.622  -5.177   2.765  -5.004   2.783  -5.649   3.231  -6.063   2.690  -5.233   2.885  -5.485   2.623  -4.744   2.837  -5.208   3.005  -5.967   2.898  -5.336   2.724  -5.087   2.286  -4.811   2.868  -6.501   3.127  -6.659   2.889  -6.133   2.863  -5.634   3.312  -6.194   2.924  -5.835   3.201  -5.713   2.968  -5.755   2.295  -5.456   3.208  -5.420   3.155  -5.284   3.003  -5.176   3.042  -5.453   2.949  -5.689   2.872  -5.634   2.878  -5.125   2.923  -5.117   3.101  -5.733   2.864  -6.135   2.914  -6.415   2.837  -5.208   2.644  -5.392   2.886  -5.922   2.837  -5.208   2.530  -4.834   2.921  -5.551   2.741  -5.586   2.659  -4.382   2.513  -4.980   3.106  -5.511   3.303  -5.757   2.796  -5.072   2.974  -5.825   2.671  -5.094   2.969  -5.901   2.807  -5.430   6.796  -6.000   6.444  -5.634   6.975  -5.819   5.692  -4.489   6.598  -5.390   6.152  -4.897   6.607  -5.599   4.760  -4.314   6.555  -5.544   5.501  -4.594   5.000  -4.052   6.022  -5.212   5.774  -4.767   6.495  -5.190   5.336  -5.063   6.439  -5.783   6.171  -4.963   5.746  -4.983   6.454  -4.773   5.555  -4.733   6.628  -5.231   5.868  -5.248   6.808  -4.987   6.432  -5.132   6.225  -5.465   6.411  -5.644   6.842  -5.559   7.069  -5.582   6.324  -5.152   5.204  -4.950   5.441  -4.612   5.319  -4.637   5.646  -5.003   6.890  -4.894   6.099  -4.831   6.319  -5.510   6.732  -5.723   6.324  -4.944   5.757  -5.048   5.676  -4.635   5.974  -4.645   6.402  -5.281   5.740  -4.912   4.804  -4.306   5.867  -4.812   5.842  -5.104   5.887  -5.023   6.153  -5.334   4.603  -4.563   5.809  -4.968   8.043  -5.303   6.925  -4.740   8.128  -5.657   7.482  -5.134   7.861  -5.273   8.908  -5.862   6.031  -4.123   8.443  -5.667   7.831  -5.069   8.429  -6.095   7.173  -5.557   7.314  -5.099   7.677  -5.530   6.856  -4.538   7.097  -4.775   7.416  -5.434   7.461  -5.355   9.000  -6.486   9.306  -5.568   6.810  -4.554   7.940  -5.692   6.709  -4.709   9.011  -5.771   6.899  -5.111   7.787  -5.648   8.126  -5.873   6.769  -5.136   6.802  -5.198   7.634  -5.104   7.899  -5.777   8.352  -5.687   8.744  -6.685   7.670  -5.096   6.954  -5.171   7.291  -4.813   8.588  -6.000   7.656  -5.454   7.416  -5.363   6.680  -5.150   7.619  -5.686   7.826  -5.497   7.434  -5.724   6.925  -4.740   8.075  -5.591   7.931  -5.618   7.455  -5.502   7.037  -4.940   7.275  -5.393   7.413  -5.431   6.901  -5.032

————————————————————————————————————————————————————————

写博经验尚浅,请各位多多指教。转载请注明出处。

 

0 0
原创粉丝点击