Kernel PCA同時把升維和降維統一在一起,這個算法是一個矛盾的統一體,其高效的性能背後閃爍著辯證法思想的光芒!
矛盾是事物要素之間或事物之間既對立(相互排斥)又統一(相互聯繫)的關係。在機器學習中,我們辯證地思考問題,就是用聯繫的、發展的、全面的觀點,特別是用對立統一的觀點認識問題、解決問題。
低維與高維的辯證
增加維度:試圖模擬真實世界
這個世界很複雜,所以,在應用機器學習技術中,人們試圖模擬真實世界,捕獲有用的模式並獲得更準確的結果,所以傾向於添加儘可能多的特徵。
有些人認為維度越多越好,恨不得弄個成千上萬個特徵,以體現大數據功勞。但是,你添加到數據集的維度越多,預測就可能越來越困難。特別地,在某一點之後,模型的性能會隨著特徵數量的增加而降低,甚至,會導致預測能力呈指數下降。這種現象通常被稱為"維度詛咒"。
舉一個簡單的例子,假設你正在使用模型來預測25cm 2培養皿中大細菌的位置。在將粒子固定到最接近的平方釐米時,該模型可能相當準確。但是,假設現在只添加一個維度:使用3D燒杯而不是2D培養皿。預測空間呈指數增長,從25cm2增加到125cm3。添加更多維度時,計算負擔也會增加。要確定3D模型中細菌的位置是不可能的。這是一項更具挑戰性的任務。
一方面,獲得更多的特徵是為了更加精確的刻畫數據間的關係,模擬真實世界;另一方面,太多的特徵會導致維度詛咒,模型複雜、性能降低。
降低維度:去粗取精並降低過擬合風險
摺疊特徵。可以通過簡單的垃圾電子郵件識別問題來討論降維的直觀示例。這可能涉及大量特徵,例如電子郵件是否具有通用標題、電子郵件的內容、電子郵件是否使用模板等。但是,這些特徵中的一些可能會重疊。在另一種情況下,依賴於溼度和降雨量的分類問題可以通過PCA摺疊成僅一個基礎特徵,因為兩者高度相關。因此,我們可以減少此類問題中的特徵數量。
降維促進可視化。3-D分類問題可能難以可視化,而2-D分類問題可以映射到簡單的2維空間,而1-D問題可以映射到簡單的線。下圖說明了這個概念,
降維促進加強你的算法。比如在應用SVM前執行PCA會給我們帶來不少的加速。所以,如果保持維度足夠簡單,還是有不少利好。一個很好的例子是物體檢測中的HOG特徵。PCA在HOG特徵向量上執行。仔細觀察特徵向量可以看出,簡單的維度減少只是總結了不同的特徵組,這樣就足夠了,這給了2到3倍的加速。
提高泛化能力,降低過擬合風險。降維後由於模型具有較少的自由度,因此過度擬合的可能性較低,該模型將更容易推廣到新數據。此外,如果我們使用降維,進行特徵篩選,將促進重要變量的呈現,這樣有助於提高模型的可解釋性。
維度降低不會使數據更加可分離,通過減少壓縮特徵,會產生信息損耗,這種信息損耗可能對學習模型的推廣有用,即它對未見數據的性能會增加。
核方法升維:分離數據的差異性並高效工作
與非核方法相比,更高維度空間在現實世界問題中更加真實,能夠揭示數據中的非線性關係,核方法將數據投影到高維特徵空間。通過映射,把原始空間中數據間的差異在更多維度的新空間中放大、分離,實現線性可分的目的。
核方法的本質作用,就是尋找核函數將我們數據"分散"到Hilbert空間,實現數據間的比較。粗略地說,內核或多或少是一個相似性矩陣,核方法可以將天真的比較方式,即原始空間中的常規點積,切換為最適合數據的核方法。然後,通過數學變換增加空間中比較的維度。確切地說:將數據映射到更高維度的空間(RKHS),甚至可以具有無限維度(若用RBF),並且在該空間中使用了點積。基於核方法的主要技巧是你從未明確地將數據映射到RKHS - 這就是它可以工作的原因。所有的工作都是通過在兩個樣本上應用你的核函數來完成的。直觀地說,核方法只是為你提供了一種更好的方法來比較你的數據:沒有真正明確地向你的數據添加維度,僅僅用一種比較它們的更合適的方法而已。
使用內核的全部魔力是不必在RKHS中明確使用點積,它由核方法保留在引擎蓋下!否則,您甚至無法計算兩個向量的徑向基核函數,因為具有無限維度。這個技巧讓RKHS高效工作。
可見,降維和升維各有長處並有其目的性,這似乎是很矛盾的!然而這兩個方法卻可以一起高效合作,這體現了辯證的統一思想。
線性與非線性的辯證
要分清數據的線性、數據線性可分兩組概念。本文主要指後者。
數據的線性與非線性
線性指量與量之間按比例、成直線的關係;而非線性則指不按比例、不成直線的關係。非線性中使得整體不再是簡單地等於部分之和,而可能出現不同於"線性疊加"的增益或虧損。比如,雷射的生成就是非線性的!當外加電壓較小時,雷射器猶如普通電燈,光向四面八方散射;而當外加電壓達到某 一定值時,會突然出現一種全新現象:受激原子好像聽到"向右看齊"的命令,發射出相位和方向都一致的單色光,就是雷射。
線性可分與非線性可分
分類問題中的線性可分問題。線性可分是指有一些函數可以將兩個類分開,這兩個類是輸入變量的線性組合。例如,如果有兩個輸入變量,x1並且x2有一些數字theta1,theta2那麼函數f(x)=theta1.x1 + theta2.x2就足以預測輸出。在二維中,這對應於直線,在3D中它變成平面並且在更高維空間中它變成超平面。
下圖是在二維空間中線性不可分的數據,形狀像同心圓,無法用一條直線分開。
但是,如果我們給每個點一個額外的坐標比如z=1 - sqrt(x*x + y*y),那麼問題就變得線性可分,因為紅色和藍色點可以通過一個二維平面z=0分開。
這些形象展示了核技巧背後的思想:
將問題映射到具有更多維度的空間使得問題更可能變得線性可分。
線性可分與非線性可分在核方法中是辯證的統一:在低維空間中數據線性不可分,通過映射到高維空間中是可線性可分的;而高維空間中線性可分返回到低維空間中又是非線性可分的。所以這兩者是矛盾而統一的。
Kernel PCA實現降維與升維、線性與非線性的辯證統一
核主成分分析(Kernel PCA),是對PCA算法的非線性擴展。
傳統PCA無法實現非線性投影
PCA是線性的,其對於非線性數據往往顯得無能為力。
PCA降維試圖找到數據被限制的低維線性子空間,但數據可能是非線性。如下圖:
這裡的數據點(左側)主要位於2D的曲線上。PCA不能將維數從2減少到1,因為這些點不是沿直線定位的。但是,數據"顯然"位於一維非線性曲線周圍。因此,雖然PCA失敗,但必須有另一種方式!實際上,Kernel PCA可以找到這種非線性流形並發現數據實際上幾乎是一維的。
總結一下。
Kernel PCA把Kernel升維和PCA降維兩種方法有機的融合在一起。
第一、通過將數據映射到更高維空間來實現。這看起來非常矛盾:核方法尋求更高維度,而PCA尋求更低維度。降維與映射到高維,這是兩個相反的方向!但事實並非如此。數據被映射到更高維度的空間,但隨後變成位於它的較低維度子空間。因此,先增加維度以便能夠降低維度。在這裡增維與降維實現了辯證的統一。
第二、之所以KPCA發揮作用,源於數據在低維空間中,無法尋找到線性子空間進行降維;但通過核方法映射到高維空間中,可以清晰的找到線性子空間進行降維投影,返回到低維空間中,是非線性投影(非線性流行)。在這裡線性與非線性實現了辯證的統一。
KPCA算法實現的關鍵
KPCA將原來X映射到Φ(x),在新空間中計算協方差。
PCA的目標函數,是在原維度空間中對新基(特徵向量)投影的方差尋找最大化:
KPCA目標函數,是映射到新維度空間中對新基投影的方差尋找最大化:,
其中:
KPCA與PCA的對比
下圖是二維空間中類似兩條曲線的數據分布:
如果應用普遍的線性PCA,那麼變換後的前兩個主成分如下,只是倒了個,並沒有提高區分能力。
如果應用高斯核PCA,那麼降維後,前兩個主成分如下,顯然可分。
特別是其第一個主成分,一目了然,實現了流形向線性的投射,並且嚴格分開。
分類與聚類的辯證
PCA方法是一種無監督的聚類技術,然而在上面的圖形中,仿若我們是在做分類,而且似乎做的很好。機器學習的最高境界實際上是無監督技術,是未來的發展方向,能夠不利用標籤就能正確聚類(分類)代表著算法的高度智能。所以聚類做的達到一定程度,是能夠比擬分類的。聚類在一定程度向矛盾的對立面分類轉化。這就是辯證法中的「你中有我,我中有你」,在一定程度相互轉化,是統一的。
如果有一個未標記的數據集,聚類讓我們來獲得大量洞察力。可以使用不同的群集算法將數據自動分組到多個群集中,揭示屬於特定群集的數據的共同點。如下圖所示,創建了5個聚類,揭示具有不同特徵的人。
我們知道在聚類中,譜聚類對數據分布的適應性更強,有著出色的聚類效果!而本講中的Kernel PCA在著與譜聚類的某種類似程度。
譜聚類首先將原始數據映射到一個新的空間,然後做Kmeans。譜聚類的前半部分相當於Kernel PCA。Kernel PCA對核函數映射過的相似度矩陣進行特徵值分解,而譜聚類對拉普拉斯矩陣(也是相似度)進行特徵值分解。如果說普通PCA是將原始數據進行正交變換映射到新的空間,那麼譜聚類和Kernel PCA就是對原始數據進行某種非線性變換映射到新的空間,並在新空間中進行降維。
很多時候對數據進行線性變換仍然無法獲得良好的可分性,但引入非線性性則可能做得到,這也是核方法存在的意義,從這個角度上看,聚類又為有監督的分類提供了基礎。聚類與分類可以一起共同完成一個任務,效果更好,這就是辯證法中的同一性原理,統一推動事物的運動變化,構成了事物的發展!