數據預處理--數據降維


數據規約產生更小但保持數據完整性的新數據集。在規約后的數據集上進行數據分析和挖掘將更有效率。

機器學習領域中所謂的降維就是指采用某種映射方法,將原高維空間中的數據點映射到低維度的空間中。降維的本質是學習一個映射函數 f : x->y,其中x是原始數據點的表達,目前最多使用向量表達形式。 y是數據點映射后的低維向量表達,通常y的維度小於x的維度(當然提高維度也是可以的)。f可能是顯式的或隱式的、線性的或非線性的。

目前大部分降維算法處理向量表達的數據,也有一些降維算法處理高階張量表達的數據。之所以使用降維后的數據表示是因為在原始的高維空間中,包含有冗余信息以及噪音信息,在實際應用例如圖像識別中造成了誤差,降低了准確率;而通過降維,我們希望減少冗余信息所造成的誤差,提高識別(或其他應用)的精度。又或者希望通過降維算法來尋找數據內部的本質結構特征。

在很多算法中,降維算法成為了數據預處理的一部分,如PCA。事實上,有一些算法如果沒有降維預處理,其實是很難得到很好的效果的。1

主要是介紹了PCA,還有其他降維算法:LDA(Linear Discriminant Analysis)2,LLE (Locally Linear Embedding) 局部線性嵌入3,拉普拉斯特征映射4

主成分分析–PCA

主成分分析也稱為卡爾胡寧-勒夫變換(Karhunen-Loeve Transform),是一種用於探索高維數據結構的技術。PCA通常用於高維數據集的探索與可視化。還可以用於數據壓縮,數據預處理等。PCA可以把可能具有相關性的高維變量合成線性無關的低維變量,稱為主成分( principal components)。新的低維數據集會經可能的保留原始數據的變量。

PCA將數據投射到一個低維子空間實現降維。例如,二維數據集降維就是把點投射成一條線,數據集的每個樣本都可以用一個值表示,不需要兩個值。三維數據集可以降成二維,就是把變量映射成一個平面。一般情況下,n 維數據集可以通過映射降成k 維子空間。5

在Python中,主成分的函數位於Scikit-Learn下:
sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)

參數說明:

  • n_components
    1. 意義:PCA算法中所要保留的主成分個數n,也即保留下來的特征個數。也可以是設置解釋變量的比例。6如:pca =PCA(n_components=.98)
    2. 類型:int或者string,缺省時默認為None,所有成分保留。賦值為int,比如n_components=1,將把原始數據降到一個維度。賦值為string,比如n_components=’mle’,將自動選取特征個數n,使得滿足所要求的方差百分比。
  • copy
    1. 類型:bool,True或者False,缺省時默認為True
    2. 意義:表示是否在運行算法時,將原始數據復制一份。如果為True,則運行PCA算法后,原始數據的值不會有任何改變。因為是在原始數據的副本上進行運算的。
  • whiten
    1. 類型:bool,缺省時默認為False
    2. 意義:白化,是的每個特征具有相同的方差。

栗子

from sklearn.decomposition import PCA
import numpy as np
import pandas as pd

data=np.random.randn(10,4)

pca=PCA()
pca.fit(data)
pca.components_ #返回模型的各個特征向量
pca.explained_variance_ratio_ #返回各個成分各自的方差百分比(貢獻率)

通過計算累計貢獻率,可以確定找到一個合適的n值,比如累計達到97%時,是前3的值,那么下一步去降維時,確定n_components=3。那么,這3維數據占了原始數據95%以上的信息。7

下面,再重新建立PCA模型。

pca=PCA(3)
pca.fit(data)
low_d=pca.transform(data) #用這個方法來降低維度
pd.DataFrame(low_d).to_excel('result.xlsx') #保存結果
pca.inverse_transform(low_d) #必要時,可以用這個函數來復原數據。

參考


  1. 機器學習降維算法一:PCA(主成分分析算法)
  2. 機器學習降維算法二:LDA(Linear Discriminant Analysis)
  3. 機器學習降維算法三:LLE (Locally Linear Embedding) 局部線性嵌入
  4. 機器學習降維算法四:Laplacian Eigenmaps 拉普拉斯特征映射
  5. 7-dimensionality-reduction-with-pca
  6. reducing-dimensionality-with-pca
  7. 書-Python數據分析與挖掘實戰

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com