主成分分析(PCA)

ckxllf發表於2020-04-28

  主成分分析(Principal Component Analysis,PCA)是一種常用的無監督學習方法

  利用正交變換把由線性相關變數表示的觀測資料 轉換為 少數幾個由線性無關變數表示的資料,線性無關的變數 稱為 主成分

  主成分的個數通常小於原始變數的個數,所以PCA屬於降維方法

  主要用於發現資料中的基本結構,即資料中變數之間的關係,是資料分析的有力工具,也用於其他機器學習方法的前處理

  PCA屬於多元統計分析的經典方法

  1. 總體主成分分析

  第一軸選取方差最大的軸 y1

  主成分分析 的主要目的是降維,所以一般選擇 k( k≪mk\ll mk≪m)個主成分(線性無關變數)來代替m個原有變數(線性相關變數),使問題得以簡化,並能保留原有變數的大部分資訊(原有變數的方差)。

  在實際問題中,不同變數可能有不同的量綱,直接求主成分有時會產生不合理的結果。

  為了消除這個影響,常常對各個隨機變數實施規範化,使其均值為0,方差為1。

  主成分分析的結果可以用於其他機器學習方法的輸入。

  將樣本點投影到以主成分為座標軸的空間中,然後應用聚類演算法,就可以對樣本點進行聚類

  定義:

  假設 x\pmb xxxx 為 mmm 維隨機變數,均值為 μ\muμ,協方差矩陣為 Σ\SigmaΣ

  隨機變數 x\pmb xxxx 到 mmm 維隨機變數 y\pmb yyyy 的線性變換

  yi=αiTx=∑k=1mαkixk,i=1,2,...,my_i = \alpha_i^T \pmb x = \sum\limits_{k=1}^m \alpha_{ki}x_k, \quad i=1,2,...,myi=αiTxxx=k=1∑mαkixk,i=1,2,...,m

  其中 αiT=(α1i,α2i,...,αmi)\alpha_i^T = (\alpha_{1i},\alpha_{2i},...,\alpha_{mi})αiT=(α1i,α2i,...,αmi)

  如果該線性變換滿足以下條件,稱之為總體主成分:

  αiTαi=1,i=1,2,...,m\alpha_i^T\alpha_i = 1, i = 1, 2,...,mαiTαi=1,i=1,2,...,m

  cov(yi,yj)=0(i≠j)cov (y_i,y_j) = 0(i \neq j)cov(yi,yj)=0(i=j)

  y1y_1y1 是 x\pmb xxxx 的所有線性變換中方差最大的,y2y_2y2 是與 y1y_1y1 不相關的 x\pmb xxxx 的所有線性變換中方差最大的,以此類推,y1,y2,...,ymy_1,y_2,...,y_my1,y2,...,ym 稱為第一主成分…第 mmm 主成分

  假設 x\pmb xxxx 是 mmm 維隨機變數,其協方差矩陣 Σ\SigmaΣ 的特徵值分別是 λ1≥λ2≥...≥λm≥0\lambda_1 \ge \lambda_2 \ge ... \ge \lambda_m \ge 0λ1≥λ2≥...≥λm≥0,特徵值對應的單位特徵向量分別是 α1,α2,...,αm\alpha_1,\alpha_2,...,\alpha_mα1,α2,...,αm,則 x\pmb xxxx 的第 iii 主成分可寫作:

  yi=αiTx=∑k=1mαkixk,i=1,2,...,my_i = \alpha_i^T \pmb x = \sum\limits_{k=1}^m \alpha_{ki}x_k, \quad i=1,2,...,myi=αiTxxx=k=1∑mαkixk,i=1,2,...,m

  並且,x\pmb xxxx 的第 iii 主成分的方差是協方差矩陣 Σ\SigmaΣ 的第 iii 個特徵值,即:

  var(yi)=αiTΣαi=λivar (y_i) = \alpha_i^T\Sigma\alpha_i = \lambda_ivar(yi)=αiTΣαi=λi

  主成分性質:

  主成分 y\pmb yyyy 的協方差矩陣是對角矩陣 cov(y)=Λ=diag(λ1,λ2,...,λm)cov(\pmb y) = \Lambda = diag(\lambda_1,\lambda_2,...,\lambda_m)cov(yyy)=Λ=diag(λ1,λ2,...,λm)

  主成分 y\pmb yyyy 的方差之和等於隨機變數 x\pmb xxxx 的方差之和

  ∑i=1mλi=∑i=1mσii\sum\limits_{i=1}^m \lambda_i = \sum\limits_{i=1}^m \sigma_{ii}i=1∑mλi=i=1∑mσii

  其中 σii\sigma_{ii}σii 是 xix_ixi 的方差,即協方差矩陣 Σ\SigmaΣ 的對角線元素

  主成分 yky_kyk 與變數 xix_ixi 的 相關係數 ρ(yk,xi)\rho(y_k,x_i)ρ(yk,xi) 稱為因子負荷量(factor loading),它表示第 kkk 個主成分 yky_kyk 與變數 xix_ixi 的相關關係,即 yky_kyk 對 xix_ixi 的貢獻程度

  ρ(yk,xi)=λkαikσii,k,i=1,2,...,m\rho(y_k, x_i) = \frac{\sqrt{\lambda_k}\alpha_{ik}}{\sqrt{\sigma_{ii}}},k,i=1,2,...,mρ(yk,xi)=σiiλkαik,k,i=1,2,...,m

  2. 樣本主成分分析

  是基於樣本協方差矩陣的主成分分析

  給定樣本矩陣 XXX

  

