1. 程式人生 > 實用技巧 >ml-8-2-降維(Dimensionality Reduction)

ml-8-2-降維(Dimensionality Reduction)

降維(Dimensionality Reduction)

Motivation I_ Data Compression資料壓縮

無監督學習問題,稱為降維。有幾個不同的的原因使你可能想要做降維。一是資料壓縮,後面我們會看了一些視訊後,資料壓縮不僅允許我們壓縮資料,因而使用較少的計算機記憶體或磁碟空間,但它也讓我們加快我們的學習演算法。

但首先,讓我們談論降維是什麼。作為一種生動的例子,我們收集的資料集,有許多,許多特徵,我繪製兩個在這裡。

img

假設我們未知兩個的特徵 x 1 :長度:用釐米表示;X 2 ,是用英寸表示同一物體的長度。

所以,這給了我們高度冗餘表示,也許不是兩個分開的特徵 x 1 和 X 2 ,這兩個基本的長度度量,也許我們想要做的是減少資料到一維,只有一個數測量這個長度。這個例子似乎有點做作,這裡釐米英寸的例子實際上不是那麼不切實際的,兩者並沒有什麼不同。

將資料從二維降至一維: 假使我們要採用兩種不同的儀器來測量一些東西的尺寸,其中一個儀器測量結果的單位是英寸,另一個儀器測量的結果是釐米,我們希望將測量的結果作為我們機器學習的特徵。現在的問題的是,兩種儀器對同一個東西測量的結果不完全相等(由於誤差、精度等),而將兩者都作為 特徵有些重複,因而,我們希望將這個二維的資料降至一維。

如果你有幾百個或成千上萬的特徵,它是它這往往容易失去你需要的特徵。有時可能有幾個不同的工程團隊,也許一個工程隊給你二百個特徵,第二工程隊給你另外三百個的特徵,第三工程隊給你五百個特徵,一千多個特徵都一起,它實際上會變得非常困難,去跟蹤你知道的那些特徵,你從那些工程隊得到的。其實不想有高度冗餘的特徵一樣。

img

多年我一直在研究直升飛機自動駕駛。諸如此類。如果你想測量——如果你想做,你知道,做一個調查或做這些不同飛行員的測試——你可能有一個特徵:X 1 ,這也許是他們的技能(直升機飛行員),也許“X 2 ”可能是飛行員的愛好。這是表示他們是否喜歡飛行,也許這兩個特徵將高度相關。你真正關心的可能是這條紅線的方向,不同的特徵,決定飛行員的能力。

img

將資料從三維降至二維: 這個例子中我們要將一個三維的特徵向量降至一個二維的特徵向量。過程是與上面類似的,我們將三維向量投射到一個二維的平面上,強迫使得所有的資料都在同一個平面上,降至二維的特徵向量。

img

這樣的處理過程可以被用於把任何維度的資料降到任何想要的維度,例如將 1000 維的

特徵降至 100 維。

img

假使我們有有關於許多不同國家的資料,每一個特徵向量都有 50 個特徵(如,GDP,
人均 GDP,平均壽命等)。如果要將這個 50 維的資料視覺化是不可能的。使用降維的方法
將其降至 2 維,我們便可以將其可視化了

img

這樣做的問題在於,降維的演算法只負責減少維數,新產生的特徵的意義就必須由我們自
己去發現了

Principal Component Analysis Problem Formulation主成分分析問題

主成分分析(PCA)是最常見的降維演算法。

在 PCA 中,我們要做的是找到一個方向向量(Vector direction),當我們把所有的資料
都 投射到該向量上時,我們希望投射平均均方誤差能儘可能地小。方向向量是一個經過原
點的向量,而投射誤差是從特徵向量向該方向向量作垂線的長度。

img

下面給出主成分分析問題的描述:

問題是要將 n 維資料降至 k 維,目標是找到向量 u (1) ,u (2) ,…,u (k) 使得總的投射誤差最小。
主成分分析與線性回顧的比較:

