(十一)KPCA非線性降維與核函式

weixin_34146805發表於2018-12-10

一. 前言

在前文講述PCA降維演算法時提到,PCA只能處理線性資料的降維,本質上都是線性變換,並且它僅是篩選方差最大的特徵,去除特徵之間的線性相關性。對於線性不可分的資料常常效果很差。


10902146-e7ca5637874c5f9a.png

二. KPCA演算法

KPCA演算法其實很簡單,資料在低維度空間不是線性可分的,但是在高維度空間就可以變成線性可分的了。利用這個特點,KPCA只是將原始資料通過核函式(kernel)對映到高維度空間,再利用PCA演算法進行降維,所以叫做K PCA降維。因此KPCA演算法的關鍵在於這個核函式。

假設現在有對映函式φ(不是核函式),它將資料從低維度對映到高維度。得到高維度資料後,我們還需要計算協方差矩陣,從前文可以看出,協方差矩陣每個元素都是向量的內積。對映到高維度空間後,向量維度增加,計算量大幅度增大。即便計算量不是問題,那麼這個φ應該把資料對映到多少維度呢?怎麼求這個φ呢?這些都是很困難的。但是核函式剛好可以解決這個問題,下面我們看一下什麼是核函式。

三. 核函式

1. 核函式定義

核函式K(kernel function)可以直接得到低維資料對映到高維後的內積,而忽略對映函式具體是什麼,即
K(x, y) = <φ(x), φ(y)>,其中x和y是低維的輸入向量,φ是從低維到高維的對映,<x, y>是x和y的內積。

核函式是一個非常有趣和強大的工具。 它是強大的,因為它提供了一個從線性到非線性的連線以及任何可以只表示兩個向量之間的點積的演算法。如果我們首先將我們的輸入資料對映到更高維的空間,那麼我在這個高維的空間進行操作出的效果,在原來那個空間就表現為非線性。

在KPCA中,剛好可以利用核函式的特點,反正我們的目的就是求資料在高維空間的內積而已(協方差矩陣),又何必知道怎麼對映的呢?

2. 常見核函式

核函式有很多限制要求,比如要求是連續的,對稱的,等等。這裡不做深入探討,畢竟不是數學系的,不用深入研究(恩,其實是看不懂)。下面列舉一些常用的核函式,至於怎麼選擇,恩,目前是世界性難題。

  • 線性核
    函式簡單,只是將2個向量求內積加上個常數,只能解決線性可分問題,如果我們將線性核函式應用在KPCA中,我們會發現,推導之後和原始PCA演算法一模一樣。


    10902146-d7c9db567076a3d1.png

    引數C可以調整。

  • 多項式核
    比線性核稍微複雜一點,由於多了指數d,所以可以處理非線性問題。 這裡要求a大於0,c大於等於0。多項式核心非常適合於所有訓練資料都歸一化的問題。這個核函式是比較好用的,就是引數比較多,但是還算穩定。


    10902146-9c2c5b5b6357001c.png

    引數a,c,d都可以調。

  • 高斯核
    高斯核是徑向基函式核(RBF)的一個典型代表。非常好用,用的也很多。
    高斯核在計算中涉及到兩個向量的歐式距離(2範數)計算,可調引數只有一個sigma,它控制著函式的作用範圍。


    10902146-44ec121b98a9b3b2.png

以二維向量為例,如果y固定,那麼y就充當著對稱軸的作用;sigma控制著函式的胖瘦,也就是作用範圍。下圖中,距離對稱軸小於sigma的範圍內,影象是有高度的,sigma之外的範圍,函式基本沒有高度(沒起作用)。


10902146-8e40d2022c7a9bff.png
sigma=1
10902146-5b9607a19d0c4aa8.png
sigma=5
  • 指數核
    也是RBF代表,和高斯核很像,只是將L2範數變成L1。


    10902146-c7293582324d2dbd.png
  • 拉普拉斯核
    拉普拉斯核完全等價於指數核,唯一的區別在於前者對引數的敏感性降低,也是一種RBF。


    10902146-ab7049db1a6d142f.png

四. KPCA的簡單推導

為了進一步理解KPCA,我們這裡做一個簡單的推導,看看KPCA究竟是什麼鬼東西!

假設原始資料是如下矩陣X:(資料每一列為一個樣本,每個樣本有m個屬性,一共有n個樣本)

10902146-5638eb7c33865d37.png

將每個樣本通過函式φ對映到高維空間,得到高維空間的資料矩陣φ(X)。
10902146-18d5b313bff6eff6.png

用同樣的方法計算高維空間中資料的協方差矩陣,進一步計算特徵值與特徵向量。
10902146-ee4292cd468d36cc.png

定理:空間中的任一向量(哪怕是基向量),都可以由該空間中的所有樣本線性表示,這點對KPCA很重要。
所以根據這個定理,我們就可以用所有樣本來表示特徵向量:
10902146-5977317375d88498.png

將這個線性組合帶回到特徵向量公式,替換特徵向量,得到:
10902146-bc11df58baa32ffe.png

進一步,等式兩邊同時左乘一個 φ(X)的轉置:(目的是構造2個φ(X)的轉置 乘 φ(X))
10902146-9ce6aab47df9b544.png

10902146-2615e209be799015.png

等式兩邊同時除以K,得到:
10902146-15d4ef99405fab1a.png

得到了與PCA相似度極高的求解公式。
下面來看一下這個K,到底怎麼求呢?我們的核函式閃亮登場了!

10902146-b097d8574d5b61aa.png

注意,協方差矩陣是X乘X的轉置,落實到計算是任意2個特徵(行)的點積;而此處的核矩陣K是反過來的,X的轉置乘X,它落實到計算是任意2個樣本(列)的點積。這個核矩陣是n維的,維度和樣本數相同,而不是特徵數。

根據核函式的性質,上面這個核矩陣K可以直接在低維空間計算得到:

10902146-18310758acf502c0.png

接下來,和PCA相同,求K最大的幾個特徵值所對應的特徵向量,由於K為對稱矩陣,所得的解向量彼此之間肯定是正交的。
注意,這裡的特徵向量α只是K的特徵向量,不是高維空間中的特徵向量。看之前那個定理,高維空間的特徵向量 W 與對映函式有關是 φ(X)α。既然α不是高維空間的座標軸,那它是什麼呢?它其實是全部樣本在這個軸上的投影了,也即是我們所需的進行降維後的資料了。
由於K是n(樣本數)維方陣,所以最多有n個特徵值,所以理論上講KPCA的降維結果最高可以達到n維,會比降維之前的特徵多。但是核心資訊都在前幾個軸上面,至於取幾個軸,就看經驗啦。

五. 總結一下KPCA演算法的計算過程

  1. 去除平均值,進行中心化。
  2. 利用核函式計算核矩陣K。
  3. 計算核矩陣的特徵值和特徵向量。
  4. 將特徵相量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣P。
  5. P即為降維後的資料。

相關文章