天涯明月刀ol|天涯明月刀迅雷下载
  1. 當前所在位置:
  2. 首頁
  3. 深海捕魚

從變量角度解釋主成分分析的原理和概念

2018-12-24 admin
  主成分分析的原理描述起來很簡單,但涉及的概念,如標準化、正交變換、特征值、特征向量和降維等,參考資料中大多是從向量的角度進行解釋,其涵義往往比較抽象。在線性代數中,向量以行表示,變量按列表示。本文通過一個小例子,從變量的角度,解釋主成分分析的基本原理及相關概念的意義。
 
  1.變量描述
 
  為方便描述,本文首先產生兩個相關性很高的變量。其代碼如下:
 
  library(ggplot2)set.seed(123);x1=1:20+rnorm(10);x2=1:20+rnorm(10)(data_raw=data.frame(x1,x2))p=ggplot(data_raw,aes(x1,x2))p+geom_point(col=2)
 
  data_raw為原始數據集,包括兩個變量x1和x2,其散點圖如下。散點圖可知,x1和x2呈明顯的線性關系,相關性很高。
 
  x1和x2的散點圖
 
  2.協方差矩陣和相關系數矩陣的關系
 
  主成分分析中數據的預處理可分為兩種方式:當變量的量綱相同,值域比較接近時可以用原始數據直接計算協方差矩陣。當變量的量綱不同時或值域相差很大時,一般要對數據標準化,然后再計算協方差矩陣。數據標準化的方式為(x-mean(x))/sd(x)。數據標準化后計算的協方差矩陣即相關系數矩陣。
 
  data_scale=scale(data_raw,scale=T)cov(data_scale)#計算協方差矩陣cor(data_scale)#計算相關系數矩陣
 
  相關系數矩陣
 
  由上面結果可以看出,標準化之后協方差矩陣與相關系數矩陣是一樣的。因此在R語言中,很多以主成分分析為基礎的統計分析方法,其函數都需要指定使用協方差矩陣還是相關系數矩陣:若指定用協方差矩陣,表示是基于原始數據的分析。若指定相關系數矩陣,表明需要對數據標準化。若事先對數據標準化了,那么用什么矩陣都一樣。需要注意的是,協方差矩陣對角線元素就是此時兩個變量的方差。
 
  3.特征值和特征向量
 
  首先用eigen()獲得上述協方差矩陣的特征值和特征向量。
 
  特征值和特征向量
 
  運行結果可知,協方差矩陣的特征值為1.98833213和0.01166787。如果把這兩個特征值加起來,1.988+0.012=2,正好等于協方差對角線元素之和,也即兩個變量標準化后的方差之和。這是特征值的一個重要特性。其意義可以理解為:數據的變異程度一開始分布于兩個變量上,求取特征值的過程,實際上是重新構建了一個新的變量,使原先兩個變量的變異程度,集中到了第一個新變量上,而第二個變量能夠解釋的變異程度很小。
 
  從以上結果可知,重新構建后的變量其方差即為兩個特征值,第一個變量的方差占總方差比例的1.988/2=0.994,也即能夠解釋總變異的99.4%,第二個變量僅能解釋總變異的0.4%,所含的信息量非常少,基本可以忽略不計了。如果將第二個變量剔除掉,僅保留第一個變量用于分析,也不會對結果造成大的影響,這就是降維。實現這個過程的方法就是所謂的線性變換。
 
  4.正交變換
 
  兩個特征值對應了兩個特征向量,這兩個特征向量構成一個矩陣,這個矩陣最大的特點就是A'A=E,其中A'表示矩陣A的轉置矩陣,E表示單位矩陣。用R語言運行如下:
 
  此時A矩陣就稱為正交矩陣。正交矩陣A的兩個列向量稱為單位正交基。將這個正交矩陣A右乘原始數據標準化后的data_scale,就是我們產生的兩個新向量。其方差就是求出的兩個主成分1.988和0.012,用R語言運行如下:
 
  正交變換
 
  將正交矩陣A右乘原始數據標準化后的data_scale的過程稱為正交變換。
 
  5.主成分
 
  正交矩陣A右乘原始數據data_raw產生的兩個新變量,稱為主成分,主成分數據集我們用data_new數據集表示。至此我們從原始數據data_raw通過正交變換產生了新的數據集data_new。
 
  正交變換后的數據
 
  6方差最大化旋轉
 
  正交變換是主成分分析的思想核心。它的作用在幾何圖形上可看做是不改變原始變量形狀和大小的前提下,進行坐標旋轉,這種旋轉用下面的圖示可一目了然。
 
  data_raw=data.frame(No="raw",x1=data_raw[,1],x2=data_raw[,2])data_new=data.frame(No="new",x1=data_new[,1],x2=data_new[,2])all_data=rbind(data_raw,data_new)p1=ggplot(all_data,aes(x=x1,y=x2,colour=factor(No)))p1+geom_hline(yintercept=0,lwd=1,col=8)+geom_vline(xintercept=0,lwd=1,col=8)+geom_point(lwd=3)+stat_ellipse(lwd=1)+ylim(-30,30)+theme(axis.text=element_text(size=15),axis.title=element_text(size=15))
 
  方差最大化旋轉
 
  注意到特征向量的值均為±0.7071068,即1/sqrt(2)=cos(135),此處正交變換的作用是將坐標按逆時針旋轉了135度。所有點僅僅是位置發生了變化,其幾何形狀并未發生變化。
 
  所謂的正交變換,實際上就是坐標旋轉,通過逆時針旋轉135度,使得第一主成分的方差達到最大,因此這種方法叫方差最大化旋轉。通過方差最大化旋轉使得主成分按照方差由大到小的順序排列,選擇方差較大的前幾個主成分,剔除方差較小的主成分,以達到削減變量的目的,即降維。若需完全理解主成分分析,還需深入學習和理解線性代數的基本知識。
捕魚駕到 天涯明月刀ol