2019独角兽企业重金招聘Python工程师标准>>>

>pca <- read.csv("D:/pca.csv")
>pca
    x1  x2 x3 x4
1   40 2.0  5 20
2   10 1.5  5 30
3  120 3.0 13 50
4  250 4.5 18  0
5  120 3.5  9 50
6   10 1.5 12 50
7   40 1.0 19 40
8  270 4.0 13 60
9  280 3.5 11 60
10 170 3.0  9 60
11 180 3.5 14 40
12 130 2.0 30 50
13 220 1.5 17 20
14 160 1.5 35 60
15 220 2.5 14 30
16 140 2.0 20 20
17 220 2.0 14 10
18  40 1.0 10  0
19  20 1.0 12 60
20 120 2.0 20  0
> P=scale(pca)#将原始数据标准化后,建立矩阵P
> P
             [,1]       [,2]       [,3]       [,4]
 [1,] -1.10251269 -0.3081296 -1.3477550 -0.7084466
 [2,] -1.44001658 -0.7821750 -1.3477550 -0.2513843
 [3,] -0.20250233  0.6399614 -0.2695510  0.6627404
 [4,]  1.26001451  2.0620978  0.4043265 -1.6225713
 [5,] -0.20250233  1.1140068 -0.8086530  0.6627404
 [6,] -1.44001658 -0.7821750 -0.4043265  0.6627404
 [7,] -1.10251269 -1.2562205  0.5391020  0.2056781
 [8,]  1.48501710  1.5880523 -0.2695510  1.1198028
 [9,]  1.59751839  1.1140068 -0.5391020  1.1198028
[10,]  0.36000414  0.6399614 -0.8086530  1.1198028
[11,]  0.47250544  1.1140068 -0.1347755  0.2056781
[12,] -0.09000104 -0.3081296  2.0216325  0.6627404
[13,]  0.92251062 -0.7821750  0.2695510 -0.7084466
[14,]  0.24750285 -0.7821750  2.6955100  1.1198028
[15,]  0.92251062  0.1659159 -0.1347755 -0.2513843
[16,]  0.02250026 -0.3081296  0.6738775 -0.7084466
[17,]  0.92251062 -0.3081296 -0.1347755 -1.1655090
[18,] -1.10251269 -1.2562205 -0.6738775 -1.6225713
[19,] -1.32751528 -1.2562205 -0.4043265  1.1198028
[20,] -0.20250233 -0.3081296  0.6738775 -1.6225713
> eigen(cov(P)) #求矩阵P的协方差矩阵的特征值和特征向量,向量矩阵($vectors)中的第一例(0.69996363....)即为第一个特征值(1.7182516)的特征向量,以此类推。
$values
[1] 1.7182516 1.0935358 0.9813470 0.2068656

$vectors
           [,1]        [,2]        [,3]       [,4]
[1,] 0.69996363  0.09501037 -0.24004879  0.6658833
[2,] 0.68979810 -0.28364662  0.05846333 -0.6635550
[3,] 0.08793923  0.90415870 -0.27031356 -0.3188955
[4,] 0.16277651  0.30498307  0.93053167  0.1208302

特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么;奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了

> > svd(cov(P))$d #奇异值分解实现,应用的矩阵同样为原始数据的标准化后的协方差矩阵(方阵)
[1] 1.7182516 1.0935358 0.9813470 0.2068656
$u[,1]        [,2]        [,3]       [,4]
[1,] -0.69996363  0.09501037 -0.24004879 -0.6658833
[2,] -0.68979810 -0.28364662  0.05846333  0.6635550
[3,] -0.08793923  0.90415870 -0.27031356  0.3188955
[4,] -0.16277651  0.30498307  0.93053167 -0.1208302
$v[,1]        [,2]        [,3]       [,4]
[1,] -0.69996363  0.09501037 -0.24004879 -0.6658833
[2,] -0.68979810 -0.28364662  0.05846333  0.6635550
[3,] -0.08793923  0.90415870 -0.27031356  0.3188955
[4,] -0.16277651  0.30498307  0.93053167 -0.1208302

结果显示和特征值分解的结果完全相同,即奇异值=特征值;左奇异向量与右奇异向量相等,这点和理论一致:

http://blog.csdn.net/wangzhiqing3/article/details/7446444‍

2. 奇异值分解

