1. 程式人生 > >主成分分析(PCA)和基於核函式的主成分分析(KPCA)入門

主成分分析(PCA)和基於核函式的主成分分析(KPCA)入門

前言

主成分分析是在做特徵篩選時的重要手段,這個方法在大部分的書中都只是介紹了步驟方法,並沒有從頭到尾把這個事情給說清楚。本文的目的是把PCA和KPCA給說清楚。主要參考了YouTube上李政軒的Principal Component Analysis and Kernel Principal Component Analysis這個視訊(強烈推薦看一下)。

PCA的原理

什麼是投影

主成分分析所做的工作就是將資料集從高維投影到低維,從而用極少的幾個特徵來涵蓋大部分的資料集資訊。
所謂的投影,就是下圖所示的這樣。

投影

圖1:向量投影圖

xj投影到v上的向量為
xj=(
||xj||cosθ)v||v||

其中,θxjv的夾角。
由於向量之間的內積為
<xj,v>=||xj||||v||cosθ

故有
xj=<xj,v>||v||2v

如果我們把v設定成單位向量的話(即||v||=1)就有
xj=<xj,v>v

也就是說我們只要求出<xj,v>就可以知道xj投影到v上的大小了。
又由於在座標當中,內積可以表示為
<xj,v>=xTjv=vTxj

故可以用vTxj來表示投影后的數值大小。

投影后的方差

主成分分析認為,沿某特徵分佈的資料的方差越大,則該特徵所包含的資訊越多,也就是所謂的主成分。
我們已經知道了可以用v

Txj來表示投影后的數值大小,那麼我們現在就可以算出投影后的方差大小了。注意我們麼已經把資料標準化過了,所以vTx的均值為vT0=0

σ2=1N1Ni=1(vTxi0)2=1N1Ni=1(vTxi)(vTxi)

注意到vTxi是一個數值,不是向量,故有vTxi=(vTxi)T於是
σ2=1N1Ni=1vTxixTiv=vT(1N1Ni=1xixTi)v=vTCv

其中,C=1N1Ni=1xi

相關推薦

成分分析PCA基於函式成分分析KPCA入門

前言 主成分分析是在做特徵篩選時的重要手段,這個方法在大部分的書中都只是介紹了步驟方法,並沒有從頭到尾把這個事情給說清楚。本文的目的是把PCA和KPCA給說清楚。主要參考了YouTube上李政軒的Principal Component Analysis and

支援向量機SVM基於函式的非線性SVM

