怎么跟你奶奶解釋PCA

前言
PCA(principal component analysis)是一個遍地可見的處理數據的方法,但是理解起來好像有點困難。 愛因斯坦說,如果沒法跟你奶奶解釋清楚一個東西,你就還沒算真正理解它。看完這篇“教程”后,不妨回家試一試:-)
正文
想象下你正在家庭聚餐.
great-grandma: 聽說你最近在研究”Pee-See-Ay”啊, 能告訴我那是什么嗎…
you: PCA只是一個用來濃縮數據的方法啦。你看, 咱這桌上有幾瓶酒。我們可以用顏色啦,酒精濃度啦,年代啦這樣一些特征來描述它們。如果有很多酒,比如在酒窖里,咱們也可以用這樣的方法。但是這些特征里面有一些描述了相似的特性,顯得有點多余。比如顏色越深時,往往濃度也越高(純屬瞎編),那我們就可以把這兩個特征合二為一,這樣就可以用比較少的特征來概括描述咱們的酒了。這個就是PCA做的事啦。
great-grandma:為什么要做濃縮呢..
you: 這個跟“濃縮洗衣粉”是一個道理呀。每次洗衣服時,只要加一點點濃縮洗衣粉就夠了。但換做普通洗衣粉,就得加好幾勺不是嗎?洗衣粉濃縮了之后變輕了,數據濃縮了之后也會省下很多空間,電腦處理起來也沒那么費勁了。
grandma: interesting! 所以PCA做的就是檢查下哪些特征是多余的,然后把它扔掉嗎?
you: 阿嬤,這個問題問的太有水平了! PCA並不是選出一些特征,然后丟掉另外的特征。事實上,它找出了一些新的特征,而且這些新特征可以很好的描述咱們的酒。怎么找的呢?利用的還是之前的特征,但有些不一樣了。比如,酒的年代減去它的酸度,就可以變成一個新的特征。這樣的組合有很多,PCA做的就是找出最有用的那些組合(線性組合)。
Mum: 唔。。聽起來很不錯呀,但我還是不太理解。你剛剛說這些新特征“概括”了那些酒是什么意思?
you: 首先啊,我們描述酒的時候,其實就是想找一些比較有區分度的特征。如果說桌上十瓶酒,每瓶都十塊錢,那價格就沒多少區分度了。我們知道其實這些酒是有區別(濃度,年代等)的,但這時候如果用價格來描述它,咱們沒法根據價格判斷是什么酒,這就說明它沒法起到“概括”的作用。所以,PCA就是要找出那些區分度很大的新特征,來“概括”咱們的酒。
其次呢,我們也想要找到這樣的特征:它能讓我們重現原貌,看到原來的酒的特征。就像把一篇文章濃縮成摘要之后,我想要根據摘要重現原來的文章; 或者一張圖片打了馬賽克之后,想要把它變回原來的高清大圖。對,就是想找到有這種超能力的新特征。
巧的是,這兩個目標其實是一樣的,而且PCA都能實現,一石二鳥!
wife:但是,這兩個目標看起來很明顯就不一樣啊?
you: 唔(怎么這么不給面子……)唉,我畫個圖給你看看吧(拿一張紙巾開始畫)。我們找兩個特征來描述酒,比如說顏色深度和酒精度數——我不確定它們是不是相關的,但就假設是吧。這是不同的酒的散點圖。
這一堆圓點里面,每一個表示一瓶酒。我們看,圖里面的兩個特征(x和y)是相關的。所以,可以畫一條穿過這些點的線,讓這些點都投影到線上,這樣我們就找到一個新特征了。新的特征可以用線ω_1*x+ω_2*y來表示,ω_1,ω_2不同時,線的方向就不同。
現在來仔細看看,這些點是怎么投影到不同的線上面的(紅點表示藍點的投影)。
線有這么多方向,但只要拿最好的那個來做新的特征,PCA自己會找到那條最好的線。什么是最好的呢?首先,線上的紅色點的變化范圍要最大(方差最大)。其次,當我們要用新特征(紅色點)來重現原來的兩個特征(藍色點)時,這個過程的誤差(紅色連線)要越小越好。
仔細看看動畫,你會發現“方差最大”和“誤差最小”這兩個條件,在線轉動到品紅色標記的方向時,同時滿足了,也就是說,剛才那兩個目標同時實現了。而這條線就相當於PCA找出的新特征。
順便多說兩句,PCA全稱叫“主成分分析”,這個新特征就是“第一主成分”,而特征一般也稱作“變量”。
daughter: 好神奇啊,爸爸!這個動畫讓我想起了勾股定理。但我聽說PCA是跟特征向量和特征值有關的,它們在圖里面的什么位置呢?
you: 哈哈,觀察得很仔細嘛!你知道紅點的方差怎么算吧,就是每個點跟中心點的距離的平方和。誤差呢,用紅色連線長度的平方取平均值表示。因為紅線和黑線總是垂直,所以這兩個量的和就剛好是所有藍點跟中心點距離的平方取均值。這就是你說的勾股定理呀。這個總和是不變的,跟黑線的方向沒有關系。所以,方差越大時,誤差也會越小。
咱們可以把黑線想象成一根光滑的鐵棒,紅色線想象成一個個的彈簧。你學過物理了,應該知道胡克定理吧,就是彈簧的能量跟它長度的平方成正比。所以鐵棒就會自己轉動到合適的方向,讓總能量保持最小才停止。
要說到特征向量和特征值,得先給你講講協方差矩陣。繼續上面的例子,這是對應的2×2的協方差矩陣。
它說明x的方差是1.07,y的方差是0.64,x和y之間的協方差是0.63. 它是一個方形對稱陣,所以可以通過選擇新的正交坐標系,把它轉換成對角矩陣。坐標系就是通過特征向量得到的。它們對應的特征值就是新的對角陣對角線上的值。所以,新坐標系下的協方差陣是這樣一個對角陣:
這意味着,兩個新變量之間的協方差變成了0. 如果我們用第一個坐標軸(特征向量)做投影,紅點的方差就是1.52,也是最大的方差。原因其實就是:第一主成分的方向由協方差矩陣的第一個特征向量給出。(詳細說明看這里)
在上面的圖中也可以看到,黑色鐵棒垂直方向有一條灰色線,它們組成一個正交坐標系。藍色點在鐵棒轉動到什么時候會變得不相關呢?答案跟之前一樣,又是品紅色線標記的方向。現在可以告訴你我是怎么找到這個方向的了:它就是協方差矩陣第一個特征向量的方向,在這個例子里,是(0.81, 0.58).