導航:首頁 > 源碼編譯 > 降維的評價演算法

降維的評價演算法

發布時間:2023-04-07 14:28:08

1. PCA降維演算法

降維是機器學習中很重要的一種思想。在機器學習中經常會碰到一些高維的數據集,它們會佔用計算機的內存和硬碟空間,而且在運算時會減緩速度。
降維能夠使得數據量被壓縮,加快運算速度,減小儲存空間,以及方便可視化的觀察數據特點。

PS:在降維中,我們減少的是特徵種類而不是樣本數量,樣本數量m不變,特徵值數量n會減少。

一種常用的降維演算法是主成分分析演算法(Principal Component Analysis),簡稱 PCA

PCA是通過找到一個低維的線或面,然後將數據投影到線或面上去,然後通過減少投影誤差(即每個特徵到投影的距離的平均值)來實現降維。

上圖是一個包含二維特徵值的樣本集。黑色的叉代表樣本,紅色的線表示找到的低維的線,綠色的叉則是樣本投影在線上的位置。而它們的投影距離就是PCA演算法所需要考慮的。

通過上圖可以看出PCA演算法就是找出一個線,在數學上就是一個向量,使得其他樣本投影到該向量上的距離最小。

推而廣之:
一般情況下,將特徵值的維度從n降到k,就是找到k個向量 ,使得樣本在這些向量上的投影最小。

例如,2維降到1維,就是找到1個向量,即一條線;3維降到2維,就是找到2向量,即一個平面。

數據處理

假設有m個樣本集:
下面需要對數據做一下特徵值縮放或者均值歸一化。
先計算出平均值,然後用樣本值減去平均值。

然後用 替換 , 可以是數據最大值最小值的范圍或者標准差。

演算法部分

我們需要的就是矩陣U,他是一個n維方陣 ,它的每一列就是我們需要的向量:

使用 矩陣可以降維:

那麼要回到原來的維度上去就需要:

這里我們只能得到原來的近似值

與 近似相等,兩者之間的差就是投影誤差,或平均平方映射誤差:

數據的總變差(total variation),即樣本的長度平方的均值:

選擇維度k的最小值的方法:

表示平方投影誤差除以總變差的值小於0.01,用PCA的語言稱之為 保留了99%的差異性
PS:這個值是可以變化的,可以是95%,90%,85%等等。

使用循環驗證的辦法:
初始化 ,然後計算出 ,通過 計算出 和 ,然後通過上方的公式計算出值是不是小於0.01。
如果不是,增加k值,直到獲得最小的k值滿足條件。

快捷辦法

通過奇異值分解的到的矩陣 是一個n維的對角矩陣:

通過這個矩陣可以來計算:

也可以用下面的式子:

這種方法就非常快捷高效。

我們在訓練集上通過PCA獲得矩陣 ,在交叉驗證集和測試集上就不能再使用PCA來計算矩陣了,而是直接用訓練集里的矩陣來映射交叉驗證集和測試集上的數據。

PCA最常用的就是壓縮數據,加速演算法的學習,或者可視化數據。

PCA的錯誤用法,用來防止演算法過擬合
演算法過擬合的原因之一是演算法過於復雜,特徵值的維度過高,使用PCA可以降低維度,看起來會有效,但是實際上效果很差。防止演算法過擬合還是使用正則化的方法來實現。

還有一個注意點。就是在設計一個機器學習演算法時,不用一開始就考慮降維,先在不使用PCA的條件下設計演算法,當演算法出現問題,例如,演算法計算過慢,佔用大量內存...,之後當確定需要使用PCA的時候再繼續使用。

2. 第11章 降維

去掉數據集中關聯性不大和冗餘的數據,確保不出現過度適應的前提下降低計算的成本,需要對特徵進行無損規約,數學上叫降維。廣泛用於模式識別、文本檢索以及機器學習領域,主要分為兩類,特徵提取和特徵篩選,前者是高維數據投影到低維空間,後者是特徵子集代替鋒做原始特徵集,包括特徵分級和特徵篩選,分級是找到優化後的特徵子集。
特徵提取可以分成線性抽取和非線性抽取兩種方法,前者是試圖找到一個仿射空間能夠最好的說明數據分布的變化,後者對高維非線性曲線平面分布的數據非常有效。
線性特徵的抽取方法:

