? ?? 為什么要對數據進行降維?
? ? 在機器學習或者數據挖掘中,我們往往會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.039268456 1.2736824 0.5169038 -0.039268456 0.18800403 -0.32171276 -0.11798121 1.2736824 -0.32171276 3.1131794 1.2963874 0.5169038 -0.11798121 1.2963874 0.5824143 -------------------------------------------- 特征值矩陣: 0.023683 0.000000 0.000000 0.0000000.000000 0.078524 0.000000 0.0000000.000000 0.000000 0.242244 0.0000000.000000 0.000000 0.000000 4.224841-------------------------------------------- 特征向量矩陣: -0.32 -0.58 -0.66 0.360.32 0.60 -0.73 -0.080.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.6412.796 -5.1452.622 -5.1772.765 -5.0042.783 -5.6493.231 -6.0632.690 -5.2332.885 -5.4852.623 -4.7442.837 -5.2083.005 -5.9672.898 -5.3362.724 -5.0872.286 -4.8112.868 -6.5013.127 -6.6592.889 -6.1332.863 -5.6343.312 -6.1942.924 -5.8353.201 -5.7132.968 -5.7552.295 -5.4563.208 -5.4203.155 -5.2843.003 -5.1763.042 -5.4532.949 -5.6892.872 -5.6342.878 -5.1252.923 -5.1173.101 -5.7332.864 -6.1352.914 -6.4152.837 -5.2082.644 -5.3922.886 -5.9222.837 -5.2082.530 -4.8342.921 -5.5512.741 -5.5862.659 -4.3822.513 -4.9803.106 -5.5113.303 -5.7572.796 -5.0722.974 -5.8252.671 -5.0942.969 -5.9012.807 -5.4306.796 -6.0006.444 -5.6346.975 -5.8195.692 -4.4896.598 -5.3906.152 -4.8976.607 -5.5994.760 -4.3146.555 -5.5445.501 -4.5945.000 -4.0526.022 -5.2125.774 -4.7676.495 -5.1905.336 -5.0636.439 -5.7836.171 -4.9635.746 -4.9836.454 -4.7735.555 -4.7336.628 -5.2315.868 -5.2486.808 -4.9876.432 -5.1326.225 -5.4656.411 -5.6446.842 -5.5597.069 -5.5826.324 -5.1525.204 -4.9505.441 -4.6125.319 -4.6375.646 -5.0036.890 -4.8946.099 -4.8316.319 -5.5106.732 -5.7236.324 -4.9445.757 -5.0485.676 -4.6355.974 -4.6456.402 -5.2815.740 -4.9124.804 -4.3065.867 -4.8125.842 -5.1045.887 -5.0236.153 -5.3344.603 -4.5635.809 -4.9688.043 -5.3036.925 -4.7408.128 -5.6577.482 -5.1347.861 -5.2738.908 -5.8626.031 -4.1238.443 -5.6677.831 -5.0698.429 -6.0957.173 -5.5577.314 -5.0997.677 -5.5306.856 -4.5387.097 -4.7757.416 -5.4347.461 -5.3559.000 -6.4869.306 -5.5686.810 -4.5547.940 -5.6926.709 -4.7099.011 -5.7716.899 -5.1117.787 -5.6488.126 -5.8736.769 -5.1366.802 -5.1987.634 -5.1047.899 -5.7778.352 -5.6878.744 -6.6857.670 -5.0966.954 -5.1717.291 -4.8138.588 -6.0007.656 -5.4547.416 -5.3636.680 -5.1507.619 -5.6867.826 -5.4977.434 -5.7246.925 -4.7408.075 -5.5917.931 -5.6187.455 -5.5027.037 -4.9407.275 -5.3937.413 -5.4316.901 -5.032
————————————————————————————————————————————————————————
寫博經驗尚淺,請各位多多指教。轉載請注明出處。
?