特徵工程(五): PCA 降維

來源:https://mp.weixin.qq.com/s/Zdb_fIb5-zpvq4sTeu3Dww

通過自動數據收集和特徵生成技術,可以快速獲得大量特徵,但並非所有這些都有用。我們前面討論了基於頻率的濾波和特徵縮放修剪無信息的特徵。現在我們來仔細討論一下使用主成分分析(PCA)進行數據降維。

 

本章標誌着進入基於模型的特徵工程技術。在這之前,大多數技術可以在不參考數據的情況下定義。對於實例中,基於頻率的過濾可能會說“刪除所有小於n的計數“,這個程序可以在沒有進一步輸入的情況下進行數據本身。 另一方面,基於模型的技術則需要來自數據的信息。例如,PCA 是圍繞數據的主軸定義的。 在之前的技術中,數據,功能和模型之間從來沒有明確的界限。從這一點前進,差異變得越來越模糊。這正是目前關於特徵學習研究的興奮之處。

 

降維是關於擺脫“無信息的信息”的同時保留關鍵點。有很多方法可以定義“無信息”。PCA 側重於線性依賴的概念。在“矩陣的剖析”中,我們將數據矩陣的列空間描述爲所有特徵向量的跨度。如果列空間與特徵的總數相比較小,則大多數特徵是幾個關鍵特徵的線性組合。如果在下一步管道是一個線性模型,然後線性相關的特徵會浪費空間和計算能力。爲了避免這種情況,主成分分析嘗試去通過將數據壓縮成更低維的線性來減少這種“絨毛”子空間。

 

在特徵空間中繪製一組數據點。每個數據點都是一個點,整個數據點集合形成一個 blob。在圖 6-1(a) 中,數據點在兩個特徵維度上均勻分佈,blob 填充空間。在這個示例中,列空間具有完整的等級。但是,如果其中一些特徵是其他特徵的線性組合,那麼該 blob 看起來不會那麼豐滿; 它看起來更像圖 6-1(b),這是一個平面斑點,其中特徵 1 是特徵 2 的重複(或標量倍數)。在這種情況下,我們說該 blob 的本徵維數是 1,即使它位於二維空間之中。

 

在實踐中,事情很少完全相同。這更可能是我們看到非常接近平等但不完全相同的特徵。在這種情況下,數據 blob 可能如圖 6-1(c) 所示。這是一個憔悴的一團。要是我們想要減少傳遞給模型的特徵的數量,那麼我們可以用一個新特徵替換特徵 1 和特徵 2,可能稱之爲位於兩個特徵之間的對線的 1.5 特徵。原始數據集可以是用一個數字充分表示——沿着特徵方 1.5 的方向——而不是兩個維度f1f2

 

圖 6-1 特徵空間中的數據 blobs(a) 滿秩數據 blob(b) 低維數據 blob(c) 近似低維的數據 blob

 

這裏的關鍵思想是用一些充分總結原始特徵空間中包含的信息的新特徵取代冗餘特徵。當只有兩個特徵的時候新特徵很容易得到。這在當原始特徵空間具有數百或數千個維度時將變得很難。我們需要一種數學描述我們正在尋找的新功能的方法。這樣我們就可以使用優化技術來找到它們。

 

數學上定義“充分總結信息”的一種方法要求就是這樣說新數據 blob 應該保留儘可能多的原來的列。我們是將數據塊壓扁成平坦的數據餅,但我們希望數據餅儘可能在正確的方向上。這意味着我們需要一種衡量特徵列的方法。特徵列與距離有關。但是在一些數據點中距離的概念有些模糊。可以測量任意兩對之間的最大距離點。但事實證明,這是一個非常困難的數學優化功能。另一種方法是測量任意一對點之間的平均距離,或者等價地,每個點與它們的平均值之間的平均距離,即方差。事實證明,這優化起來要容易得多。(生活很難,統計學家已經學會了採取簡便方法)在數學上,這體現爲最大化新特徵空間中數據點的方差。

 

