SVD分解在特征降维的应用

来源:互联网 发布:名片设计软件免费版 编辑:程序博客网 时间:2024/05/19 17:23

最近在做图像分割的实验,但在分类过程中有时会出现所使用的矩阵closely singular而很难accurately calculate. 于是想到了采用SVD decompositon进行降维(这种解决方法是否可行,还有待验证)。

--------------------------------------------------------

(1) 基本公式

从网上看了很多有关SVD分解的资料,对大小为m*n的矩阵进行SVD分解,使用matlab可以很容易进行分解:

X = U * Σ * V'

Um×m酉矩阵;Σ是半正定m×n对角矩阵;而V',即V共轭转置,是n×n阶酉矩阵。这样的分解就称作M奇异值分解。Σ对角线上的元素Σi,i即为M奇异值

----------------------------------------------------------------------

(2) svd具体实现

在matlab中,实现svd分解的函数为:

[u s v]=svd(x);

---------------------------------

(3) 下面要考虑的问题就是如何降维了

假设最终只保留k维,则首先

s = s(1:k,1:k); u = u(:,1:k); v = v'(1:k,:);

然后,

  x1   =  u  *  s  *   v;

(n*d   = n*k   k*k     k*d)

由此,可以用x1近似x。


使用 yi' = xi' * u * inv(s) 作为降维后的第i个特征数据,从而得到降维特征集合

y = [yi'].大小为n*k.

(这个理解是否正确还不清楚,需要通过实验进行验证!)




原创粉丝点击