主成分分析(PCA)——以2维图像为例
生活随笔
收集整理的這篇文章主要介紹了
主成分分析(PCA)——以2维图像为例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<span?style="font-family:Times?New?Roman;font-size:14px;">xRot?=?zeros(size(x));?? xRot=u'*x;?? figure(2);?? scatter(xRot(1,?:),?xRot(2,?:));?? title('xRot');</span>?? <span style="font-family:Times New Roman;font-size:14px;">xRot = zeros(size(x));
xRot=u'*x;
figure(2);
scatter(xRot(1, :), xRot(2, :));
title('xRot');</span>得到原始圖和主軸方向,如圖1所示。 xRot?=?zeros(size(x));??? xRot=u'*x;?? figure(2);?? scatter(xRot(1,?:),?xRot(2,?:));?? title('xRot');?? xRot = zeros(size(x));
xRot=u'*x;
figure(2);
scatter(xRot(1, :), xRot(2, :));
title('xRot');
<span?style="font-family:Times?New?Roman;font-size:14px;">k?=?1;??? xHat?=?zeros(size(x));?? xHat=u(:,1:k)*u(:,1:k)'*x;?? figure(3);?? scatter(xHat(1,?:),?xHat(2,?:));?? title('xHat');</span>?? <span style="font-family:Times New Roman;font-size:14px;">k = 1;
xHat = zeros(size(x));
xHat=u(:,1:k)*u(:,1:k)'*x;
figure(3);
scatter(xHat(1, :), xHat(2, :));
title('xHat');</span>
epsilon?=?1e-5;?? xPCAWhite?=?zeros(size(x));?? xPCAWhite=diag(1./(diag(s)+epsilon))*u'*x;?? figure(4);?? scatter(xPCAWhite(1,?:),?xPCAWhite(2,?:));?? title('xPCAWhite');?? epsilon = 1e-5;
xPCAWhite = zeros(size(x));
xPCAWhite=diag(1./(diag(s)+epsilon))*u'*x;
figure(4);
scatter(xPCAWhite(1, :), xPCAWhite(2, :));
title('xPCAWhite');
這里加了一個epsilon是因為有的特征根已經很小了,歸一化的時候根號了一下,容易出現數據上溢。同時它還有消除噪聲的作用。如圖4。xZCAWhite?=?zeros(size(x));??? xZCAWhite=u*diag(1./(diag(s)+epsilon))*u'*x;?? figure(5);?? scatter(xZCAWhite(1,?:),?xZCAWhite(2,?:));?? title('xZCAWhite');?? xZCAWhite = zeros(size(x));
xZCAWhite=u*diag(1./(diag(s)+epsilon))*u'*x;
figure(5);
scatter(xZCAWhite(1, :), xZCAWhite(2, :));
title('xZCAWhite');
主成分分析(PCA)——以2維圖像為例
分類: UFLDL 2014-08-11 15:20 913人閱讀 評論(0) 收藏 舉報 深度學習模式識別Deep LearningUFLDL壓縮這一節不論是思想還是實現都比較容易。
主成分分析(PCA)就是模式識別里面說的K-L變換,思想是完全相同的。
詳情可見我的博文:特征選擇(三)-K-L變換
這里簡單介紹幾個概念。順便貼出代碼和效果圖。
[cpp] view plaincopyprint?
圖1
PCA變換
就是要找到數據分布最大的方向,作為主軸方向,然后以這些主軸方向為基,旋轉過去,就完成了數據的去相關性,這是因為此時數據的協方差矩陣成了對角陣。如圖2所示。
[cpp] view plaincopyprint?
圖2
PCA降維
如果我們只取了特征根最大的幾個特征向量作為旋轉矩陣,那么這就是PCA降維。如圖3。
[cpp] view plaincopyprint?圖3
?
PCA白化
我們不降維,而此基礎上將數據左乘一個,那么數據就按照各自主軸方向進行壓縮拉伸,成了一個球形,這就是PCA白化。
[cpp] view plaincopyprint?
這里加了一個epsilon是因為有的特征根已經很小了,歸一化的時候根號了一下,容易出現數據上溢。同時它還有消除噪聲的作用。如圖4。
圖4
?
?ZCA白化
我們在PCA白化的基礎上,左乘一個特征向量矩陣,數據的方向就會又轉回去了。這就是ZCA白化,ZCA白化去除了數據的相關性、保留了最大限度原始數據的形式。是數據預處理的好方法。如圖5。
[cpp] view plaincopyprint?
圖5
總結
以上是生活随笔為你收集整理的主成分分析(PCA)——以2维图像为例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现主成分分析和白化
- 下一篇: Uber创始人:一个优秀创业者应具八种特