python降维之时间类型数据的处理_【Python算法】数据降维概述
數據降維概述
1.數據降維概述
所謂的數據降維就是指采用某種映射方法,將原高維空間中的數據點映射到低維度的空間中,可以解決大規模特征下的數據顯示問題,使得數據集更易使用,降低后續算法的計算,消除噪聲影響并使得結果更易理解。 數據降維的方法有很多,可從線性或非線性角度對其簡單分類。 線性降維是指通過降維所得到的低維數據能保持高維數據點之間的線性關系,主要包括
主成分分析(Principal Component Analysis,PCA)、線性判別分析(Linear Discriminant Analysis,LDA);
非線性降維一類是基于核的,如 KPCA(Kernel PCA);另一類就是通常所說的流形學習:從高維采樣數據中恢復出低維流形結構,即找到高維空間中的低維流形,并求出相應的嵌入映射,如:等距映射(Isomap)、局部線性嵌入(Locally Linear Embedding,LLE)等。 整體來說,線性方法計算塊,復雜度低,但對復雜的數據降維效果較差。
2.有監督和無監督
有監督學習:對具有概念標記(分類)的訓練樣本進行學習,以盡可能對訓練樣本集外的數據進行標記(分類)預測。這里,所有的標記(分類)是已知的。因此,訓練樣本的岐義性低。
無監督學習:對沒有概念標記(分類)的訓練樣本進行學習,以發現訓練樣本集中的結構性知識。這里,所有的標記(分類)是未知的。因此,訓練樣本的岐義性高。聚類就是典型的無監督學習。
3.線性降維
主成分分析(Principal Component Analysis,PCA)是最常用的線性降維方法,是一種無監督的降維方法。它的目標是通過某種線性投影,將高維的數據映射到低維的空間中表示,并期望在所投影的維度上數據的方差最大,以此使用較少的數據維度,同時保留住較多的原數據點的特性。常用于高維數據的降維,例如二維數據集降維就是把點投射成一條線,數據集的每個樣本都可以用一個值表示,同樣也可以利用主成分分析將三維的圖像轉換成二維的。 PCA 追求的是在降維之后能夠最大化保持數據的內在信息,并通過衡量在投影方向上的數據方差的大小來衡量該方向的重要性,但是這樣投影以后對數據的區分作用并不大,反而可能使得數據點揉雜在一起無法區分。
下圖是PCA的投影的一個表示,黑色的點是原始的點,帶箭頭的虛線是投影的向量,pc1表示特征值最大的特征向量,pc2表示特征值次大的特征向量,兩者是彼此正交的,因為這原本是一個2維的空間,所以最多有兩個投影的向量。
4.非線性降維
主成分分析(PCA)和線性判別分析(LDA)能很好地解決呈線性關系的數據的降維,但是對于有非線性結構的數據,這種變換會丟失部分重要信息。事實上,存在非線性關系的數據集并不少見,例如將一把椅子平移,那各個平移點可看做存在線性關系,但將其旋轉時,就變為了非線性關系。這種情況下,通常采用流形學習的方法。
等距映射(Isomap)是一種較為經典的非線性降維算法,其主要目標是找到給定的高維流形對應的低維嵌入,使得高維流形上數據點間的近鄰結構在低維嵌入中得以保持。算法通過將每個數據點和臨近的數據點連接構成圖,用圖論中的dijkstra距離來估計流形的測地距離。其創新之處在于計算高維流形上數據點間距離時,不是用傳統的歐式距離,而是采用微分幾何中的測地線距離,并且找到了一種用實際輸入數據估計其測地線距離的算法(即圖論中的最小路徑逼近測地線距離)。Isomap的優點在于:
(1) 求解過程依賴于線性代數的特征值和特征向量問題,保證了結果的穩健性和全局最優性;
(2) 能通過剩余方差判定隱含的低維嵌入的本質維數;
(3) Isomap方法計算過程中只需要確定唯一的一個參數(近鄰參數k或鄰域半徑e)。在Python中,Scikit-Learn庫提供了用于等距映射的類,其構造函數為:
(4) sklearn.manifold.Isomap(n_neighbors=5,n_components=2,eigen_solver='auto',tol=0,max_iter=None,path_method='auto',neighbors_algorithm='auto', n_jobs=1)。局部線性嵌入(Locally linear embedding,LLE)也是一種非線性降維算法,它能夠使降維后的數據較好地保持原有流形結構,LLE 是許多其它流形學習方法的基礎。LLE 算法認為每一個數據點都可以由其近鄰點的線性加權組合構造得到。算法的主要步驟分為三步:
(1) 尋找每個樣本點的 k 個近鄰點;
(2) 由每個樣本點的近鄰點計算出該樣本點的局部重建權值矩陣;
(3) 由該樣本點的局部重建權值矩陣和其近鄰點計算出該樣本點的輸出值。 在 Python 中,Scikit-Learn 庫提供了用于局部線性嵌入的類,其構造函數為:
sklearn.manifold.LocallyLinearEmbedding(n_neighbors=5,n_components=2,reg=0.001,eigen_solver='auto',tol=1e-06,max_iter=100,method='standard',hessian_tol=0.0001,modified_tol=1e-12,neighbors_algorithm='auto',random_state=None, n_jobs=1)。
通過修改參數method可以設置局部線性嵌入的具體版本,如使用標準的局部線性嵌入則將該參數設為 standard。
5.數據標準化
數據標準化處理是數據挖掘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到數據分析的結果,為了消除指標之間的量綱影響,需要進行數據標準化處理。最基本的標準化方法有:
(1) 中心化:將變量的每一個數值減去該變量的均值;
(2) 縮放:將變量的每一個數值除以該變量的標準差;
(3) 歸一化:對變量的每一個數值做中心化和縮放處理,使得每一個數值代表其與均值相差的標準差的倍數。
在Python中,Scikit-Learn庫提供了用于數據標準化的類,其構造函數為:
sklearn.preprocessing.StandardScaler(copy=True,with_mean=True, with_std=True),通過參數copy可以設置是否在原數據上進行標準化,默認為 True 即標準化后生成新的拷貝,通過參數 with_mean 和 with_std 決定是否中心化和縮放,默認都為 True。
6.常用降維方法簡介
幾種常用的降維方法有:缺失值比率、低方差濾波、高相關濾波、隨機森林/組合樹、主成分分析、反向特征消除、前向特征構造。
(1) 缺失值的比率
數據列如果存在太多的缺失值是不可能有太多的有用信息,因此設定一個閾值,如果數據列缺失的數據大于閾值時將數據列刪除。設定的閾值越大,刪除的數據列越多隨之維度減少的幅度也越大。
(2) 低方差過濾
和缺失值比率很相似,數據列中的數據很小的變動即方差過小時(低于預先設定的閾值)刪除數據列。特別注意的是:方差是依賴于范圍的,因此在應用該方法前對數據正則化處理。
(3) 高相關過濾
數據列中有相似趨勢往往也存在著相似的信息,這種情況下往往一個數據列就可以參與機器學習的模型的建立了,因此我們需要計算數值列之間的相關系數和標稱列之間的皮爾遜積矩系數和皮爾遜卡方值,雙列的相關系數高于設定的閾值時可以減少到只有一個。提醒一下:相關量比較敏感,因此列的歸一化需要一個相對有意義的相關性比較。
(4) Random Forests/Ensemble Trees
決策樹的 Ensemble 也成為 RF(隨機森林),除了在做有效的分類器很有用外,在特征選擇方面也很有效果。一種降維的方法是針對目標屬性生成一個大的和構造的樹,然后使用每個屬性的使用統計數據發現大多數信息的特征子集。可以生成大量層次很低的樹(2 層),與每棵樹正在訓練總額的一小部分數量的屬性。如果一個屬性經常被選為最佳的,它是最有可能被保留的一個有效特征。在 RF 中分數計算的隨機屬性的使用統計數據告訴我們——相對于其他屬性——這是最有預測力的屬性。
(5) PCA(主成分分析)
主成分分析(PCA)是一種正交統計過程,將一個數據集的原始 n 坐標轉換成一個新的 n 組坐標(叫做主成分)。轉化的結果,第一個主成分具有最大可能的方差,在正交于(不相關)先前的主成分的限制條件下,每個成功轉化后的成分都具有最高可能的方差。只保留第一個 m < n 成分降低了數據的維度,同時保留大部分的數據信息也就是變化的數據。注意, PCA 轉化對原始變量的變化比例很敏感。數據列(維度)范圍在應用 PCA 之前需要正則化;同時也要注意新的坐標系(PCs)不再是真正的系統變量了;PCA 在應用到你的數據集產生新的維度時也就失去了它的可解釋性,如果結果的可解釋性對于你的數據分析很重要,那么在針對你的項目分析時,PCA 不能作為你的首要選擇轉化方法。
(6) 反向特征的消除
這個方法中,在給定的迭代次數下選定的分類算法對 n 個輸入特征進行訓練,然后每次刪除一個輸入特征用相同的模型對剩下的 n-1 個輸入特征訓練 n 次,刪除的輸入特征在錯誤率上已產生最小的增長應該就將其刪除,留給將剩余的 n-1 個輸入特征。分類器接著使用 n-2 個特征作為輸入,等等…每次迭代 k 產生一個模型訓練 n-k 特征和一個出錯率 e(k);選擇一個最大可容許的錯誤率,我們定義的最小數量的特性必須達到所選的機器學習算法的分類器的性能。
(7) 正向特征的構建
這種方法和反向特征消除方法具有相反的處理過程。剛開始只處理一個特征,然后逐步每次添加一個特征,也就是說輸入特征即特征維度在分類器的性能上產生最大的增加。就這兩種算法而言,計算特別耗時而且計算量也特別大,它們實際上只適用于一個數據集已經相對具有較少的輸入列(特偵維度)。
除了上面談到的幾種方法外,隨機推測、NMF、自動編碼器、卡方檢驗或信息增益、多維度等級法、一致性分析、因子分析、聚類和貝葉斯模型在數據降維上表現也不錯。
總結
以上是生活随笔為你收集整理的python降维之时间类型数据的处理_【Python算法】数据降维概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAD可以用数位板吗?矢量图有必要用数位
- 下一篇: Shell之MP3播放器