日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实现主成分分析和白化

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现主成分分析和白化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


實現主成分分析和白化

From Ufldl

Jump to: navigation, search

在這一節里,我們將總結PCA, PCA白化和ZCA白化算法,并描述如何使用高效的線性代數庫來實現它們。

首先,我們需要確保數據的均值(近似)為零。對于自然圖像,我們通過減去每個圖像塊(patch)的均值(近似地)來達到這一目標。為此,我們計算每個圖像塊的均值,并從每個圖像塊中減去它的均值。(譯注:參見PCA一章中“對圖像數據應用PCA算法”一節)。Matlab實現如下:

avg = mean(x, 1); ?% 分別為每個圖像塊計算像素強度的均值。 x = x - repmat(avg, size(x, 1), 1);

下面,我們要計算 ,如果你在Matlab中實現(或者在C++, Java等中實現,但可以使用高效的線性代數庫),直接求和效率很低。不過,我們可以這樣一氣呵成。

sigma = x * x' / size(x, 2);

(自己推導一下看看)這里,我們假設 x 為一數據結構,其中每列表示一個訓練樣本(所以 x 是一個 × 的矩陣)。

接下來,PCA計算 Σ 的特征向量。你可以使用Matlab的 eig 函數來計算。但是由于 Σ 是對稱半正定的矩陣,用 svd 函數在數值計算上更加穩定。

具體來說,如果你使用

[U,S,V] = svd(sigma);

那矩陣 U 將包含 Sigma 的特征向量(一個特征向量一列,從主向量開始排序),矩陣S 對角線上的元素將包含對應的特征值(同樣降序排列)。矩陣 等于 的轉置,可以忽略。

(注意 svd 函數實際上計算的是一個矩陣的奇異值和奇異向量,就對稱半正定矩陣的特殊情況來說,它們對應于特征值和特征向量,這里我們也只關心這一特例。關于奇異向量和特征向量的詳細討論超出了本文范圍。)

最后,我們可以這樣計 算 和 :

xRot = U' * x; ?% 數據旋轉后的結果。 xTilde = U(:,1:k)' * x;?% 數據降維后的結果,這里k希望保留的特征向量的數目。

這以 的形式給出了數據的PCA表示。順便說一下,如果 x 是一個包括所有訓練數據的 × 矩陣,這也是一種向量化的實現方式,上面的式子可以讓你一次對所有的訓練樣本計算出 xrot 和 。得到的 xrot 和 中,每列對應一個訓練樣本。

為計算PCA白化后的數據 ,可以用

xPCAwhite = diag(1./sqrt(diag(S) + epsilon)) * U' * x;

因為 S 的對角線包括了特征值 ,這其實就是同時為所有樣本計算 的簡潔表達。

最后,你也可以這樣計算ZCA白化后的數據:

xZCAwhite = U * diag(1./sqrt(diag(S) + epsilon)) * U' * x;



中英文對照

主成分分析 Principal Components Analysis (PCA)
白化 whitening
均值為零 zero-mean
均值 mean value
特征值 eigenvalue
特征向量 eigenvector
對稱半正定矩陣 symmetric positive semi-definite matrix
數值計算上穩定 numerically reliable
降序排列 sorted in decreasing order
奇異值 singular value
奇異向量 singular vector
向量化實現 vectorized implementation
對角線 diagonal

總結

以上是生活随笔為你收集整理的实现主成分分析和白化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。