首先設定一些標准,然後挑選出滿足標準的特徵。

演算法首先調用一個權重函數得到每個特徵的權重值,權重評價指標是平均精確度下降 importance.type = 1 ,除了上面用的隨機森林,還可以使用 chi.squared, information.gain 。
然後獲取優化的特徵子集,首先5折交叉驗證評估特徵子集的重要性,爬山搜索演算法從原始特徵集中選出優化的特徵子集,也可以選擇其他演算法,比如 forward.search 。還可以使用caret包進行特徵篩選,據說這個包是個寶呀,包羅萬象。

主成分分析是一種應用非常廣泛的線性降維方法,適合數據集包含非常多的特徵,並且特徵間彼此冗餘(相關的情況)。通過將特徵集縮減成一小部分能代表原始特徵集最主要變化的主要特徵分量,實現高維數據到低維數據空間的映射。

特徵選擇過程中會去掉一些彼此關聯但有價值的特徵,需要在特徵製取過程中考慮將這些特徵綜合到單特徵中,PCA採用正交變換將彼此有關行基叢聯的特徵轉化為主成分,以便我們確定方差趨檔櫻勢。
演算法主要包括以下步驟:1)找到平均向量的數據點;2)計算
協方差矩陣;3)計算特徵向量;4)對特徵向量排序並選擇前k個特徵向量;5)構建特徵向量矩陣;最後,將數據樣本轉換成新的子集。
拓展
princomp 是另一個高不成分分析函數,與上面的 prcomp 採用奇異值分解不同,採用相關矩陣或協方差矩陣的特徵值計算方法,一般更習慣用後者。

以上兩個函數均來自stats包,還可以使用psych包中的principal函數進行:

Kaiser方法、scree(碎石測試)和依據挑選規則使用解釋變數比例都可以。碎石測試的主要目的是將主成分結果以碎石圖方式表達,從圖中找到引起曲線斜率變化最快的因素。

主成分為2時,斜率變化最快。也可以使用nfactors以並行分析非圖形方式作Cattell碎石來測試。

biplot繪制數據與原始特徵在前兩個主成分上的投影圖

biplot繪制數據及原始特徵在前兩個主成分上的投影,農業高,教育和檢查低的省份在PC1上得分高;嬰兒死亡率高,農業低的省份在主成分PC2上得分較高。

多維尺度分析通過圖形方式展示多個對象之間的相似或相異程度距離),多維是指映射到一維、二維或多維空間表達CF全家人相對距離,一般使用一或二維空間。

分成計量和非計量兩類,前者是主要考慮如何保證降維後各對象之間的距離盡可能接近它們在原始空間的距離,後者則假設兩個空間中對象的距離排名已知,而且變換後排名不變。

可以通過將投影維度繪制在一個散點圖中比較MDS和PCA的差異,如果MDS採用歐氏距離,投影維度將與PCA完全一致。

奇異值分解是矩陣分解的一種形式,可以將一個矩陣分解為兩個正交矩陣和一個對角矩陣,原始矩陣可由這三個矩陣相乘得到。可以幫助去掉那些從線性代數角度觀察存在線性相關冗餘的矩陣,可以應用在特徵篩選,圖像處理和聚類等。

SVD是一類分解實數或復數矩陣的常見方法,PCA可以被看成SVD的一種特例:

兩個矩陣基本相同。

[圖片上傳失敗...(image-be0ae8-1639570485003)]
圖像壓縮領域應用最為廣泛的標准測試圖像,花花公子當年的模特圖呀!

不知為啥,讀什麼圖片都是負片呢?先繼續:

ISOMAP屬於流形學習方法,支持線性空間到非線性數據結構的轉換,與MDS類似,它也能夠以圖形方式展現對象之間的相似性或相異性(距離),不過,由於數據採用非線性結構表示,以幾何距離代替MDS中有歐氏距離。