主成分分析與線性迴歸是兩種不同的演算法。主成分分析最小化的是投射誤差(Projected
Error),而線性迴歸嘗試的是最小化預測誤差。線性迴歸的目的是預測結果,而主成分分析
不作任何預測。

img

上圖中,左邊的是線性迴歸的誤差(垂直於橫軸投影),右邊則是主要成分分析的誤差
(垂直於紅線投影)。

PCA 將 n 個特徵降維到 k 個,可以用來進行資料壓縮,如果 100 維的向量最後可以用 10維來表示,那麼壓縮率為90%。同樣影象處理領域的 KL 變換使用 PCA 做影象壓縮。但 PCA要保證降維後,還要保證資料的特性損失最小。

PCA 技術的一大好處是對資料進行降維的處理。我們可以對新求出的“主元”向量的重要性進行排序,根據需要取前面最重要的部分,將後面的維數省去,可以達到降維從而簡化模型或是對資料進行壓縮的效果。同時最大程度的保持了原有資料的資訊。

PCA 技術的一個很大的優點是,它是完全無引數限制的。在 PCA 的計算過程中完全不需要人為的設定引數或是根據任何經驗模型對計算進行干預,最後的結果只與資料相關,與使用者是獨立的。但是,這一點同時也可以看作是缺點。如果使用者對觀測物件有一定的先驗知識,掌握了資料的一些特徵,卻無法通過引數化等方法對處理過程進行干預,可能會得不到預期的效果,效率也不高。

Principal Component Analysis Algorithm 主成分分析演算法

PCA 減少 n 維到 k 維:

第一步是均值歸一化。我們需要計算出所有特徵的均值,然後令 x j = x j -μ j 。如果特徵是
在不同的數量級上,我們還需要將其除以標準差 σ^2

第二步是計算 協方差矩陣(covariance matrix)Σ:

img

第三步是計算協方差矩陣 Σ 的 特徵向量(eigenvectors):

在 Octave 裡我們可以利用 奇異值分解(singular value decomposition)來求解,[U, S, V]=
svd(sigma)。

img

對於一個 n×n 維度的矩陣,上式中的 U 是一個具有與資料之間最小投射誤差的方向向
量構成的矩陣。如果我們希望將資料從 n 維降至 k 維,我們只需要從 U 中選取前 K 個向量,
獲得一個 n×k 維度的矩陣,我們用 U reduce 表示,然後通過如下計算獲得要求的新特徵向量
z (i) :

img

其中 x 是 n×1 維的,因此結果為 k×1 維度。注,我們不對方差特徵進行處理。

Choosing The Number Of Principal Components選擇主成分的

主要成分分析是減少投射的平均均方誤差:

訓練集的方差為:
img

我們希望在平均均方誤差與訓練集方差的比例儘可能小的情況下選擇儘可能小的 K 值。

如果我們希望這個比例小於 1%,就意味著原本資料的偏差有 99%都保留下來了,如果
我們選擇保留 95%的偏差,便能非常顯著地降低模型中特徵的維度了。

我們可以先令 K=1,然後進行主要成分分析,獲得 U reduce 和 z,然後計算比例是否小於
1%。如果不是的話再令 K=2,如此類推,直到找到可以使得比例小於 1%的最小 K 值(原因
是各個特徵之間通常情況存在某種相關性)。

還有一些更好的方式來選擇 K,當我們在 Octave 中呼叫“svd”函式的時候,我們獲得三
個引數:[U, S, V] = svd(sigma)。

img

其中的 S 是一個 n×n 的矩陣,只有對角線上有值,而其它單元都是 0,我們可以使用這
個矩陣來計算平均均方誤差與訓練集方差的比例:

img

也就是 img

在壓縮過資料後,我們可以採用如下方法來近似地獲得原有的特徵:

img

Reconstruction from Compressed Representation 重建的壓縮表示

談論 PCA 作為壓縮演算法。在那裡你可能需要把 1000 維的資料壓縮
100 維特徵,或具有三維資料壓縮到一二維表示。所以,如果這是一個壓縮演算法,應該能回
到這個壓縮表示,回到你原有的高維資料的一種近似。

