降維三部曲 三

2021-08-03 13:00:46 字數 1230 閱讀 7110

kernel pca:講它又不得不夾私貨,kernel tricks。 相信大家對 kernel tricks 都不陌生,最直觀的印象是它能把線性演算法變成非線性, 深刻一點的理解是它自帶樣本空間對映功能, 可以把低維 feature 對映到高維:

從 kernel method 的定義可以看出其實它在本質上還是算點積,不同的是首先要把 x 對映到新 的空間裡,通過對映函式

這樣就把 rbf kernel 寫成了兩個無窮維的向量的點積形式,相當於把 x 給對映到了無窮維。 精髓的是,我們並不需要跑到無窮維上就能直接算出這個點積的值。這就是 kernel tricks, kernel pca 顧名思義就是用上了 kernel tricks 的 pca, 相信讀到這裡 大家基本上都能想到 kernel pca 大概要怎麼玩了:

1. 利用 kernel tricks 計算 kernel matrix k

2. 對k做svd分解,找到topk的特徵向量

3. 把高維資料 x 投射到 k 個特徵向量上,從而把它降低到 k 維

但是這裡有個很深的坑, 而且不得不承認作者自己在很長的一段時間裡都是在這個坑里度過 的。假設樣本 x 維度為

這之中最重要的一步是

囉嗦了這麼多,其實就是想要證明 pca 不但可以從協方差矩陣 c 的角度入手, 也可以從 kernel matrix k 的角度入手,於是把上面的線性 kernel 換成其他的 kernel,就得到了 kernel pca。kernel pca 降維打擊後的蛋捲是這樣的

但是蛋捲貌似看不出 kernel pca 的作用,感覺跟普通的 pca 沒什麼區別, 不過下面這個例子就能看出它的效果。

人生三部曲

人生三部曲 童年沙丁魚罐頭似的公共汽車在曬的發燙的柏油路上緩慢地爬著。我 瘦瘦小小的個子在擁擠的人群中喘不過氣來。還要多久呀?人們煩躁而沉悶的氣氛充斥著整個車廂。忽然,我看見一位打扮入時的西裝人士,正悄悄地把手伸入一位老人的口袋。我第一反應就是有小偷!於是大聲脫口而出,一車人都回頭驚悸地看著我,西裝...

Jmock使用三部曲

import org.jmock.mockery import org.jmock.expectations class publishertest extends testcase execute publisher.publish message verify assert.assert.注意 ...

SoftwareRender三部曲 前言

這個系列主要是介紹如何簡單製作乙個softwarerender,後面會分三篇文章來完成這個系列。在看這個系列之前最好先閱讀之前 遊戲開發3d數學筆記 在這個工程中的所需要的一些數學庫 vector matrix mesh等 都 於之前3d數學系列。當然,這些數學庫使用上比較簡單,如果你對其數學原理不...