ISOMAP是一種等距映射非線性降維方法,如果將計量MDS方法中數據點間成對的歐氏距離替換成鄰接圖間的測地距離,就可以將ISOMAP當做計量MDS方法的擴展。
演算法分為4步:確定鄰近點,構建鄰接圖,計算最短路徑和MDS分析找到數據間的低維嵌入。

擴展
可以將RnavGraph包將圖形作為數據瀏覽的基礎方式來實現高維數據的可視化。

LLE演算法是PCA演算法的擴展,通過嵌入高維空間內的流形映射到低維空間來實現數據壓縮。ISOMAP是全局性非線性降維,LLE主要是局部母性降維演算法,假設每個數據點可以由k個鄰近點的母性組合構成,映射後能保持原來的數據性質。

LLE是一種非線性降維演算法,基於它我們可以得到高維數據在低維空間保持原有數據鄰近嵌入關系的映射。演算法主要分成三步:計算每個點的k個鄰近,然後計算每個鄰近點的權值,使得每個點都能最優地由其鄰近點組合重構,即殘差和最小。

擴展
還可以選擇RDRTollbox包實現非線性降維,支持ISOMAP和LLE演算法。

3. 數據降維方法介紹(六)

姓名:何源  學號:21011210073  學院:通信工程學院

【嵌牛導讀】線性鑒別分析方法介紹

【嵌牛鼻子】線性鑒別分析(LDA)

【嵌牛提問】線性鑒別分析方法如何降維以及原理是什麼?

【嵌牛正文】

LDA是一種監督學習的降維技術,也就是說它的數據集的每個樣本是有類別輸出的。LDA的思想可以用一句話概括,就是「投影後類內方差最小,類間方差最大」。假設有兩類數據,分別為紅色和藍色,如下圖1所示,這些數據特徵是二維的,希望將這些數據投影到一維的一條直線,讓每一種類別數據的投影點盡可能的接近,而紅色和藍色數據中心之間的距離盡可能的大。

從直觀上可以看出,右圖要比左圖的投影效果好,因為右圖的黑色數據和藍色數據各個較為集中,且類別之間的距離明顯。左圖則在邊界處數據混雜。以上就是LDA的主要思想了,當然在實際應用中,數據是多個類別的,我們的原始數據一般也是超過二維的,投影後的也一般不是直線,而是一個低維的超平面。

LDA演算法既可以用來降維,又可以用來分類,但是目前來說,主要還是用於降維。在進行圖像識別相關的數據分析時,LDA是一個有力的工具。下面總結下LDA演算法的優缺點。

優點:

(1)在降維過程中可以使用類別的先驗知識經驗,而像PCA這樣的無監督學習則無法使用類別先驗知識;

(2)LDA在樣本分類信息依賴均值而不是方差的時候,比PCA之類的演算法較優。

缺點:

(1)LDA不適合對非高斯分布樣本進行降維,PCA也有這個問題;

(2)LDA降維最多降到類別數k-1的維數,如果我們降維的維度大於k-1,則不能使用LDA。當然目前有一些LDA的進化版演算法可以繞過這個問題;

(3)LDA在樣本分類信息依賴方差而不是均值的時候,降維效果不好;

(4)LDA可能過度擬合數據。

4. 機器學習中的降維演算法和梯度下降法

