1. 程式人生 > >PCA和SVD區別和聯絡

PCA和SVD區別和聯絡

前言

PCA(principal component analysis)和SVD(Singular value decomposition)是兩種常用的降維方法,在機器學習等領域有廣泛的應用。本文主要介紹這兩種方法之間的區別和聯絡。

一、PCA:

PCA
圖1.尋找主成分方向

    PCA的中文名叫做主成分分析,是降維和去噪的一種重要方法。PCA選取包含資訊量最多的方向對資料進行投影。其投影方向可以從最大化方差或者最小化投影誤差兩個角度理解(詳細推導見機器學習聖經PRML)。假設有n×d矩陣X,每一行是一個d維樣本xi,尋找投影方向vj以最大化投影方差:

maxvj1n
i=1n
(xivjx¯)(xivjx¯)=vjCvj,s.t.vjvj=1
X'X
圖2.X’X

    其中x¯是均值,為了簡化公式,本文假設X已經進行過零均值化處理,即x¯=0vj是資料的投影方向。d×d 協方差矩陣C=1nni=1(xi)(xi)=1nXX。由於C是實對稱矩陣,可以進行對角化處理:

C=VLV
d×d正交矩陣V的每一列是特徵向量,d×d矩陣L對角線上的每一個元素是特徵值,且特徵值按遞減順序排列。把C 代回式子vjCvj
vjCvj=vjVLVvj=λj
    λj是特徵向量vj對應的特徵值。可以發現當投影方向是C的最大特徵值對應的特徵向量時,投影方向上資料的方差最大。所以用PCA進行降維時通常選取較大特徵值對應的特徵向量作為投影方向:X
Vk
Vk是最大的k個特徵值對應的特徵向量矩陣。

二、SVD:

    如果對X做奇異值矩陣分解(SVD分解):

X=USV
對角陣S對角線上的元素是奇異值,UV是正交矩陣:UU=I,VV=I。把X的奇異值分解代入協方差矩陣:
C=1nXX=1nVSUUSV=VS2nV
d×d正交矩陣V的每一列是特徵向量,不難發現特徵值與奇異值之間存在著對應關係λi=S2ii/n。對X主成分方向進行投影:
XVk=USVVk=Uk

相關推薦

PCASVD區別聯絡

前言: PCA(principal component analysis)和SVD(Singular value decomposition)是兩種常用的降維方法,在機器學習等領域有廣泛的應用。本文主要介紹這兩種方法之間的區別和聯絡。 一、PCA

KEIL、uVisionMDK區別聯絡

--------------------------------------------- -- 時間:2018-11-26 -- 建立人:Ruo_Xiao -- 郵箱:[email protected] ----------------------------------------

Java 的equals()方法 == 的區別聯絡

淺談Java中的equals和==  在初學Java時,可能會經常碰到下面的程式碼: String str1 = new String("hello"); String str2 = new String("hello"); System.out.print

關於unionjoin區別聯絡

union和join是需要聯合多張表時常見的關聯詞,具體概念我就不說了,想知道上網查就行,因為我也記不準確。 先說差別:union對兩張表的操作是合併資料條數,等於是縱向的,要求是兩張表字段必須是相同的(Schema of both sidesof union should match.)。也就

Python pip pip3區別 聯絡

python 有python2和python3的區別 那麼pip也有pip和pip3的區別 大概是這樣的 pip是python的包管理工具,pip和pip3版本不同,都位於Scripts\目錄下: 如果

後端---Java中ArrayListLinkedList區別聯絡

ArrayList和LinkedList的區別和聯絡 在一個多月之前,我曾寫過一篇部落格想要迅速簡潔的瞭解Java中所有的集合型別(List、Set、Map),然後一個月多後的我不得已又抱起《Java核心卷I 》仔細研讀,這是為什麼呢??? 是因為“溫故而知新”還是因為“書讀百遍其

C#中結構體區別聯絡

結構體 結構體定義 結構體是一種值型別,通常用來封裝小型相關變數組。例如座標或者商品的特徵。 結構體是一種自定義的資料型別,相當於一個複合容器,可以儲存多種型別。 結構體由結構體成員構成,結構體成員包含欄位,屬性與方法 結構體建

Bagging演算法Boosting區別聯絡

