1. 程式人生 > >為什麼對一些矩陣做PCA得到的矩陣少一行?

為什麼對一些矩陣做PCA得到的矩陣少一行?

很多時候會出現把一個N*M的矩陣做pca(對M降維)之後卻得到一個M*(M-1)矩陣這樣的結果。之前都是數學推導得到這個結論,但是,

今天看到一個很形象的解釋:

Consider what PCA does. Put simply, PCA (as most typically run) creates a new coordinate system by (1) shifting the origin to the centroid of your data, (2) squeezes and/or stretches the axes to make them equal in length, and (3) rotates your axes into a new orientation. (For more details, see this excellent CV thread: 

Making sense of principal component analysis, eigenvectors & eigenvalues.) However, it doesn't just rotate your axes any old way. Your new X1 (the first principal component) is oriented in your data's direction of maximal variation. The second principal component is oriented in the direction of the next greatest amount of variation that is orthogonal to the first principal component
. The remaining principal components are formed likewise.

With this in mind, let's examine @amoeba's example. Here is a data matrix with two points in a three dimensional space:

X=[121212]

Let's view these points in a (pseudo) three dimensional scatterplot:

enter image description here

So let's follow the steps listed above. (1) The origin of the new coordinate system will be located at (1.5,1.5,1.5)

. (2) The axes are already equal. (3) The first principal component will go diagonally from (0,0,0) to (3,3,3), which is the direction of greatest variation for these data. Now, the second principal component must be orthogonal to the first, and should go in the direction of the greatestremaining variation. But what direction is that? Is it from (0,0,3) to (3,3,0), or from (0,3,0) to (3,0,3), or something else? There is no remaining variation, so there cannot be any more principal components.

With N=2 data, we can fit (at most) N1=1 principal components.

相關推薦

為什麼一些矩陣PCA得到的矩陣一行

很多時候會出現把一個N*M的矩陣做pca(對M降維)之後卻得到一個M*(M-1)矩陣這樣的結果。之前都是數學推導得到這個結論,但是, 今天看到一個很形象的解釋: Consider what PCA does. Put simply, PCA (as most typically run) creates

機器學習 | SVD矩陣分解演算法,矩陣拆分,然後呢?

本文始發於個人公眾號:**TechFlow**,原創不易,求個關注 今天是機器學習專題第28篇文章,我們來聊聊SVD演算法。 SVD的英文全稱是Singular Value Decomposition,翻譯過來是奇異值分解。這其實是一種線性代數演算法,用來對矩陣進行拆分。拆分之後可以提取出關鍵資訊,從而

0022-在OpenCV環境下影象或矩陣的傅立葉變換

傅立葉變換的概念在《高等數學》、《訊號與系統》、《數字訊號處理》中都有詳細的原理說明,網上也有一大堆文章解釋其原理。這裡我就不多說了,總之它是把訊號變換到三角函式系裡,實際上是域的變換,至於變換有什麼好處,其實就是從另一個角度觀察同一個訊號。對影象的傅立葉變換實際上是一個二維傅立葉變換。OpenCV

## 本篇文章linux常用的一些命令一下總結,如有需要補充以及不懂得地方,請在下方留言 適合於linux初學者,以及命令掌握不牢的用來備忘

本篇文章對linux常用的一些命令做一下總結,如有需要補充以及不懂得地方,請在下方留言 適合於linux初學者,以及對命令掌握不牢的用來備忘一,磁碟管理1.顯示當前目錄位置 pwd2.切換目錄 cd 目錄名3.列出當前目錄下目錄和檔案詳細內容ll只顯示檔名ls二,檔案管理1.建立資料夾 mkdir 資料夾名2

tensorflow: session開始前tensor一些處理

tf.boolean_mask 這個操作可以用於留下指定的元素,類似於numpy的操作。 import numpy as np tensor = tf.range(4) mask = np.array([True, False, True, False]) bool_mask =

協方差矩陣PCA+Matlab

協方差矩陣與特徵值及其特徵向量 最近在利用協方差矩陣計算些東西,對結果有點混亂,所以打算整理一下這方面的東西。 一 協方差矩陣 首先,關於協方差矩陣的公式都見得到這裡就不擺了。 理解協方差矩陣是: 協方差矩陣相對於協方差是能處理多維問題 輸入協方差矩陣中的資料

主成分分析PCA演算法:為什麼去均值以後的高維矩陣乘以其協方差矩陣的特徵向量矩陣就是“投影”?

這是從網上看到的PCA演算法的步驟: 第一步,分別求每列的平均值,然後對於所有的樣例,都減去對應的均值。 第二步,求特徵協方差矩陣。 第三步,求協方差的特徵值…顯示全部 關注者 1,218 被瀏覽 78,113 關注問題寫回答 ​新增評論 ​分享 ​邀請回答

,然後執著

