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