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