所以,給定的 Z
( i ) ,這可能 100 維,怎麼回到你原來的表示 x ( i ) ,這可能是 1000 維的
陣列?

img

PCA 演算法,我們可能有一個這樣的樣本。如圖中樣本 x (1) ,X (2) 。我們做的是,我們把這些
樣本投射到圖中這個一維平面。然後現在我們需要只使用一個實數,比如 Z (1) ,指定這些點
的位置後他們被投射到這一個三維曲面。給定一個點 Z (1) ,我們怎麼能回去這個原始的二維
空間呢?x 為 2 維,z 為 1 維, img,相反的方程為: img

img

img

如你所知,這是一個漂亮的與原始資料相當相似。所以,這就是你從低維表示 Z 回到未
壓縮的表示。我們得到的資料的一個之間你的原始資料 X,我們也把這個過程稱為重建原始
資料。

當我們認為試圖重建從壓縮表示 x 的初始值。所以,給定未標記的資料集,您現在知道
如何應用 PCA,你的帶高維特徵 X 和對映到這的低維表示 Z。這個視訊,希望你現在也知道
如何採取這些低維表示 Z,對映到備份到一個近似你原有的高維資料。

現在你知道如何實施應用 PCA,我們將要做的事是談論一些技術在實際使用 PCA 很好,
特別是,在接下來的視訊中,我想談一談關於如何選擇 K。

Advice for Applying PCA 主成分分析法的應用建議

假使我們正在針對一張 100×100 畫素的圖片進行某個計算機視覺的機器學習,即總共
有 10000 個特徵。

  1. 第一步是運用主要成分分析將資料壓縮至 1000 個特徵
  2. 然後對訓練集執行學習演算法
  3. 在預測時,採用之前學習而來的 U reduce 將輸入的特徵 x 轉換成特徵向量 z,然後再進行預測

注:如果我們有交叉驗證集合測試集,也採用對訓練集學習而來的 U reduce 。
錯誤的主要成分分析情況:一個常見錯誤使用主要成分分析的情況是,將其用於減少過擬合
(減少了特徵的數量)。這樣做非常不好,不如嘗試正則化處理。原因在於主要成分分析只
是近似地丟棄掉一些特徵,它並不考慮任何與結果變數有關的資訊,因此可能會丟失非常重
要的特徵。然而當我們進行正則化處理時,會考慮到結果變數,不會丟掉重要的資料。

另一個常見的錯誤是,預設地將主要成分分析作為學習過程中的一部分,這雖然很多時
候有效果,最好還是從所有原始特徵開始,只在有必要的時候(演算法執行太慢或者佔用太多
記憶體)才考慮採用主要成分分析。

不洗澡的鯨魚   
 
 </div> 

             
          <div class=


相關推薦

ml-8-2-(Dimensionality Reduction)

降維(Dimensionality Reduction) Motivation I_ Data Compression資料壓縮 無監督學習問題,稱為降維。有幾個不同的的原因使你可能想要做降維。一是資料壓縮,後面我們會看了一些視訊後,資料壓縮不僅允許我

js陣列的擴充套件------8種多陣列的方法

1、陣列字串化 let arr = [[123456], [333], 789] arr += \'\' arr = arr.split(\',\') console.log(arr) 2、遞迴

機器學習—-特徵選擇6-2(包裝法)

使用包裝法對糖尿病資料集(遞迴特徵消除法) 主要步驟流程: 1. 匯入包

德國涼感科技:淘寶心選驅蚊夏被 1.8*2 米 69.9 元(小 30 元)

德國涼感科技:淘寶心選驅蚊夏被 1.8*2m 報價 189.9 元,限時限量 120 元券,實付 69.9 元包郵,領券併購買。使用最會買 App 下單,預計還能再返 3.84 元,返後 66.06 元包郵,點選下載最會買 App。夏季專用的涼感驅