上面讨论了方阵的分解,但是在LSA中,我们是要对Term-Document矩阵进行分解,很显然这个矩阵不是方阵。这时需要奇异值分解对Term-Document进行分解。奇异值分解的推理使用到了上面所讲的方阵的分解。

假设C是M x N矩阵,U是M x M矩阵,其中U的列为CCT的正交特征向量,V为N x N矩阵,其中V的列为CTC的正交特征向量,再假设r为C矩阵的秩,则存在奇异值分解:

S奇异值分解是一个能适用于任意的矩阵的一种分解的方法,VD处理普通矩阵mxn,待续......

> svd(P)$d  #奇异值分解实现,应用的矩阵为原始数据的标准化后矩阵(20X4)
[1] 5.713736 4.558199 4.318054 1.982535
$u[,1]        [,2]        [,3]        [,4][1,]  0.213188874 -0.31854661  0.01117934 -0.09356334[2,]  0.298743593 -0.26550125 -0.09966088 -0.02040249[3,] -0.067184471 -0.05316902 -0.17961537 -0.19846043[4,] -0.363306085 -0.13041863  0.41709916 -0.43090590[5,] -0.116116981 -0.18960342 -0.21978181 -0.27040771[6,]  0.258181271 -0.01720108 -0.23759348 -0.11644174[7,]  0.272565880  0.17588846 -0.05485743 -0.02402906[8,] -0.401395312 -0.04641079 -0.19713543  0.07886498[9,] -0.353798967 -0.06803484 -0.20133714  0.31867233
[10,] -0.140818406 -0.11779839 -0.28058876  0.10504376
[11,] -0.196159553 -0.07244560 -0.04157562 -0.17994125
[12,] -0.001770250  0.46264984 -0.01709488 -0.21189013
[13,] -0.002549413  0.07396825  0.23141706  0.48510618
[14,] -0.009279184  0.66343445 -0.04822489 -0.02040610
[15,] -0.123807056 -0.03464961  0.09477346  0.26067355
[16,]  0.044254060  0.10591148  0.20027671 -0.04088441
[17,] -0.040535151 -0.06631368  0.29818366  0.36362322
[18,]  0.343318979 -0.18704239  0.26319302  0.05965465
[19,]  0.288607918  0.04522412 -0.32341707  0.10786442
[20,]  0.097860256  0.04005869  0.38476035 -0.17217051
$v[,1]        [,2]        [,3]       [,4]
[1,] -0.69996363  0.09501037  0.24004879  0.6658833
[2,] -0.68979810 -0.28364662 -0.05846333 -0.6635550
[3,] -0.08793923  0.90415870  0.27031356 -0.3188955
[4,] -0.16277651  0.30498307 -0.93053167  0.1208302
奇异值与潜在语义索引LSI
Book <- read.csv("D:/Book.csv")
Book
K=as.matrix(data.frame(Book))
svd(K)
rownames(kk)=Book$X
kk
rownames(v)=paste('T',1:9,sep='')
plot(rnorm,xlim=c(-0.8,0),ylim=c(-0.8,0.6),lty=0)
points(v[,3],v[,2],col='red')
points(kk[,3],kk[,2],col='blue')
text(kk[,3],kk[,2],Book$X)
text(v[,3],v[,2],paste('T',1:9,sep=''))

结果显示右奇异矩阵为之前原始数据的标准化后的协方差矩阵的特征向量矩阵

svd即可以实现对列的压缩(变量),也可以实现对行的压缩(case)

转载于:https://my.oschina.net/u/1272414/blog/190032