前言 線性分類SVM是一種線性分類非常有效的方法,若分類問題是非線性,需要考慮對資料進行 空間變換,將非線性分類問題轉變為線性分類問題,使非線性SVM的學習轉變為線性SVM的學習。 若使用對映ϕ\phiϕ將例項從原空間X\mathcal XX(一般為歐式空

如何看待鬥魚女播魔王在下蘿莉控iib站女播夙胤言生在直播間女女舌吻?

出生的粉絲。2 b和9 s生活之前,就像普通朋友的關係,可以是一個笑話,可以用盒子一起旅行,好朋友之間的關係。 尼爾時代的直播還不是一段關係。第一個吻是說,射擊是因為接吻是不推薦的,然後魔鬼臉上的吻,魔鬼是特別高興後的手。問粉絲不是建議。中間又沒有但需要伸出你的舌頭吮吸,吻後主如此開心,不能停止笑。那次舌頭

19ASP.NET Core EF建立模型包含屬性排除屬性、鍵、生成的值

1.什麼是Fluent API? EF中內嵌的約定將POCO類對映到表。但是,有時您無法或不想遵守這些約定,需要將實體對映到約定指示外的其他物件,所以Fluent API和註解都是一種方法,這兩種方法是用來配置EF在對映屬性時繞開約定。Code first fluent API最常訪問通過重寫OnModel

七:重建二叉樹依據先序遍歷或者後序遍歷中序遍歷重建二叉樹

off 相同 tree int roo 節點 先序 throw -a 對於一顆二叉樹。能夠依據先序遍歷(或者後序遍歷)和中序遍歷(樹中不含反復的數字)又一次還原出二叉樹。 解析: 1. 先序遍歷序列的第一個元素必然是根節點,能夠由此獲取二叉樹的根節點。 2. 依

跨域問題相關知識詳解原生jsjquery兩種方法實現jsonp跨域

syn con 加載 developer 兩種方法 ray exe 編寫 分組 1、同源策略 同源策略(Same origin policy),它是由Netscape提出的一個著名的安全策略。同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽

LeetCode 381. Insert Delete GetRandom O(1) - Duplicates allowed 插入刪除獲得隨機數 常數時間 允許重復項

anti mean 插入 another right operation view 回顧 true Design a data structure that supports all following operations in average O(1) time. N

unity3d嵌入到iOS工程3d物體iOS控制元件顯示在同一個view上

最近公司要開發一款用於3d展示的應用,通過在網上拜讀各大神的帖子,終於完美解決此類問題。(unity3d版本2017.3,xcode9.2) 前邊unity3d打包iOS工程的方法在此就不做贅述,其他帖子基本可以解決,本帖直接上乾貨。 1、在打包好的iOS工程中,找到UnityAppCont

事件流事件冒泡捕獲,函式閉包等

事件流 事件流描述的是從頁面中接受事件的順序,當幾個都具有事件的元素層疊在一起的時候,那麼你點選其中一個元素,並不是只有當前被點選的元素會觸發事件,而層疊在你點選範圍的所有元素都會觸發事件。 事件流包括兩種模式:冒泡和捕獲 事件捕獲: 父級元素先觸發,子集元素後觸發;(由外到

應用SuperIOSIO開源跨平臺物聯網框架ServerSuperIOSSIO構建系統的整體方案

SSIO的更新       在SSIO上增加了UDP通訊方式,可以到Github上下載原始碼。在原來的專案中,遠端的裝置與中心站的資料互動並沒有使用過UDP方式。這種短連線的通訊鏈路,不容易維護,主要體現在:(1)持續的資料互動能力。(2)對現場裝置進行長時間的維護和校準。(3)SSIO要協調裝置、

高斯分佈概率密度函式PDF累積分佈函式(CDF)

正態分佈(Normal distribution)又名高斯分佈(Gaussian distribution),是一個在數學、物理及工程等領域都非常重要的概率分佈,在統計學的許多方面有著重大的影響力。 若隨機變數X服從一個數學期望為μ、標準方差為σ2的高斯分佈,記為:X∼

類中的過載操作符=copy建構函式的區別

過載操作符的關鍵字? copy建構函式? 過載“”=“”? 兩種方式的使用方法有什麼不同? lhs和rhs變數的含義?經常在哪裡面見到? lhs指的是==運算子左邊的運算元;(left-hand side) rhs指的是==運算子右邊的運算元;(righht-han

spark學習記錄五、Spark基於資源排程管理器的提交模式

一、Standalone(Spark自帶) 1.1 Standalone-client模式  提交命令: ./spark-submit --master spark://hadoop1:7077 --class org.apache.spark.examples.Spar

Python技巧:元類Metaclasses利用Type構建的動態類Dynamic Classes

`metaclass`和`type`關鍵字在Python程式碼中較少被使用(也正因如此,它們的作用也沒有很好的被理解)。在這篇文章中,我們將探究`type()`的型別(types)和跟`metaclasses`相關的`type`的用法。 這是我的型別麼?首先來看`ty

一個案例講解獲取字串長度的函式mb_strlen字串擷取函式mb_substr

這是在專案中遇到的一小段,包含了mb_strlen()和mb_substr()兩個函式: > function _cut($_string,$_strlen){ > if(mb_

深度置信網路DBN受限玻爾茲曼機RBM

原部落格於http://blog.163.com/silence_ellen/blog/static/176104222201431710264087/ 本篇非常簡要地介紹了深度信念網路的基本概念。文章先簡要介紹了深度信念網路(包括其應用例項)。接著分別講述了:(1)

演算法導論——動態規劃之最長公共子序列LCS最長迴文子序列LPS

有兩個字串A和B,假設為A=”abcbdab”,B=”bdcaba”;最長公共子序列(LCS)問題指的時找到A和B的一個公共的子串C,C的長度要是最長。 在這裡我們很明顯的發現最長子序列為”bcba” 用動態規劃的思想來考慮這個問題: 若A={a1,a2,

Qt的painter相關針對QGraphicsItemitem中的繪製的座標相關測試

記錄下自己在實際進行封裝item的時候,出現的一個現象bug, 以自己實際的測試為標準: 封裝繪製一個圓的控制元件的時候,直接對paint()函式進行重新,也對該 程式碼如下: painter->setPen(QPen(QBrush(pen

細說linux IPC基於socket的程序間通訊

    【版權宣告:尊重原創,轉載請保留出處:blog.csdn.net/shallnet 或 .../gentleliu,文章僅供學習交流,請勿用於商業用途】     在一個較大的工程當中,一般都會有多個程序構成,各個功能是一個獨立的程序在執行。既然多個程序構成一個工程,

java搭建阿里雲伺服器環境java環境+mysql+tomcat部署 JavaWeb 專案到雲伺服器十分詳細

文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關注我的微信公眾號:好好學java,獲取優質學習資源。購買一系列的東西其實就是花錢買塊區域,伺服器,域名,雲解析,花了好多money。。。一、租伺服器百度搜索阿里雲進入官網首頁,點選登入進入登入頁面,可以使用郵箱登入或者註冊