文档章节

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

p
 pbyang
发布于 2014/01/04 10:38
字数 1078
阅读 636
收藏 0
点赞 0
评论 0

>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矩阵的秩,则存在奇异值分解:

clip_image020

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)

© 著作权归作者所有

共有 人打赏支持
p
粉丝 3
博文 25
码字总数 9391
作品 0
石家庄
三种方法实现PCA算法(Python)

  主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域。它的主要作用是对高维数据进行降维。PCA把原先的n个特征用数目更少的k...

但盼风雨来_jc ⋅ 2017/12/12 ⋅ 0

数据降维:特征值分解和奇异值分解的实战分析

请点击上面公众号,免费订阅。  《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!...

xo3ylaf9kgs ⋅ 2017/12/09 ⋅ 0

一目了然之 PCA SVD 协方差 相关系数及区分

一、数据降维技术 二、PCA 首先要知道的是PCA降维的原理和目的是什么? 原理:最大化投影后数据的方差,表示为在某一维度的投影方差最大,如下图中当前位置不是投影方差最大的位置,因为好多...

herr_kun ⋅ 05/17 ⋅ 0

数据降维处理:PCA之奇异值分解(SVD)介绍

请点击上面公众号,免费订阅。  《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!...

xo3ylaf9kgs ⋅ 2017/12/08 ⋅ 0

关于机器学习中数据降维的相关方法

前言 在之前一些文章的讨论中,通过一些例子我们可以发现(主要是关于决策树或随机森林的相关内容)其实并不是样本的所有属性可能都是那么得重要,只要不是同等重要,特别是在分类问题上可能...

chenhu73 ⋅ 2017/10/31 ⋅ 0

强大的矩阵奇异值分解(SVD)及其应用

一、奇异值与特征值基础知识: 特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出...

liangtee ⋅ 2013/03/30 ⋅ 0

基于SVD实现PCA的图像识别

本文实现基于SVD奇异矩阵分解的PCA主成分分析,使用该算法来完成对人脸图像的识别,主要讲解SVD实现PCA的原理,如何利用SVD实现图像特征的降维,以及SVD在文本聚类方面的使用,例如弱化同义词...

初雪之音 ⋅ 2015/10/04 ⋅ 0

矩阵奇异值分解(SVD)及其应用

一、奇异值与特征值基础知识 特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一...

SVD ⋅ 2015/12/23 ⋅ 1

PCA之奇异值分解

参考:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html(讲的很详细,可直接转到阅读。) PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇...

yushupan ⋅ 01/14 ⋅ 0

从SVD到PCA——奇妙的数学游戏

方阵的特征值 当一个矩阵与一个向量相乘,究竟发生了什么? 定义如下的 A 与 x: 求得 b: 可以看到 A 乘以 x 就是将 x 的元素以线性的方式重新组合得到 b,数学上把这种重新组合叫 线性变换...

Lee的白板报 ⋅ 2015/11/24 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

1.01-StringUtils的使用

import org.apache.commons.lang.StringUtils; 一、StringUtils 常用的方法: 1. 判断某一字符串是否为空 , 为空的标准是 str==null 或 str.length()==0 StringUtils.isEmpty(null) ==>tr......

静以修身2025 ⋅ 26分钟前 ⋅ 0

几道Spring 面试题

1、BeanFactory 接口和 ApplicationContext 接口有什么区别? ApplicationContext 接口继承BeanFactory接口 Spring核心工厂是BeanFactory BeanFactory采取延迟加载,第一次getBean时才会初始...

职业搬砖20年 ⋅ 28分钟前 ⋅ 0

包饺子

http://storage.slide.news.sina.com.cn/slidenews/77_ori/2018_24/74766_826131_625489.gif

霜叶情 ⋅ 29分钟前 ⋅ 0

兑吧:从自建HBase迁移到阿里云HBase实战经验

摘要: 业务介绍 兑吧集团包含兑吧网络和推啊网络,兑吧网络是一家致力于帮助互联网企业提升运营效率的用户运营服务平台,提供积分商城和媒体运营服务。推啊网络是一家互动式广告平台,经过多...

猫耳m ⋅ 40分钟前 ⋅ 0

xml解析

方法一: String s_xml1 = "<xml>" + "<head>lalalalal</head>" + "<body>1234</body>" + "</xml>"; try { DocumentBuilderFactory documentBuilderFactory......

GithubXD ⋅ 41分钟前 ⋅ 0

reuse stream

Although Java streams were designed to be operated only once, programmers still ask how to reuse a stream. From a simple web search, we can find many posts with this same issue ......

idoz ⋅ 42分钟前 ⋅ 0

兑吧:从自建HBase迁移到阿里云HBase实战经验

摘要: 业务介绍 兑吧集团包含兑吧网络和推啊网络,兑吧网络是一家致力于帮助互联网企业提升运营效率的用户运营服务平台,提供积分商城和媒体运营服务。推啊网络是一家互动式广告平台,经过多...

阿里云云栖社区 ⋅ 44分钟前 ⋅ 0

从世界杯看国内运动体育社交新能量

2018年世界杯已正式拉开帷幕,一场全世界球迷的狂欢也正式开始。 世界杯影响力:30亿+球迷的狂欢+社交话题 世界杯这个超级IP和对社交网络的引爆让更多的人目光聚焦到国内运动体育社交这个层...

ThinkSNS账号 ⋅ 44分钟前 ⋅ 0

不固定值替换

<?php$arr = 20;$data = str_replace(array(10,20,30,40),array("blue","red","green","yellow"),$arr);print_r($data);...

nsns ⋅ 46分钟前 ⋅ 0

Job for nginx.service failed 错误解决方案

今天刚在centos7上安装了nginx-1.2.11,/etc/init.d/nginx start启动时,出现 Job for nginx.service failed because the control process exited with error code. See "systemctl status n......

河图再现 ⋅ 47分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部