【機器學習基礎】無監督學習(2)——之LLE和TSNE

在上一節介紹了一種最常見的方法PCA,本節介紹另一種方法LLE,本來打算對於其他演算法一併進行一個簡介,不過既然看到這裡了,就對這些演算法做一個相對詳細的學習吧。

python實現拉普拉斯特徵圖示例

這種方法假設樣本點在光滑的流形上,這一方法的計算資料的低表達,區域性近鄰資訊被最優的儲存。以這種方式,可以得到一個能反映流形的幾何結構的解。

python實現PCA的示例詳解

概述 本文主要介紹一種方法,PCA(Principal Component Analysis,主成分分析)。致力於解決三類問題。

python資料預處理方式 :資料

資料為何要降維 資料降維可以降低模型的計算量並減少模型執行時間、降低噪音變數資訊對於模型結果的影響、便於通過視覺化方式展示歸約後的維度資訊並減少資料儲存空間。因此,大多數情況下,當我們面臨高維資料時,都

使用python實現多資料操作

一,首先介紹下多列表的 def flatten(a): for each in a: if not isinstance(each,list):

python程式碼實現TSNE資料視覺化教程

TSNE降維 降維就是用2維或3表示多資料(彼此具有相關性的多個特徵資料)的技術,利用降維演算法,可以顯式地表現資料。(t-SNE)t分佈隨機鄰域嵌入 是一種用於探索高維資料的非線性降維演算法。它將多資料對映

Tensorflow中的函式tf.reduce_*使用總結

在使用tensorflow時常常會使用到tf.reduce_*這類的函式,在此對一些常見的函式進行彙總

在伺服器上安裝python3.8.2環境的教程詳解

在伺服器上安裝python3.8.2環境 官網3.8.2下載地址 https://www.python.org/downloads/release/python-382/

JS陣列的實現Array.prototype.concat.apply([], arr)

把多陣列(尤其是二陣列)轉化為一陣列是業務開發中的常用邏輯,最近跟著黃軼老師學習Vue2.6.1.1版本原始碼時,看到原始碼對二陣列降維的程式碼,所以這裡來寫一篇,記錄一下,加強印象

js最全的陣列的5種辦法(小結)

業務開發中,二陣列、多陣列轉為一陣列這種需求是少不了的,有些多數組裡面可能巢狀會更深,陣列就是來解決此問題的

PCA演演算法 | 資料集特徵數量太多怎麼辦?用這個演演算法對它打擊!

本文始發於個人公眾號:TechFlow,原創不易,求個關注 今天是機器學習專題的第27文章,我們一起來聊聊資料處理領域的(dimensionality reduction)演演算法。

實現pca-Python實現

PCA:主成分分析-Python實現,X:[2500,784],把X到50 1 def pca(X=np.array([]), no_dims=50):

8.2 極驗滑動驗證碼的識別

8.2 極驗滑動驗證碼的識別 上節我們瞭解了可以直接利用 tesserocr 來識別簡單的圖形驗證碼。近幾年出現了一些新型驗證碼,其中比較有代表性的就是極驗驗證碼,它需要拖動拼合滑塊才可以完成驗證,相對圖形驗證碼來說

狀態壓縮技巧:動態規劃的打擊

本文由labuladong原創,本博文僅作為知識點學習,不會用於任何商業用途! 動態規劃技巧對於演算法效率的提升非常可觀,一般來說都能把指數級和階乘級時間複雜度的演算法優化成 O(N^2),堪稱演算法界的二向箔,把各路

歐的最小生成樹QWQ(8.2更新)

1.Kruskal Kruskal主要思想:加邊法。 K從本質上說,其實是一個貪心演算法。轉換過來就是:既然要求最小的生成樹,那麼我們加就加最小的邊。

8.2集訓

上午 考試 下午 第一題 一句話題意:給出兩個\\(1\\) \\(to\\) \\(n\\)的序列,定義\\(T(a,b)\\)為\\(a\\)與\\(b\\)在序列中的距離