矩阵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
首先,计算奇异值(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
相关文章推荐
- 关于矩阵分解:特征值分解 svd分解 mf分解 lmf分解 pca 以及个性化推荐 fm ffm als
- 实战智能推荐系统(2)-- Funk-SVD 矩阵分解及其正则化
- 机器学习笔记(二)矩阵和线性代数 例:用Python实现SVD分解进行图片压缩
- 文本分类之降维技术之特征抽取之SVD矩阵的分解的原理的介绍
- 实战智能推荐系统(2)-- Funk-SVD 矩阵分解及其正则化
- 矩阵分解在推荐系统中的应用:NMF和经典SVD实战(2)
- 矩阵分解----奇异值分解(SVD)原理和应用
- 机器学习中的矩阵方法04:SVD 分解
- 实战智能推荐系统(2)-- Funk-SVD 矩阵分解及其正则化
- 奇异值、奇异矩阵、SVD分解、正交矩阵定义解释
- [转]矩阵奇异值分解(SVD)及其应用
- 矩阵分解 SVD分解
- 实战智能推荐系统(2)-- Funk-SVD 矩阵分解及其正则化
- 实战智能推荐系统(2)-- Funk-SVD 矩阵分解及其正则化
- 奇异值、奇异矩阵、SVD分解、正交矩阵
- 实战智能推荐系统(2)-- Funk-SVD 矩阵分解及其正则化
- 实战智能推荐系统(2)-- Funk-SVD 矩阵分解及其正则化
- spark中 进行高维矩阵的SVD分解(2)
- 工程矩阵-SVD分解
- 奇异值、奇异矩阵、SVD分解、正交矩阵(转载)