導航線性代數公式的提示

爲了保持面向線性代數的世界,保持跟蹤哪些數量標量,它們是向量,向量的方向是垂直還是水平。知道你的矩陣的維度,因爲他們經常告訴你感興趣的向量是否在行或列中。繪製矩陣和向量作爲頁面上的矩形,並確保形狀匹配。就像通過記錄測量單位(距離以英里,速度以英里/小時計)一樣,在代數中可以得到很大的代數,在線性代數中,所有人都需要的是尺寸。

 

求導,

提示和符號

 

 

 

 

圖 6-2 PCA 的插圖

 

 

 

 

 

 

PCA 執行

讓我們更好地瞭解 PCA 如何將其應用於某些圖像數據。MNIST 數據集包含從 0 到 9 的手寫數字的圖像。原始圖像是28 x 28像素。使用 scikit-learn 分發圖像的較低分辨率子集,其中每個圖像被下采樣爲8×8像素。原始數據在 scikit 學習有 64 個維度。我們應用 PCA 並使用第一個可視化數據集三個主要部分。

示例 6-1 scikit-learn 數字數據集(MNIST 數據集的一個子集)的主成分分析。

 

 

圖 6-3 PCA 預測 MNIST 數據的子集。標記對應於圖像標籤。

 

由於數字之間有相當多的重疊,因此很難清楚的將它們在投影空間中使用線性分類器分開。因此,如果任務是分類手寫數字並且選擇的模型是一個線性分類器,前三個主成分不足以作爲功能。儘管如此有趣的是隻有 3 個可以捕獲多少個 64 維數據集尺寸。

 

白化和 ZCA

由於目標函數中的正交性約束,PCA 變換產生了很好的附帶作用:轉換後的特徵不再相關。再換句話說,特徵向量對之間的內積是零。這很容易使用奇異向量的正交性來證明這一點:結果是包含奇異值的平方的對角矩陣表示每個特徵向量與其自身的相關性,也稱爲其 L2 規範。

 

有時候,將特徵的比例標準化爲1.在信號中是有用的處理方式,這就是所謂的白化。 它產生了一組與自身具有單位相關性,並且彼此之間的相關性爲零的結果。在數學上,白化可以通過將 PCA 變換乘以反奇異值。

公式 6-24 PCA 白化

 

 

 

 

 

最後,最好不要將 PCA 應用於原始計數(字數,音樂播放次數,電影觀看次數等)。這是因爲這種計數通常包含在內大的異常值。(這個概率非常高,有粉絲觀看了 314,582 次“指環王”,這讓其餘的人望而生畏計數)。正如我們所知,PCA 在特徵中查找線性相關性。相關性和方差統計對大的異常值非常敏感; 單一大量的數據可能會改變很多。

 

用例

PCA 通過查找線性相關模式來減少特徵空間維度功能之間。由於涉及 SVD,PCA 計算數千個功能的代價很高。但是對於少量的實值特徵而言,它非常重要值得嘗試。

 

PCA 轉換會丟棄數據中的信息。因此,下游模型可能會訓練成本更低,但可能不太準確。在 MNIST 數據集上,有一些觀察到使用來自 PCA 的降維數據導致不太準確分類模型。在這些情況下,使用 PCA 有好處和壞處。

PCA 最酷的應用之一是時間序列的異常檢測。Lakhina,Crovella 和 Diot [2004] 使用 PCA 來檢測和診斷異常互聯網流量。他們專注於數量異常情況,即當出現波動或波動時減少從一個網絡區域到另一個網絡區域的通信量。這些突然更改可能表示配置錯誤的網絡或協調的拒絕服務攻擊。無論哪種方式,知道何時何地發生這種變化對互聯網都是有價值的運營商。