機器學習中有很多演算法都是十分經典的,比如說降維演算法以及梯度下降法,這些方法都能夠幫助大家解決很多問題,因此學習機器學習一定要掌握這些演算法,而且這些演算法都是比較受大家歡迎的。在這篇文章中我們就給大家重點介紹一下降維演算法和梯度下降法。
降維演算法
首先,來說一說降維演算法,降維演算法是一種無監督學習演算法,其主要特徵是將數據從高維降低到低維層次。在這里,維度其實表示的是數據的特徵量的大小,當特徵量大的話,那麼就給計算機帶來了很大的壓力,所以我們可以通過降維計算,把維度高的特徵量降到維度低的特徵量,比如說從4維的數據壓縮到2維。類似這樣將數據從高維降低到低維有兩個好處,第一就是利於表示,第二就是在計算上也能帶來加速。
當然,有很多降維過程中減少的維度屬於肉眼可視的層次,同時壓縮也不會帶來信息的損失。但是如果肉眼不可視,或者沒有冗餘的特徵,這怎麼辦呢?其實這樣的方式降維演算法也能工作,不過這樣會帶來一些信息的損失。不過,降維演算法可以從數學上證明,從高維壓縮到的低維中最大程度地保留了數據的信息。所以說,降維演算法還是有很多好處的。
那麼降維演算法的主要作用是什麼呢?具體就是壓縮數據與提升機器學習其他演算法的效率。通過降維演算法,可以將具有幾千個特徵的數據壓縮至若干個特徵。另外,降維演算法的另一個好處是數據的可視化。這個優點一直別廣泛應用。
梯度下降法
下面我們給大家介紹一下梯度下降法,所謂梯度下降法就是一個最優化演算法,通常也稱為最速下降法。最速下降法是求解無約束優化問題最簡單和最古老的方法之一,雖然現在已經不具有實用性,但是許多有效演算法都是以它為基礎進行改進和修正而得到的。最速下降法是用負梯度方向為搜索方向的,最速下降法越接近目標值,步長越小,前進越慢。好比將函數比作一座山,我們站在某個山坡上,往四周看,從哪個方向向下走一小步,能夠下降的最快;當然解決問題的方法有很多,梯度下降只是其中一個,還有很多種方法。
在這篇文章中我們給大家介紹了關於機器演算法中的降維演算法以及梯度下降法,這兩種方法是機器學習中十分常用的演算法,降維演算法和梯度下降法都是十分實用的,大家在進行學習機器學習的時候一定要好好學習這兩種演算法,希望這篇文章能夠幫助大家理解這兩種演算法。

5. 常用降維方法之PCA 和 LDA

PCA本質上是將方差最大的方向作為主要特徵,並且在各個正交方向上將數據「離相關」,也就是讓它們在不同正交方向上沒有相關性。而方差最大的那個維度是主成分。
PCA是比較常見的線性降維方法,通過線性投影將高維數據映射到低維數據中,所期望的是在投影的維度上,新特徵自身的方差盡量大,方差越大特徵越有效,盡量使產生的新特徵間的相關性越小。
PCA演算法的具體操作為對所有的樣本進行中心化操作,計算樣本的協方差矩陣,然後對協方差矩陣做特徵值分解,取最大的n個特徵值對應的特徵向量構造投影矩陣。

再舉個栗子:

下面舉一個簡單的例子,說明PCA的過程。

假設我們的數據集有10個二維數據(2.5,2.4), (0.5,0.7), (2.2,2.9), (1.9,2.2), (3.1,3.0), (2.3, 2.7), (2, 1.6), (1, 1.1), (1.5, 1.6), (1.1, 0.9),需要用PCA降到1維特徵。

首先我們對樣本中心化,這里樣本的均值為(1.81, 1.91),所有的樣本減去這個均值向量後,即中心化後的數據集為(0.69, 0.49), (-1.31, -1.21), (0.39, 0.99), (0.09, 0.29), (1.29, 1.09), (0.49, 0.79), (0.19, -0.31), (-0.81, -0.81), (-0.31, -0.31), (-0.71, -1.01)。

現在我們開始求樣本的協方差矩陣,由於我們是二維的,則協方差矩陣為:

對於我們的數據,求出協方差矩陣為:

求出特徵值為(0.0490833989, 1.28402771),對應的特徵向量分別為:

由於最大的k=1個特徵值為1.28402771,對於的k=1個特徵向量為 則我們的W=
我們對所有的數據集進行投影 得到PCA降維後的10個一維數據集為:(-0.827970186, 1.77758033, -0.992197494, -0.274210416, -1.67580142, -0.912949103, 0.0991094375, 1.14457216, 0.438046137, 1.22382056)

在上面的PCA演算法中,我們假設存在一個線性的超平面,可以讓我們對數據進行投影。但是有些時候,數據不是線性的,不能直接進行PCA降維。這里就需要用到和支持向量機一樣的核函數的思想,先把數據集從n維映射到線性可分的高維N>n,然後再從N維降維到一個低維度n', 這里的維度之間滿足n'<n<N。