在這裡插入圖片描述

  XXX 的樣本協方差矩陣

  S=[sij]m×n,sij=1n−1∑k=1m(xik−xˉi)(xjk−xˉj)i=1,2,...,m,j=1,2,...,m,其中xˉi=1n∑k=1nxikS = [s_{ij}]_{m \times n}, \quad s_{ij} = \frac{1}{n-1}\sum\limits_{k=1}^m(x_{ik}-\bar x_i)(x_{jk}-\bar x_j)\\

  i = 1,2,...,m,\quad j = 1,2,...,m, 其中 \bar x_i = \frac{1}{n}\sum\limits_{k=1}^n x_{ik}S=[sij]m×n,sij=n−11k=1∑m(xik−xˉi)(xjk−xˉj)i=1,2,...,m,j=1,2,...,m,其中xˉi=n1k=1∑nxik

  給定樣本 XXX,考慮 x\pmb xxxx 到 y\pmb yyyy 的線性變換 y=ATx\pmb y = A^T \pmb xyyy=ATxxx

  

在這裡插入圖片描述

  如果滿足以下條件,稱之為樣本主成分:

  樣本第一主成分 y1=α1Txy_1 = \alpha_1^T \pmb xy1=α1Txxx 是在 α1Tα1=1\alpha_1^T\alpha_1 = 1α1Tα1=1 條件下,使得 α1Txj(j=1,2,...,n)\alpha_1^T \pmb x_j (j=1,2,...,n)α1Txxxj(j=1,2,...,n) 的樣本方差 α1TSα1\alpha_1^TS\alpha_1α1TSα1 最大的 x\pmb xxxx 的線性變換,以此類推。

  樣本第 iii 主成分 yi=αiTxy_i = \alpha_i^T \pmb xyi=αiTxxx 是在 αiTαi=1\alpha_i^T\alpha_i = 1αiTαi=1 和 αiTxj\alpha_i^T\pmb x_jαiTxxxj 與 αkTxj(k

  3. 主成分分析方法

  3.1 相關矩陣的特徵值分解演算法

  針對 m×nm \times nm×n 樣本矩陣 XXX ,求樣本相關矩陣 R=1n−1XXTR = \frac{1}{n-1}XX^TR=n−11XXT

  再求樣本相關矩陣的 kkk 個特徵值和對應單位特徵向量,構造正交矩陣

  V=(v1,v2,...,vk)V = (v_1,v_2,...,v_k)V=(v1,v2,...,vk)

  VVV 的每一列對應一個主成分,得到 k×nk \times nk×n 樣本主成分矩陣 Y=VTXY=V^TXY=VTX

  3.2 矩陣奇異值分解演算法

  針對 m×nm \times nm×n 樣本矩陣 XXX ,X′=1n−1XTX' = \frac{1}{\sqrt{n-1}}X^TX′=n−11XT

  對矩陣 XXX 進行截斷奇異值分解,保留 kkk 個奇異值、奇異向量

  得到 X′=USVTX' = USV^TX′=USVT

  VVV 的每一列對應一個主成分,得到 k×nk \times nk×n 樣本主成分矩陣 Y=VTXY=V^TXY=VTX

  4. sklearn.decomposition.PCA

  sklearn.decomposition.PCA 官網介紹

  class sklearn.decomposition.PCA(n_components=None, copy=True,

  whiten=False, svd_solver='auto', tol=0.0,

  iterated_power='auto', random_state=None)

  引數: 鄭州哪個人流醫院好

  n_components:保留主成分個數,沒有賦值,特徵個數不變

  屬性:

  components_:主成分

  explained_variance_:各特徵方差

  explained_variance_ratio_:各特徵方差百分比

  singular_values_:主成分的奇異值

  n_components_:保留特徵個數

  import numpy as np

  from sklearn.decomposition import PCA

  import matplotlib.pyplot as plt

  X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])

  plt.scatter(X[:, 0], X[:, 1])

  plt.show()

  for n in range(1, 3):

  print("PCA n_components = {}".format(n))

  pca = PCA(n_components=n)

  pca.fit(X)

  print("特徵方差")

  print(pca.explained_variance_)

  print("特徵方差佔比")

  print(pca.explained_variance_ratio_)

  print("主成分奇異值")

  print(pca.singular_values_)

  print("主成分")

  print(pca.components_)

  print("主成分個數")

  print(pca.n_components_)

  PCA n_components = 1

  特徵方差

  [7.93954312]

  特徵方差佔比

  [0.99244289]

  主成分奇異值

  [6.30061232]

  主成分

  [[-0.83849224 -0.54491354]]

  主成分個數

  1

  PCA n_components = 2

  特徵方差

  [7.93954312 0.06045688]

  特徵方差佔比

  [0.99244289 0.00755711]

  主成分奇異值

  [6.30061232 0.54980396]

  主成分

  [[-0.83849224 -0.54491354]

  [ 0.54491354 -0.83849224]]

  主成分個數

  2


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2689002/,如需轉載,請註明出處,否則將追究法律責任。

相關文章