由於互聯網上的交通總量非常之多,孤立的激增規模很小地區很難被發現。一個相對較小的主幹鏈路處理很多交通。 他們的重要見解是,數量異常會影響到多個鏈接同時(因爲網絡數據包需要跳過多個節點才能到達他們的網絡目的地)。將每個鏈接視爲一項功能,並將每個鏈接的流量數量對待時間步驟作爲測量。數據點是流量測量的時間片跨越網絡上的所有鏈接。這個矩陣的主成分表明了網絡上的整體流量趨勢。其餘的成分代表了剩餘信號,其中包含異常。

PCA 也經常用於金融建模。在這些用例中,它作爲一種類型工作因子分析,一組旨在描述觀察結果的統計方法使用少量未觀察因素的數據變異性。在因素分析中應用程序,目標是找到解釋性成分,而不是轉換數據。

 

像股票收益這樣的財務數量往往是相互關聯的。股票可以同時上下移動(正相關),也可以相反移動方向(負相關)。爲了平衡波動和降低風險,投資組合需要多種不相關的股票其他。(如果籃子要下沉,不要把所有的雞蛋放在一個籃子裏)尋找強大的相關模式有助於決定投資策略。

 

股票關聯模式可能在行業範圍內。 例如,科技股可能會上漲並一起下跌,而當油價高企時,航空股往往下跌。 但行業可能不是解釋結果的最好方式。 分析師也在尋找觀察到的統計數據中意外的相關性 特別是文體因素模型 [Connor,1995] 在個體股票時間序列矩陣上運行 PCA 返回尋找共同變化的股票。 在這個用例中,最終目標是主成分本身,而不是轉換後的數據。

 

從圖像中學習時,ZCA 可作爲預處理步驟。在自然的圖像中,相鄰像素通常具有相似的顏色。ZCA 白化可以消除這種相關性,這允許後續的建模工作集中在更有趣的圖像上結構。Alex Krizhevsky 的“學習多層特徵”的論文圖像“包含很好的示例,說明 ZCA 影響自然圖片。

 

許多深度學習模型使用 PCA 或 ZCA 作爲預處理步驟,但事實並非如此總是顯示是必要的。在“Factored 3-Way Restricted Boltzmann Machines forModeling Natural Images”中,Ranzato et al,評論,“白化不是必要的,但加快了算法的收斂速度。在“An Analysis of Single-Layer Networks in Unsupervised Feature Learning”中,Coates 等人 發現 ZCA 白化是有幫助的對於某些號,但不是全部。(請注意,本文中的模型是無監督功能學習模型。 所以 ZCA 被用作其他功能的特徵方法工程方法。方法的堆疊和鏈接在機器中很常見學習管道。)

 

總結

這結束了對 PCA 的討論。關於 PCA 需要記住的兩件事是其機制(線性投影)和目標(最大化方差預計數據)。該解決方案涉及協方差的特徵分解矩陣,它與數據矩陣的 SVD 密切相關。人們還可以記住 PCA 的精神圖像將數據擠壓成像蓬鬆一樣的煎餅可能。PCA 是模型驅動特徵工程的一個示例。(應該立即懷疑當一個目標函數進入時,一個模型潛伏在背景中場景)。這裏的建模假設是方差充分代表了包含在數據中的信息。等價地,該模型尋找線性特徵之間的相關性。這在幾個應用程序中用於減少相關性或在輸入中找到共同因素。PCA 是一種衆所周知的降維方法。但它有其侷限性作爲高計算成本和無法解釋的結果。它作爲一個預先定義好處理步驟,特別是在特徵之間存在線性相關時。當被看作是一種消除線性相關的方法時,PCA 與其相關白化的概念。其表兄 ZCA 以可解釋的方式使數據變白,但是不會降低維度。

https://github.com/apachecn/feature-engineering-for-ml-zh/blob/master/docs/6.%E9%99%8D%E7%BB%B4%EF%BC%9A%E7%94%A8_PCA_%E5%8E%8B%E7%BC%A9%E6%95%B0%E6%8D%AE%E9%9B%86.md

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章