使用了核函數的主成分分析一般稱之為核主成分分析(Kernelized PCA, 以下簡稱KPCA。假設高維空間的數據是由n維空間的數據通過映射ϕ產生。

則對於n維空間的特徵分解:

映射為:

通過在高維空間進行協方差矩陣的特徵值分解,然後用和PCA一樣的方法進行降維。一般來說,映射ϕ不用顯式的計算,而是在需要計算的時候通過核函數完成。由於KPCA需要核函數的運算,因此它的計算量要比PCA大很多。

這里對PCA演算法做一個總結。作為一個非監督學習的降維方法,它只需要特徵值分解,就可以對數據進行壓縮,去噪。因此在實際場景應用很廣泛。為了克服PCA的一些缺點,出現了很多PCA的變種,比如第六節的為解決非線性降維的KPCA,還有解決內存限制的增量PCA方法Incremental PCA,以及解決稀疏數據降維的PCA方法Sparse PCA等。

PCA演算法的主要優點有:

LDA(線性判別分析,Linear Discriminant Analysis)是另一種常用的降維方法,它是有監督的。LDA在模式識別領域(比如人臉識別,艦艇識別等圖形圖像識別領域)中有非常廣泛的應用,因此我們有必要了解下它的演算法原理。這里需要注意的是,此處的LDA與文本主題模型中的LDA(隱含狄利克雷分布,Latent Dirichlet Allocation)並不相同,他是一種處理文檔的主題模型。
LDA是一種監督學習的降維技術,也就是說它的數據集的每個樣本是有類別輸出的。這點和PCA不同。PCA是不考慮樣本類別輸出的無監督降維技術。

LDA的思想可以用一句話概括,就是「投影後類內方差最小,類間方差最大」。
什麼意思呢? 我們要將數據在低維度上進行投影,投影後希望每一種類別數據的投影點盡可能的接近,而不同類別的數據的類別中心之間的距離盡可能的大。
可能還是有點抽象,我們先看看最簡單的情況。假設我們有兩類數據 分別為紅色和藍色,如下圖所示,這些數據特徵是二維的,我們希望將這些數據投影到一維的一條直線,讓每一種類別數據的投影點盡可能的接近,而紅色和藍色數據中心之間的距離盡可能的大。

以上就是使用LDA進行降維的演算法流程。實際上LDA除了可以用於降維以外,還可以用於分類。一個常見的LDA分類基本思想是假設各個類別的樣本數據符合高斯分布,這樣利用LDA進行投影後,可以利用極大似然估計計算各個類別投影數據的均值和方差,進而得到該類別高斯分布的概率密度函數。當一個新的樣本到來後,我們可以將它投影,然後將投影後的樣本特徵分別帶入各個類別的高斯分布概率密度函數,計算它屬於這個類別的概率,最大的概率對應的類別即為預測類別。

LDA用於降維,和PCA有很多相同,也有很多不同的地方,因此值得好好的比較一下兩者的降維異同點。

這點可以從下圖形象的看出,在某些數據分布下LDA比PCA降維較優。

當然,某些某些數據分布下PCA比LDA降維較優,如下圖所示:

LDA演算法既可以用來降維,又可以用來分類,但是目前來說,主要還是用於降維。在我們進行圖像識別圖像識別相關的數據分析時,LDA是一個有力的工具。下面總結下LDA演算法的優缺點。

LDA演算法的主要優點有:

參考文章: 劉建平老師的博客園

6. 降維演算法之LDA(線性判別降維演算法)--有監督

    LDA在模式識別領域( 比如人臉識別,艦艇識別等圖形圖像識別領域 )中有非常廣泛的應用,因此我們有必要了解下它的演算法原理。  

  不同於PCA方差最大化理論, LDA演算法的思想是將數據投影到低維空間之後,使得同一類數據盡可能的緊湊,不同類的數據盡可能的分散 。因此,LDA演算法是一種有監督的機器學習演算法。同時,LDA有如下兩個假設:(1)原始數據根據樣本均值進行分類。(2)不同類的數據擁有相同的協方差矩陣。當然,在實際情況中,不可能滿足以上兩個假設。但是 當數據主要是由均值來區分的時候,LDA一般都可以取得很好的效果 。

    (1)計算類內散度矩陣

    (2)計算類間散度矩陣

    (3)計算矩陣

    (4)對矩陣 進行特徵分解,計算最大的d個最大的特徵值對應的特徵向量組成W。

    (5)計算投影後的數據點

以上就是使用LDA進行降維的演算法流程。實際上LDA除了可以用於降維以外,還可以用於分類。 一個常見的LDA分類基本思想是假設各個類別的樣本數據符合高斯分布 , 這樣利用LDA進行投影後,可以利用極大似然估計計算各個累唄投影數據的均值和方差,進而得到該類別高斯分布的概率密度函數 。當一個新的樣本到來後,我們可以將它投影,然後將投影後的樣本特徵分別帶入各個類別的高斯分布概率密度函數,計算它屬於這個類別的概率,最大的概率對應的類別即為預測類別。LDA應用於分類現在似乎也不是那麼流行。

    class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)

