想象一下,你是一個營養(yǎng)學家試圖探索食物的營養(yǎng)成分。那么什么是區(qū)分食品的最佳方式?通過維生素含量?蛋白水平?或者兩者的組合?
想知道這個問題,你需要這個——主成分分析
以下內(nèi)容譯自Algobeans
區(qū)分識別一個整體里有什么成分,最直觀的就是可視化以及揭示集群,例如,在食品中,我們可以識別廣泛的類別,如肉類和蔬菜,以及子類別,如蔬菜類型。
但是如何找出這些成分呢?
主成分分析定義
主成分分析(PCA)是在大型數(shù)據(jù)集中找出少量基礎變量(被稱為“主成本”)的技術(shù)。主要思想為降維,把多指標轉(zhuǎn)化為幾個綜合指標。
主成分可以由一個或多個現(xiàn)有變量表示。
舉例來說:
我們可以用單一變量「維生素C」來區(qū)分食物,因為維生素C只在蔬菜中但不存在于肉類中。 但是用這樣的變量,肉類將全部聚集在一起(因為所有肉類對維生素C的反應都為0,無法分開)(圖一最左所示)
圖一:用變量分類
為了把肉類的子類也表示出來,我們可以用多個變量「維生素C-脂肪」來表示,因為不同的肉類脂肪含量不同,而且蔬菜中不含有脂肪,這樣我們就把蔬菜和肉類以及所含有的子類也分別開來了。(圖一中間)
如果想要得到更精細的分類,我們可以用「維生素C+纖維-脂肪」這樣的變量來把蔬菜的子類更好的展開。(圖一最右)
以上就是我們用重復的實驗和腦子獲得主成分,但這用來應付「天朝食物」還遠遠不夠。但是你還有強大的電腦啊!
接下來就厲害了,我們可以通過主成分分析法來分析一個隨機的食物樣品。
ps:樣本來自美國農(nóng)業(yè)部數(shù)據(jù),以100g生食物為標準測試,分析四個營養(yǎng)變量:維生素C、脂肪、纖維、蛋白質(zhì)。
數(shù)據(jù)發(fā)現(xiàn),某些營養(yǎng)素的存在似乎相關。脂肪和蛋白質(zhì)似乎在一同增長,而纖維和維生素C一同增長。
為了證實我們的假設,我們可以用相關性分析檢查營養(yǎng)變量之間的相關性。正如所料,脂肪和蛋白質(zhì)水平(r = -0.56)之間以及纖維和維生素C水平之間存在大的正相關(r = 0.57)。
在發(fā)現(xiàn)了這樣的關系之后,我們可以把高度相關的變量看作一個變量,我們就可以把四個維度降維成兩個維度來考慮。那么對食物集做主成分分析就可得以下結(jié)果:
數(shù)字表示用于組合變量以導出主成分的權(quán)重。例如,為了得到特定食品的最高主成分(PC1)值,我們加上它包含的纖維和維生素C的量,稍微強調(diào)纖維,然后從中減去脂肪和它含有的蛋白質(zhì),與蛋白質(zhì)抵消的程度較大。
我們觀察到,主要成分(PC1)總結(jié)了我們的目前為止的研究結(jié)果 – 它已配對脂肪與蛋白質(zhì)和纖維與維生素C.它還考慮到對之間的反向關系。因此,PC1可能用于區(qū)分肉類和蔬菜。第二主成分(PC2)是兩個不相關的營養(yǎng)變量 – 脂肪和維生素C的組合。它用于進一步區(qū)分肉(使用脂肪)和蔬菜(使用維生素C)中的子類別。
用這樣兩個變量在做食物分組的話,將得到最為詳細的分類:
肉類項目(藍色)具有低PC1值,因此集中在圖的左側(cè),與蔬菜項目(橙色)相對的一側(cè)。在肉類中,海產(chǎn)品(深藍色)具有較低的脂肪含量,因此它們具有較低的PC2值,并且位于圖的底部。幾種具有較低維生素C含量的非葉狀素食物(深橙色)也具有較低的PC2值,并出現(xiàn)在底部。
(在堅持一會 快下課了?。?/p>
主成分分析好像很厲害的樣子,但是,是個算法就有他的局限性,
PCA就有不少局限:
最大化傳播:PCA的主要假設是,顯示數(shù)據(jù)點之間最大差異的維度是最有用的。但是,這可能不是真的。例如,識別技術(shù)堆中數(shù)據(jù)點的個數(shù)。為了計算數(shù)量,沿縱軸將每個數(shù)據(jù)點分開,但是如果堆棧很短,PCA會錯誤地識別水平軸為任務的有效成分,因為這是具有最大擴展的維度。
解釋組件:PCA需要用具體的變量組合來表示組件,但是通常在現(xiàn)實中是很難實現(xiàn)的。
正交變量:PCA的一個主要缺點是其生成的主分量必須不在空間中重疊,否則稱為正交分量。這意味著組件總是彼此以90度定位。為了解決這個問題,我們可以使用一種稱為獨立分量分析(ICA)的替代技術(shù)。