主成分分析中特征值分解与SVD(奇异值分解)的比较及其相关R语言的实现相关推荐

  1. matlab矩阵及其基本运算—特征值分解和svd奇异值分解

    特征值分解 函数 eig eig: Find eigenvalues and eigenvectors 格式 d = eig(A)         %求矩阵A的特征值d,以向量形式存放d. d = e ...

  2. 矩阵分解之: 特征值分解(EVD)、奇异值分解(SVD)、SVD++

    目录: 1.矩阵分解 1.1 矩阵分解的产生原因 1.2 矩阵分解作用 1.3 矩阵分解的方法 1.4 推荐学习的经典矩阵分解算法 2. 特征值分解(EVD) 3. 奇异值分解(SVD) 4. SVD ...

  3. 矩阵分解之特征值分解(EVD)、奇异值分解(SVD)、SVD++

    矩阵分解之: 特征值分解(EVD).奇异值分解(SVD).SVD++_人鱼线的博客-CSDN博客_evd分解 矩阵的特征分解和奇异值(SVD)分解--求法和意义_奔跑的Yancy的博客-CSDN博客_ ...

  4. 基于PCA的降维中,进行特征值分解和SVD分解相关笔记

    降维原理 原矩阵X,变换矩阵W,变换后,进入新空间下的WTXW^TXWTX. 想要进入新空间时,各特征之间的差异大分得开,也就是新空间下矩阵的方差越大越好,即WTXXTWW^TXX^TWWTXXTW越 ...

  5. 矩阵理论(二)特征值分解和SVD分解

    特征值分解和SVD分解是两种将矩阵进行分解的经典方法,两者在机器学习的各类算法中被广泛使用(如PCA降维.文本LSI.推荐算法等等). 一.特征值分解 定义:对于方阵A\boldsymbol AA,若 ...

  6. PCA主成分分析-Python特征值分解

    PCA主成分分析 目的:找出向量W,得到线性可分的边界ZZ=W.T*X 步骤: w有两种求法 一个是特征值分解 一个是奇异值分解 代码部分最开始简单的计算结果有有这种小数,就查了一下,原因是二进制的问 ...

  7. 因子分析,主成分分析,主因子分析,因子分析函数,极大似然法——数据分析与R语言 Lecture 12

    因子分析,主成分分析,主因子分析,因子分析函数,极大似然法--数据分析与R语言 Lecture 12 因子分析 因子分析的主要用途 与主成分分析的区别 因子分析使用了复杂的数学手段 统计意义 因子载荷 ...

  8. 机器学习中特征值分解与奇异值分解的区别及应用

    前言: 上一次写了关于PCA与LDA的文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的.在上篇文章中便是基于特征值分解的一种解释.特征值和奇异值在大部分人的印象中, ...

  9. R语言矩阵特征值分解(谱分解)和奇异值分解(SVD)特征向量分析有价证券数据

    最近我们被客户要求撰写关于特征值分解的研究报告,包括一些图形和统计输出. R语言是一门非常方便的数据分析语言,它内置了许多处理矩阵的方法. 作为数据分析的一部分,我们要在有价证券矩阵的操作上做一些工作 ...

最新文章

  1. linux 打开telnet登录,linux开启telnet
  2. 菜鸟教程python3-Python数据分析,学习路径拆解及资源推荐
  3. android 输入法文本选择功能,Android的文本和输入---创建输入法(一)
  4. loadrunner11安装,提示少了Microsoft Visual c++2005 sp1运行时组件解决办法
  5. 边缘计算与嵌入式系统
  6. 内外盘分仓跟单系统源码CTP程序化交易系统源码
  7. GPU编程3--GPU内存深入了解
  8. 数据库设计多表关系、范式
  9. NPOI编辑WORD文档
  10. 2019乌鲁木齐·丝绸之路冰雪马拉松天山脚下鸣枪开跑
  11. 红米7 自编译不完美 twrp 可root手机
  12. 【Python】手把手教你用Python爬取某网小说数据,并进行可视化分析
  13. 【C#】KPM算法解决字符串匹配问题
  14. 前端面试题全面总结!
  15. 如何理解服务注册和服务发现
  16. C++难学吗?为什么难学?如何去学?
  17. LeetCode-5299. 找到一个数字的 K 美丽值_Python
  18. LintCode-买卖股票的最佳时机
  19. 自定义的可拖动滑块验证码的实现方式(SlideView)
  20. C语言关键字浅析-short

热门文章

  1. webpack 错误提示 Error: Can't resolve 'css-loader'或Error: Can't resolve 'style-loader'
  2. [BZOJ1798][AHOI2009]Seq维护序列 线段树
  3. GRUB中硬盘和分区编号,UUID
  4. HDU-5877-Weak Pair(树状数组+离散化+dfs)
  5. Python实现抓取CSDN博客首页文章列表
  6. 1.阿里云RDS配置白名单,实例,外网地址,mysql数据库。
  7. 终于有人把幸存者偏差讲明白了
  8. 什么是机器学习?有哪些应用?终于有人讲明白了
  9. 送书!1991-2018,区块链的那点事,都在这里了!
  10. 宣战抖音!腾讯与头条之战的新局面与猜想