參數:

(1)solver: str類型,默認值為"svd",

    svd:使用奇異值分解求解,不用計算協方差矩陣,適用於特徵數量很大的情形,無法使用參數收縮(shrinkage)。

    lsqr:最小平方QR分解,可以結合shrinkage使用。

    eigen:特徵值分解,可以結合shrinkage使用。

 (2)shrinkage: str or float類型,默認值為None

    是否使用參數收縮

    None:不使用參數收縮

    auto:str,使用Ledoit-Wolf lemma

    浮點數:自定義收縮比例。

   (3)components:int類型,需要保留的特徵個數,小於等於n-1

屬性:

(1)covariances_:每個類的協方差矩陣,shape = [n_features, n_features]

(2)means_:類均值,shape = [n_features, n_feateures]

(3)priors_:歸一化的先驗概率。

(4)rotations_:LDA分析得到的主軸,shape = [n_features, n_component]

(5)scalings_:數組列表,每個高斯分布的方差σ

     特點:

        降維之後的維數最多為類別數-1。所以當數據維度很高,但是類別數少的時候,演算法並不適用 。LDA演算法既可以用來降維,又可以用來分類。但是目前來說,主要還是用於降維。在我們 進行圖像識別相關的數據分析時,LDA是一個有力的工具 。

    優點:

   (1) LDA在樣本分類信息依賴均值而不是方差的時候,比PCA之類的演算法較優 。

   (2)在降維過程中可以使用類別的先驗知識經驗,而像PCA這樣的無監督學習則無法使用類別先驗知識。

    缺點:

    (1)LDA不適合非高斯分布樣本進行降維,PCA也存在這個問題。

    (2)LDA降維最多降到類別數K-1的維數,如果我們降維的維度大於k-1,則不能使用LDA。 當然目前有一些LDA的進化版演算法可以繞過這個問題 。

    (3) LDA在樣本分類信息依賴方差而不是均值的時候,降維效果不好 。

    (4)LDA可能過度擬合數據。

    二者都有 降維 的作用。

1.左 邊是PCA,屬於無監督方法 ,當數據沒有標簽時可以用它。 右邊是LDA,屬於監督學習方法 。考慮了數據的分類信息,這樣數據在低維空間上就可以分類了,減少了很多的運算量。

2. PCA主要是從特徵的協方差角度考慮,追求的是在降維之後能夠最大化保持數據的內在信息 。它不考慮分類信息,因此降低維度後,信息損失降到最低,但分類上可能會變得更加困難。 LDA追求的是降維後的數據點盡可能容易被區分 。降維後的樣本數據在新的維度空間有最大的類間距離和最小的類內方差,數據在低維空間有最佳的可分離性。

3. PCA降維後的維度數目是和數據維度相關的 ,原始數據是n維,那麼PCA後維度為1、2~n維。 LDA後的維度數目是和類別的個數相關的 ,原始數據是n維,一共有C個類別,那麼LDA後維度為1、2~C-1維。

4. PCA投影的坐標系都是正交的 。 LDA關注分類能力,不保證投影到的坐標系是正交的 。

7. (十)PCA降維演算法

主成分分析(Principal components analysis,以下簡稱PCA) 是最重要的降維方法之一。在數據壓縮消除冗餘和數據噪音消除等領域都有廣泛的應用。它可以通過 線性變換 將原始數據變換為一組 各維度線性無關 的表示,以此來提取數據的主要線性分量。需要注意的是,PCA一般只用於線性數據降維,對於非線性數據一般採用KPCA。