參考文章連結:http://www.cnblogs.com/liuwu265/p/4690486.html Bagging和Boosting都是將弱分類器組裝成強分類器的方法 備註:弱分類器也是有一定限制的起碼分類效果要比隨機分類效果好,即準確率要大於50%, 否則即使

Filter、ServletListener區別聯絡

1. Servlet 可以用來建立並返回一個包含基於客戶請求性質的動態內容的完整的html頁面;可以建立可嵌入到現有的html頁面中的一部分html頁面(html片段);可以讀取客戶端發來的隱藏資料;可以 讀取客戶端發來的顯示資料;可以與其他伺服器資源(包括資料庫和jav

知識點 - python 裝飾器@staticmethod@classmethod區別使用

定義 整潔 參數 sel spa elf pri Go assm 1.通常來說,我們使用一個類的方法時,首先要實例化這個類,再用實例化的類來調用其方法 class Test(object): """docstring for Test""" def

hashCode() equals() 區別作用(轉)

person set集合 static out fin 解決 詳細 返回 art 出處:https://www.jianshu.com/p/5a7f5f786b75 本章的內容主要解決下面幾個問題: 1 equals() 的作用是什麽? 2 equal

Java之JSONObject存取值以及HashMap區別, optString()getString()區別他的遍歷方式

結論: 1.JSONObject和HashMap用法上是一樣的,用put()方法存對於的Key-values鍵值對,取可用optString(key)和getString(key),get(key),存入的是什麼型別,取出來的時候就是什麼型別 2**.optString()在沒找到k

spring classpath:classpath*:區別實際應用

classpath:和classpath*:的含義 classpath: :表示從類路徑中載入資源,classpath:和classpath:/是等價的,都是相對於類的根路徑。資原始檔庫標準的在檔案系統中,也可以在JAR或ZIP的類包中。 classpath*::假設多個JAR包或檔

MybatisHibernate區別應用場景

hibernate: 是一個標準的ORM框架(物件關係對映)。入門門檻較高,不需要程式寫sql語句,sql語句自動生產了。 特點: 對sql的優化比較困難。 Hibernate對物件的維護和快取要比MyBatis好,對增刪改查的物件的維護要方便。 Hibernate資料庫移植性很好,MyB

ServiceIntentService 區別使用

背景 最近開發遇到一個小小的問題,因為沒怎麼用過IntentService ,所以對其生命週期也不很瞭解,還有工作原理。 intentService 詳解 intentService ——>> StartService 第一次 intent

G++C++區別評測注意事項

G++和C++的區別和評測注意事項 下面摘抄自網際網路 G++ 首先更正一個概念,C++是一門計算機程式語言,G++不是語言,是一款編譯器中編譯C++程式的命令而已。 那麼他們之間的區別是什麼? 在提交題目中的語言選項裡,G++和C++都代表編譯的方式。準確地說

BTCBCH 區別聯系?

升級問題 fff 手續費 升級 現在 風險 個人電腦 電網 pan 在比特幣剛剛出現的時期,中本聰對區塊的大小限制在1M。這種限制既保障性能較弱的個人電腦能夠參與其中,同時也起到了防止攻擊者讓比特幣網絡超載的風險發生,畢竟那時系統還很脆弱。在1M的限制下,10分鐘一個區塊最

SparkSQL(8):DataSetDataFrame區別轉換

1.概念: (1)DataSet和RDD   大資料的框架許多都要把記憶體中的資料往磁盤裡寫,所以DataSet取代rdd和dataframe。因為,現階段底層序列化機制使用的是java的或者Kryo的形式。但是,java序列化出來的資料很大,影響儲存Kryo對於小資料量

網路---HttpsHttp區別對稱加密非對稱加密

Https和Http區別 眾所周知,WEB服務存在http和https兩種通訊方式,http預設採用80作為通訊埠,對於傳輸採用不加密的方式,https預設採用443,對於傳輸的資料進行加密傳輸 目前主流的網站基本上開始預設採用HTTPS作為通訊方式,一切的考慮都基於對安全的要求,那麼如何對

JPA、HibernateMybatis區別總結

一、應用場合: 傳統公司、部分個人開發者喜歡用jpa;而網際網路公司更青睞於mybatis 原因: 1、mybatis更加靈活,開發迭代模式決定了他是網際網路公司的首先;每一次的修改不會帶來效能上的下降。 2、傳統公司需求迭代速度慢、專案改動小,hibernate可以