数据降维技术——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步骤:
- 获取n行m列原始数据,写成n*m的矩阵形式;
- 数据中心化。即把每个属性的均值处理设为0(下面木羊将给出自己编写的源代码,木羊的数据用列代表属性,在该步骤中,就把每列的均值都设置为0)。
- 根据中心化后的矩阵求协方差矩阵。协方差有三种值,0表示属性之间相互独立,没有影响;正值表示属性是正相关的关系,若属性A和属性B是正相关关系,则A增加B也增加,A减小B也减小;负值表示属性是负相关的关系,若属性C和属性D是负相关关系,则C增加D减小,C减小D增加。所以,协方差矩阵也可以理解为相关系数矩阵,表示属性间的相关程度。
- 根据协方差矩阵求特征值矩阵。特征值矩阵只有对角线上的元素有值,上三角和下三角元素都为0.
- 根据特征值矩阵求对应的特征向量。
- 对特征值矩阵进行排序,并设定一个阈值,若前i个特征矩阵的和>=设定的阈值,则就有i个主成分,取其对应的特征向量,定为主成分向量矩阵。
- 原始矩阵乘以转置后的主成分向量即得降维后的矩阵。比如,原始数据是150*4的矩阵,在步骤6中取得了2个主成分,那么主成分矩阵就是2*4的矩阵。150*4的矩阵乘以4*2的矩阵,即得150*2的矩阵,体现了降维效果。(选取这个属性较少的数据集是为了方便初学者的理解,在实际工程中,我们的属性值往往不止4个,但降维方法都一样的。)
- DBConnection.java和SelectData.java 实现了从数据库中读取数据存到二维数组中,详细操作可参照上一篇博文http://blog.csdn.net/u013159040/article/details/45605637。
- 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
- 数据降维技术——PCA(主成分分析)
- PYTHON机器学习实战——PCA主成分分析 数据降维
- 深度学习中的降维操作——PCA(主成分分析)
- PCA主成分分析实现降维
- PCA——主成分分析
- 7 主成成分分析(PCA)降维算法
- 聚类算法——主成分分析(PCA)
- 降维——PCA(主成分分析)
- PCA(主成分分析)前叙——LDA
- 机器学习——PCA(主成分分析)
- 机器学习基础——PCA(主成分分析)
- 机器学习算法(降维)—主成分分析(PCA)
- 主成分分析(PCA)
- 主成分分析(PCA)
- 主成分分析(PCA)
- 主成分分析(PCA)
- 主成分分析(PCA)
- 主成分分析(PCA)
- js中判断字符串是否相等,使用 == 或===
- 12个小球一个天平
- 详细解析Java中抽象类和接口的区别
- 正确使用STL-MAP中Erase函数
- 给 UILabel 中的文字增加删除线
- 数据降维技术——PCA(主成分分析)
- memcached-session-manager 实现 tomcat session共享
- IOS UIView跳转
- 【记录】Android按键操作
- 欢迎大家关注我的【白话算法和数据结构】专栏
- 美大学研发WiFO,可提升WiFi10倍速度
- android broadcast
- 关于学生成绩管理的小程序 -- 一个菜鸟
- substr 和subString 的用法及区别