降維與度量學習

 

  1. 降維與度量學習

  2. K近鄰學習

    K近鄰學習(k-Nearest Neighbor)學習是一種經常使用的監督學習方法,其工做機制很是簡單:給定測試樣本,基於某種距離度量找出訓練集中與其最靠近的k個訓練樣本,而後基於這k個"鄰居"的信息來進行預測。一般,在分類任務中可以使用"投票法",即選擇這k個樣本中出現最多的類別標記做爲預測結果;在迴歸任務中可以使用"平均法",即將這k個樣本的實值輸出標記的平均值做爲預測結果;還能夠基於距離遠近進行加權平均或加權投票,距離越近的樣本權重越大。 html

    K近鄰學習屬於"懶惰學習"的一種,它在訓練階段僅僅把樣本保存起來,訓練時間開銷爲零,待收到測試樣本後再進行處理;相對應的,再訓練階段就對樣本進行學習處理的方法,成爲"急切學習"。 算法

  3. 低維嵌入

    k近鄰學習基於一個重要假設:任意測試樣本附近人意小的距離範圍內總能找到一個訓練樣本,即訓練樣本的密度足夠大,或稱爲"密採樣"。然而,這個假設在現實任務中一般很難知足,例如,若是,僅考慮單個屬性,則僅需1000個樣本點平均分佈在歸一化後的屬性取值範圍,便可使得任意測試樣本在其附近0.001距離範圍內總能找到一個訓練樣本。然而,這是在維度爲1 的時候,若是有更多的屬性,則狀況會發生顯著的變化。現實應用中屬性維度常常成千上萬,要知足密採樣條件,則須要不少的樣本數,幾乎是沒法達到的天文數字;此外,不少學習方法涉及到距離計算,而高維空間給距離計算帶來很大的麻煩,例如當維度很高的時候甚至連計算內積都不容易。 機器學習

    事實上,在高維情形下出現的樣本稀疏、距離計算困難等問題,是全部機器學習方法共同面臨的嚴重障礙,被稱爲"維數災難"。 函數

    緩解維數災難的一個重要途徑是降維,"維數約簡",即經過某種數學變換將原始高維屬性空間轉變爲一個低維"子空間",這個字空間中樣本密度大幅提升,距離計算也變得更加容易。 學習

  4. PCA
     

    mouse1測試

    2優化

    3lua

    4spa

    5rest

    6

    gene1

    10

    11

    8

    3

    2

    1

    gene2

    6

    5

    4

    3

    2.8

    1

    gene3

    12

    9

    10

    2.5

    1.3

    2

    4 or more dimensions of data, and make 2 dimensional plot.

    We'll also talk about how PCA can tell us which gene (or variable) is the most valuable for clustering the data.

    1)繪製二維的數據,而後將數據中心點移到原點;

    2)找出最佳的擬合直線:投影點到原點的距離和最大,或者點到投影直線間的距離最小。

    3)這裏的曲線的斜率能夠代表,這兩個基因之間的關係;對曲線進行縮放,找到其中的一個單元大小。這裏的1個單元由兩個部分組成,0.97的基因1和0.242的基因2。這兩個值,稱爲"singular vector"或者是PC1的特徵向量;投影點到原點的距離和稱之爲PC1的特徵向量;開根號後稱之爲Singular Value for PC1;

    4)PC2和PC1垂直perpendicular;-0.242的基因1和0.97的基因2;

    5)convert the ss into variation around the origin(0,0) by dividing by the sample size minus 1.

    PC1的variation = 15; PC2的variation=3;

    總的variation = 18;

    能夠解釋 PC1 佔比83%;每一個PC的variation;

     

    PCA-practial tips:

    主要講如下三個方面的內容:

    1)Scaling your data;

    2)Centering your data;

    3)How many principal components you should expect to get.

    1. 數據的歸一化;

    2. 數據中心要過原點;

    3. 多少個主成分須要被找到;

     

    PCA的使用:

    1.如何獲得能夠運用PCA的數據;

    2.如何使用sklearn中的PCA進行主成分分析

    3.如何決定每一個主成分所佔的變化比例;

    4.如何使用matplotlib繪製PCA

    幾乎全部的variation都彙集在第一個pc上,所以,使用PC1和PC2能夠很好的表示數據。

    在一個正交屬性空間中,如何使用一個超平面(直線的高維推廣)對全部樣本進行恰當的表達?

    容易想到,這個超平面應該具備這樣的性質:

    1)最近重構性:樣本點到這個超平面的距離足夠近;

    2)最大可分性:樣本點在這個超平面上的投影儘量分開。

    基於最近重構性和最大可分性能夠獲得兩種等價推導:

    1)基於最近重構性的推導:

    假定數據樣本進行了中心化,即;再假定投影變換後獲得的新座標系爲,其中是標準正交向量,,。若丟棄新座標系中的部分座標,即將維度下降到,則樣本點在低維座標系中的投影是,其中是在低維座標系下第j維的座標。若基於來重構,則會獲得.

    如下內容參考:http://blog.codinglabs.org/articles/pca-tutorial.html

    爲何基的模爲1?

    AB=|A||B|cos(a)

    若是|B|=1,則直接爲A在B上的投影。

    故,利用內積能夠表示一個向量在某個基下的座標表示。

    通常的,若是咱們有M個N維向量,想將其變換爲由R個N維向量表示的新空間中,那麼首先將R個基按行組成矩陣A,而後將向量按列組成矩陣B,那麼兩矩陣的乘積AB就是變換結果,其中AB的第m列爲A中第m列變換後的結果

    其中pi是一個行向量,表示第i個基,aj是一個列向量,表示第j個原始數據記錄

    特別要注意的是,這裏R能夠小於N,而R決定了變換後數據的維數。也就是說,咱們能夠將一N維數據變換到更低維度的空間中去,變換後的維度取決於基的數量。所以這種矩陣相乘的表示也能夠表示降維變換。

    最後,上述分析同時給矩陣相乘找到了一種物理解釋:兩個矩陣相乘的意義是將右邊矩陣中的每一列列向量變換到左邊矩陣中每一行行向量爲基所表示的空間中去。更抽象的說,一個矩陣能夠表示一種線性變換。不少同窗在學線性代數時對矩陣相乘的方法感到奇怪,可是若是明白了矩陣相乘的物理意義,其合理性就一目瞭然了。

    協方差矩陣和其優化目標

    咱們但願投影后投影值儘量分散,而這種分散程度,能夠用數學上的方差來表述。此外,一個字段的方差能夠看做是每一個元素與字段均值的差的平方和的均值,即

    因爲上步已經將每一個字段的均值都化爲0了,那麼方差就能夠直接用每一個元素的平方和除以元素個數表示:

    因而,上述問題被形式化表示爲:尋找一個一維基,使得全部數據變換爲這個基上的座標表示後,方差值最大。

    協方差:

    對於上面的二維降成一維的問題來講,找到那個使得方差最大的方向就能夠了。可是對於更高維,還有一個問題須要解決。

    數學上採用協方差來表示其相關性,因爲讓每一個字段均值都爲0:

    能夠看到,在字段均值爲0的狀況下,兩個字段的協方差簡潔的表示爲其內積處以元素m.

    至此,咱們獲得了降維問題的優化目標:將一組N維向量降爲K維(K大於0,小於N),其目標是選擇K個單位(模爲1)正交基,使得原始數據變換到這組基上後,各字段兩兩間協方差爲0,而字段的方差則儘量大(在正交的約束下,取最大的K個方差)

    協方差矩陣:

    假設咱們只有a和b兩個字段,那麼咱們將他們按行組成矩陣X:

    而後咱們用X乘以X的轉置,並乘上係數1/m:

    這個矩陣對角線上的兩個元素分別是兩個字段的方差,而其餘元素是a和b的協方差,二者被統一到了一個矩陣中。

    根據矩陣相乘的運算法則,這個結論很容易被推廣到通常狀況:

    設咱們有m個n維數據記錄,將其排列爲n乘m的矩陣x,設C=,則C是一個對稱矩陣,其對角線分別是各個字段的方差,而第i行和第j列元素相同,表示i和j兩個字段的協方差。

    協方差矩陣對角化

    根據上述推導,咱們發現要達到優化目前,等價於將協方差矩陣對角化:即除對角線外的其餘元素化爲0,而且在對角線上將元素按從小到大從上到下排列,這樣咱們就達到了優化的目的。

    設原始數據矩陣X對應的協方差矩陣爲C,而P是一組基按行組成的矩陣,設Y=PX,則Y爲X對P作基變換後的數據。設Y的協方差矩陣爲D,推導D和C的關係:

    如今的目標變成,須要找到P,能讓D爲協方差矩陣對角化的P。

    換言之,優化目標變成了尋找一個矩陣P,知足是一個對角矩陣,而且對角元素按從大到小依次排列,那麼P的前K行就是要尋找的基,用P的前K行組成的矩陣乘以X就使得X從N維降到了K維並知足上述優化條件。

    由上文可知,協方差矩陣C是一個對稱矩陣,在線性代數上,實對稱矩陣有一系列很是好的性質:

    1)實對稱矩陣不一樣特徵值對應的特徵向量必然正交;

    2)設特徵向量重數爲r,則必然存在r個線性無關的特徵向量對應於,設這n個特徵向量爲,將其按列組成矩陣,

    則對協方差矩陣C有以下結論:

    根據上面對PCA的數學原理的解釋,咱們能夠了解到一些PCA的能力和限制。PCA本質上是將方差最大的方向做爲主要特徵,而且在各個正交方向上將數據"離相關",也就是讓它們在不一樣正交方向上沒有相關性。

    所以,PCA也存在一些限制,例如它能夠很好的解除線性相關,可是對於高階相關性就沒有辦法了,對於存在高階相關性的數據,能夠考慮Kernel PCA,經過Kernel函數將非線性相關轉爲線性相關,關於這點就不展開討論了。另外,PCA假設數據各主特徵是分佈在正交方向上,若是在非正交方向上存在幾個方差較大的方向,PCA的效果就大打折扣了。

    最後須要說明的是,PCA是一種無參數技術,也就是說面對一樣的數據,若是不考慮清洗,誰來作結果都同樣,沒有主觀參數的介入,因此PCA便於通用實現,可是自己沒法個性化的優化。

  5. 核化線性降維

  6. 流形學習

  7. 等度量映射

  8. 局部線性嵌

     

  9. Multiple dimensional scaling (MDS)

    若要求原始空間中樣本之間的距離在低維空間中得以保持,即"多維縮放",一種經典的降維方法。

    假定m個樣本在原始空間中的距離矩陣爲,其中第i 行j列元素爲樣本到樣本的距離。咱們的目的就是得到樣本在d'維空間的表示,,且任意兩個樣本在維空間中的歐式距離等於原始空間中的距離,即。

    令,其中B爲降維後樣本的內積矩陣,

    對B矩陣進行特徵值分解,,其中,爲特徵值構成的對角矩陣。V爲特徵向量矩陣。

    假定有個非零特徵值,它們構成對角矩陣,令表示相應的特徵向量矩陣,則Z可表達爲:

    在現實應用中,爲了有效降維,每每僅需降維後的距離與原始空間中的距離儘量接近,而沒必要嚴格相等。此時,可取個最大特徵值構成對角矩陣

  10. 度量學習

相關文章
相關標籤/搜索