您的位置:首页 > 其它

矩阵SVD分解

2014-09-12 14:35 225 查看
如何计算矩阵A的SVD,UΣVT,其中



首先,计算奇异值(singular value)σi通过找到AAT的特征向量。



然后计算行列式det(AAT − λI) = λ2 − 34λ + 225 = (λ − 25)(λ −9),所以奇异值σ1 = √25 = 5,σ2 =√9 = 3。

接下来通过找到ATA的特征向量的正交集合来计算右奇异向量(矩阵V的列)。ATA的特征值是25和9,因为ATA是对称的,所以它的特征向量是正交的。

对于λ = 25,


,通过行约减,得到


,对应的单位矩阵是


 

对于λ = 9,


,通过行约减得到

,对应的单位向量为


 

对于上一步计算的特征向量,我们需要找到一个单位向量和v1、v2正交。不妨设

,那么-a = b。同时vT2v3
= 0,那么2a /√18 + 4c /√18 = 0 得到−a = 2c。所以


至此,我们得到 A =UΣVT=



最后,通过公式σui = Avi 计算得到U,

,那么完整的SVD为

A =UΣVT=



下面给出R示例:

> dat <- seq(1,240,2)

> A <- matrix(dat,ncol=12)

> A

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]

 [1,]    1   21   41   61   81  101  121  141  161   181   201   221

 [2,]    3   23   43   63   83  103  123  143  163   183   203   223

 [3,]    5   25   45   65   85  105  125  145  165   185   205   225

 [4,]    7   27   47   67   87  107  127  147  167   187   207   227

 [5,]    9   29   49   69   89  109  129  149  169   189   209   229

 [6,]   11   31   51   71   91  111  131  151  171   191   211   231

 [7,]   13   33   53   73   93  113  133  153  173   193   213   233

 [8,]   15   35   55   75   95  115  135  155  175   195   215   235

 [9,]   17   37   57   77   97  117  137  157  177   197   217   237

[10,]   19   39   59   79   99  119  139  159  179   199   219   239

> R <- svd(A)

> D <- diag(R$d)

> R$u %*% D %*% t(R$v) #  A = U D V'

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]

 [1,]    1   21   41   61   81  101  121  141  161   181   201   221

 [2,]    3   23   43   63   83  103  123  143  163   183   203   223

 [3,]    5   25   45   65   85  105  125  145  165   185   205   225

 [4,]    7   27   47   67   87  107  127  147  167   187   207   227

 [5,]    9   29   49   69   89  109  129  149  169   189   209   229

 [6,]   11   31   51   71   91  111  131  151  171   191   211   231

 [7,]   13   33   53   73   93  113  133  153  173   193   213   233

 [8,]   15   35   55   75   95  115  135  155  175   195   215   235

 [9,]   17   37   57   77   97  117  137  157  177   197   217   237

[10,]   19   39   59   79   99  119  139  159  179   199   219   239

以上讲解了SVD的计算过程,有关SVD的应用请参考Dimensionality Reduction and the Singular Value Decomposition

参考文献

SVD computation example

Data Mining Algorithms In R/Dimensionality Reduction/Singular Value Decomposition
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: