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全稱叫「主成分分析」,這個新特徵就是「第一主成分」,而特徵一般也稱作「變數」。
daughter: 好神奇啊,爸爸!這個動畫讓我想起了勾股定理。但我聽說pca是跟特徵向量和特徵值有關的,它們在圖裡面的什麼位置呢?
you: 哈哈,觀察得很仔細嘛!你知道紅點的方差怎麼算吧,就是每個點跟中心點的距離的平方和。誤差呢,用紅色連線長度的平方取平均值表示。因為紅線和黑線總是垂直,所以這兩個量的和就剛好是所有藍點跟中心點距離的平方取均值。這就是你說的勾股定理呀。這個總和是不變的,跟黑線的方向沒有關係。所以,方差越大時,誤差也會越小。
咱們可以把黑線想象成一根光滑的鐵棒,紅色線想象成乙個個的彈簧。你學過物理了,應該知道胡克定理吧,就是彈簧的能量跟它長度的平方成正比。所以鐵棒就會自己轉動到合適的方向,讓總能量保持最小才停止。
要說到特徵向量和特徵值,得先給你講講協方差矩陣。繼續上面的例子,這是對應的2×2的協方差矩陣。
它說明x的方差是1.07,y的方差是0.64,x和y之間的協方差是0.63. 它是乙個方形對稱陣,所以可以通過選擇新的正交座標系,把它轉換成對角矩陣。座標系就是通過特徵向量得到的。它們對應的特徵值就是新的對角陣對角線上的值。所以,新座標系下的協方差陣是這樣乙個對角陣:
這意味著,兩個新變數之間的協方差變成了0. 如果我們用第乙個座標軸(特徵向量)做投影,紅點的方差就是1.52,也是最大的方差。原因其實就是:第一主成分的方向由協方差矩陣的第乙個特徵向量給出。(詳細說明看這裡)
在上面的圖中也可以看到,黑色鐵棒垂直方向有一條灰色線,它們組成乙個正交座標系。藍色點在鐵棒轉動到什麼時候會變得不相關呢?答案跟之前一樣,又是品紅色線標記的方向。現在可以告訴你我是怎麼找到這個方向的了:它就是協方差矩陣第乙個特徵向量的方向,在這個例子裡,是(0.81, 0.58).
****** sense of principal component analysis, eigenvectors & eigenvalues
a tutorial on principal component analysis
該如何向你奶奶解釋企業級架構
你會如何向你奶奶解釋企業級架構?幾年前,我參與進為乙個新的海外研發中心僱傭 200 多名開發者 的工作 這意味著在為期一年的時間內進行 300 400 次技術面試。我很快意識到要從這些貼上 複製開發者 譯者注 拷貝複製式開發見維基百科的解釋 copy and paste programming 中區...
typedef int a 10 怎麼解釋?
typedef int a 10 a b 10 為什麼分配400個位元組的空間?int a 10 為什麼分配了40個位元組的空間?問題 應該怎麼解釋typedef的這種行為呢?而如果換成是 define a int 10 以上定義則報錯?typedef int a 10 說明a就等同於int 10 ...
分享python怎麼呼叫直譯器
如果你是linux系統的話。python的直譯器通常安裝目錄 usr local bin python 在這些機器上把 usr local bin目錄設定成你的unix shell的搜尋路徑中,使得它可以通過鍵入命令啟動。python安裝在windows機器上,通常是放置在c python26,但你...