1. 程式人生 > >數據降維(Dimensionality reduction)

數據降維(Dimensionality reduction)

樣本 轉置 選擇 步驟 math ESS 線上 學習 -c

數據降維(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的轉置的乘積

數據降維(Dimensionality reduction)