降維就是找出數據里最主要的方面,用數據里最主要的方面來代替原始數據,並且希望損失盡可能的小。首先看幾張圖,有一個直觀的認識。
這裡面,把橢圓看成是數據:

基於這個知識,如果我們想對數據進行降維的話,比如圖1的兩個維度的數據降成一維,我們可以選擇保留X1這個維度的數據,因為在這個維度上蘊含的信息量更多。同理,圖2就可以保留x2這個維度的數據。但是,問題來了,圖3應該保留哪個維度的數據呢?答案是保留哪個維度都不好,都會丟失較大的信息量。但是,如果我們把圖3的坐標軸旋轉一下

比較容易看出,圖3在新的坐標軸下就能進行降維了。
所以,第一,變換正確的坐標軸(基);第二,保留方差最大的幾個軸作為主成分,這樣的做法就是PCA的核心思想。

從前文可以看出,理想的坐標軸是要求數據投在新坐標軸後,盡可能的分散,也就是數據的方差最大。然後每次選擇方差最大的軸作為主成分。
將前文2維降1維的例子擴展到更高維度,還有一個問題需要解決,考慮三維降到二維問題。與之前相同,首先我們希望找到一個方向使得投影後方差最大,這樣就完成了第一個方向的選擇,繼而我們選擇第二個投影方向。如果我們還是單純只選擇方差最大的方向,很明顯,這個方向與第一個方向應該是「幾乎重合在一起」,顯然這樣的維度是沒有用的,因為發生了大量的信息重復,起不到降維的作用,因此,應該有其他約束條件——就是正交。 PCA要求軸與軸之間是正交的,也就是不同維度的信息相關性為0。

在表示相關性中,相關系數與協方差是等價的,這里為了方便計算,使用協方差。下面是協方差公式,當協方差為0時,表示兩個特徵a,b線性不相關。

可以發現,當a=b時,協方差公式就變成了方差公式,方差是特殊的協方差。如果運氣更好,特徵a與b的平均數都為0,那麼公式會進一步簡化,得到:

所以說,為了計算方便,PCA降維前,一般都要求將所有特徵屬性中心化,即平均數為0。

因為PCA要求,同一軸內方差最大,不同軸協方差為0,如何把它們放在一塊呢?這里就引入了協方差矩陣的概念:
假設有m個樣本,每個樣本特徵維度是2,每個特徵都經過中心化處理:

我們發現協方差矩陣的對角線是方差,而且是對稱矩陣。方差和協方差都放在了一個矩陣裡面,只需對這個矩陣優化,使它除了對角線的其餘元素都為0,就可以了,美滋滋。

我們知道矩陣乘法,本質上就是一種線性變換的過程。而正交基矩陣的乘法,則是坐標系變換的過程。設原空間的數據為X,協方差矩陣為C,經過正交基矩陣P,得到了新坐標系下的數據Y,即Y=PX。那麼新坐標系下的協方差矩陣D是怎樣的呢?

我們發現,新舊空間的協方差矩陣是有關系的,而且都和變換矩陣P有關系。問題就轉化成了,能不能找到一個矩陣P,使得新空間下的協方差矩陣的非對角線元素都為0.

首先,原始數據矩陣X的協方差矩陣C是一個實對稱矩陣,它有特殊的數學性質:

也就是說,P就是是協方差矩陣的特徵向量單位化後按行排列出的矩陣,其中每一行都是C的一個特徵向量。 如果設P按照中特徵值的從大到小,將特徵向量從上到下排列,則用P的前K行組成的矩陣乘以原始數據矩陣X,就得到了我們需要的降維後的數據矩陣Y
其實,經過數學上的推導的,我們就可以知道,特徵值對應的特徵向量就是理想中想取得正確的坐標軸,而特徵值就等於數據在旋轉之後的坐標上對應維度上的方差。

由於協方差矩陣的維度和特徵相同,所以在進行特徵值分解時,得到的特徵值數目不會超過特徵的數目。