方法:做得更少,然後執著 李翔及其團隊 工作方法 《金融時報》介紹了學者莫騰·漢森的新書《玩轉工作》(Great at Work)。漢森在書中提出了一個工作理念:“少即是多”帶來優勢的前提是,你必須專注在自己選擇的“少”上面。“如果你不執著地投入,你就不會比那些做更多事情的人有優勢”。

2D 點 求解基礎矩陣 F 本質矩陣E 單應矩陣 H 進而求 旋轉矩陣 R 和 t

*對極幾何 求解 兩組單目相機 2D影象 間的 旋轉平移 矩陣 * 2D 點對 求 兩相機的 旋轉和平移矩陣 * 空間點 P 兩相機 畫素點對 p1 p2 兩相機 歸一化平面上的點對 x1 x2 與P點對應 * 相機內參數 K 兩鏡頭旋轉平移矩陣 R t 或者 變換矩陣 T

轉載大神的雅可比矩陣和海森矩陣的講解

1. Jacobian 在向量分析中, 雅可比矩陣是一階偏導數以一定方式排列成的矩陣, 其行列式稱為雅可比行列式. 還有, 在代數幾何中, 代數曲線的雅可比量表示雅可比簇:伴隨該曲線的一個代數群, 曲線可以嵌入其中. 它們全部都以數學家卡爾·雅可比(Carl Jacob, 1804年10月4日-1851

王垠——想太多,

我大四的時候,讀到王垠從清華退學的文章,當時我雖然還沒有正式開始攻讀博士學位,但是也在實驗室待了一年多了,老油條一根,對清華的博士生的學習生活了解得差不多了。當時讀王垠的文章,我開始很不解:就剩一年,何不再堅持一下呢。後來我瞭解到一個人不能拿兩個電腦科學的博士學位,就是如果

本該拼搏的年紀,想太多而

寫文章有時為了抒懷, 有時卻為了勵志, 其實實在一點,還是該踏踏實實地做。 說得太多,依然沒有用。 別人說一個人,應該有自己的想法, 想法有很多種, 不是所有想法都是好的, 也不是沒有想法就能走得一路

協方差矩陣PCA深入原理剖析

一、協方差矩陣一個維度上方差的定義:協方差的定義:(a)協方差就是計算了兩個維度之間的相關性,即這個樣本的這兩個維度之間有沒有關係。協方差為0,證明這兩個維度之間沒有關係,協方差為正,兩個正相關,為負則負相關。協方差矩陣的定義:對n個維度,任意兩個維度都計算一個協方差,組成矩

Python計算矩陣乘向量,矩陣乘實數的一些小錯誤

計算:Ax-b A: 2*2 x: 2*1 b: 2*1 so, Ax-b: 2*1 if __name__ == "__main__": A = np.array([[4.0,

一些演算法的MapReduce實現——矩陣分塊乘法計算(1)

矩陣分塊簡介 一個分塊矩陣(分段矩陣)就是將矩陣分割出較小的矩形矩陣,這些較小的矩陣就稱為區塊。換個方式來說,就是以較小的矩陣組合成一個矩陣。通過將大的矩陣通過分塊的方式劃分,並將每個分塊(稱為子塊)看做另一個矩陣的元素,這樣之後再參與運算,通常可以簡化運算。例如,有的大

UVa 11149 矩陣的冪(矩陣倍增法模板題)

ble 化簡 .cn target ans txt put std net https://vjudge.net/problem/UVA-11149 題意: 輸入一個n×n矩陣A,計算A+A^2+A^3+...A^k的值。 思路: 矩陣倍增法。

在SCIKIT中PCA 逆運算 -- 新舊特征轉換

3.0 arr example self ipc bsp var 組合 print PCA(Principal Component Analysis)是一種常用的數據分析方法。PCA通過線性變換將原始數據變換為一組各維度線性無關的表示,可用於提取數據的主要特征分量,常用於高

《天那邊》觀後感——一些現象的反思

以及 主人公 部分 選擇 深深 生活 才華 這就是我 人的 我也不知道為什麽,我就是喜歡看一些文藝片,看一些別人不喜歡看的,近期《變形金剛5》特別火,許多人買票去看,但在我看來,這些電影只是帶給您一些視覺上的享受,其他留不下任何東西,但有些電影就不一樣,看過之後

How many ways?? 矩陣快速冪 鄰接矩陣意義

logs blog define const 滿了 def con input 結果 春天到了, HDU校園裏開滿了花, 姹紫嫣紅, 非常美麗. 蔥頭是個愛花的人, 看著校花校草競相開放, 漫步校園, 心情也變得舒暢. 為了多看看這迷人的校園, 蔥頭決定, 每次上課都走不同

線性代數-矩陣-【5】矩陣化簡 C和C++實現

tar tput c++ spec 但是 exc c++語言 emp opened 點擊這裏可以跳轉至 【1】矩陣匯總:http://www.cnblogs.com/HongYi-Liang/p/7287369.html 【2】矩陣生成:http://www.cnblog