1. 程式人生 > >資料降維(Dimensionality reduction)

資料降維(Dimensionality reduction)

資料降維(Dimensionality reduction)

應用範圍

  • 無監督學習
  • 圖片壓縮(需要的時候在還原回來)
  • 資料壓縮
  • 資料視覺化

資料壓縮(Data Compression)

  • 將高維的資料轉變為低維的資料, 這樣我們儲存資料的矩陣的列就減少了, 那麼我們需要儲存的資料就減少了

資料視覺化

  • 資料視覺化是非常重要的, 通過視覺化資料可以發現數據的規律, 但是大多數時候我們到的資料是高維度的, 視覺化很困難, 採用資料降維可以將資料降到二維進行資料視覺化

加快機器學習演算法的速度

  • 維度少了程式執行就快了

演算法

PCA

注意點

  • 資料降維不是隨意降維的, 我們要首先發現樣本的規律, 如果樣本在2D時都在一條之間上, 那麼我們可以將資料都投影到這條直線上, 從而降到1D; 如果在3D中, 基本上在一個平面上, 我們可以將所有的資料都投影到這個平面上, 從而降到2D; 降維要找的直線或者平面我們要保證原始原始樣本到新的直線或者平面的距離和最小, 從而保留儘可能多的資訊
  • 使用PCA降維時需要對資料進行標準化

PCA降維步驟

  1. 資料標準化
  2. 計算協方差矩陣: \(\Sigma{1\over{m}}X^TX\), 其中X為樣本, 在MATLAB中Sigma = 1 / m * X' * X
  3. 呼叫svd函式計算出協方差矩陣的特徵向量: [U, S, V] = svd(Sigma), 其中U為特徵矩陣, 其他返回的變數暫時用不到
  4. U是一個\(nxn\)的矩陣, \(n\)表示原始資料特徵的數量, 選擇K個作為我們新的特徵
  5. 獲取新的資料: Z = X * U(:, 1:K), Z就是一個\(mxk\)的新的樣本

恢復資料

  1. X_recovered = Z * U(:, 1:K)', 通過這條語句得到的X_recovered = X * U(:, 1:K) * U(:, 1:K)', 我們恢復的資料並不是要原先的資料, 但是已經非常接近了, 只是原來的資料X乘以U與U的轉置的乘積