在學習線性代數時,我們都會學矩陣的特徵值分解,我們知道一個方陣A經過 特徵值分解 後就得到 特徵向量 特徵值 了。那麼,這個所謂的特徵值和特徵向量到底是什麼東西呢?
很多人都會說是那個經典的式子:

首先給出概念上的一種解釋。所謂的特徵值和特徵向量,最重要的是理解「特徵」這兩個字,特徵向量翻譯為eigen vector, eigen這個單詞來自德語,本義是在「本身固有的,本質的」。純數學的定義下,並不能很明白地理解到底為什麼叫做特徵值和特徵向量。但是舉一個應用例子,可能就容易理解多了。

在圖像處理中,有一種方法就是特徵值分解。我們都知道圖像其實就是一個像素值組成的矩陣,假設有一個100x100的圖像, 對這個圖像矩陣做特徵值分解,其實是在提取這個圖像中的特徵,這些提取出來的特徵是一個個的向量,即對應著特徵向量。而這些特徵在圖像中到底有多重要,這個重要性則通過特徵值來表示。 比如這個100x100的圖像矩陣A分解之後,會得到一個100x100的特徵向量組成的矩陣Q,以及一個100x100的只有對角線上的元素不為0的矩陣E,這個矩陣E對角線上的元素就是特徵值,而且還是按照從大到小排列的(取模,對於單個數來說,其實就是取絕對值),也就是說這個圖像A提取出來了100個特徵,這100個特徵的重要性由100個數字來表示,這100個數字存放在對角矩陣E中。 在實際中我們發現,提取出來的這100個特徵從他們的特徵值大小來看,大部分只有前20(這個20不一定,有的是10,有的是30或者更多)個特徵對應的特徵值很大,後面的就都是接近0了,也就是說後面的那些特徵對圖像的貢獻幾乎可以忽略不計。

我們知道,圖像矩陣 A 特徵值分解後可以得到矩陣 P 和矩陣 E (特徵值對角矩陣):

我們可以看到,在只取前20個特徵值和特徵向量對圖像進行恢復的時候,基本上已經可以看到圖像的大體輪廓了,而取到前50的時候,幾乎已經和原圖像無異了。明白了吧,這就是所謂的矩陣的特徵向量和特徵值的作用。

所以歸根結底,特徵向量其實反應的是矩陣A本身固有的一些特徵,本來一個矩陣就是一個線性變換,當把這個矩陣作用於一個向量的時候,通常情況絕大部分向量都會被這個矩陣A變換得「面目全非」,但是偏偏剛好存在這么一些向量,被矩陣A變換之後居然還能保持原來的樣子,於是這些向量就可以作為矩陣的核心代表了。於是我們可以說:一個變換(即一個矩陣)可以由其特徵值和特徵向量完全表述,這是因為從數學上看,這個矩陣所有的特徵向量組成了這個向量空間的一組基底。而矩陣作為變換的本質其實不就把一個基底下的東西變換到另一個基底表示的空間中么?

參考:
https://blog.csdn.net/hjq376247328/article/details/80640544
https://blog.csdn.net/hustqb/article/details/78394058
https://blog.csdn.net/woainishifu/article/details/76418176

閱讀全文

與降維的評價演算法相關的資料

熱點內容
單片機的功能模塊 瀏覽:769
安卓手機如何錄制視頻長時間 瀏覽:283
安全問題app哪個好 瀏覽:445
壓縮水會變冰嗎 瀏覽:526
小說配音app哪個靠譜 瀏覽:820
編譯iso 瀏覽:944
照片生成pdf格式 瀏覽:194
病歷轉pdf 瀏覽:835
雲伺服器配硬體 瀏覽:978
伺服器10k什麼意思 瀏覽:21
pdfeditor漢化 瀏覽:884
新科學pdf 瀏覽:746
現在還有c語言編譯嗎 瀏覽:675
哪裡買到單片機 瀏覽:480
linux文件打開數量 瀏覽:510
編譯原理中什麼是l屬性文法 瀏覽:372
硬碟加密時出現的問題 瀏覽:61
如何退域命令 瀏覽:108
看書的app哪裡看 瀏覽:291
伺服器怎麼調大 瀏覽:4