R语言数据集的技术

特征值选择技术要点

特征值选择技术要点(特征值分解)

作者:王立敏

文章来源:xiahouzuoxin

一.特征值分解

1.特征值分解

线性代数中,特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。需要注意只有对可对角化矩阵才可以施以特征分解。

设A有n个特征值及特征向量,则:

将上面的写到一起成矩阵形式:

若(x1,x2,...,xn)可逆,则左右两边都求逆,则方阵A可直接通过特征值和特征向量进行唯一的表示,令

Q=(x1,x2,...,xn)

Σ?=?diag(λ1,?λ2,?...,?λn)

则  ,该表达式称为方阵的特征值分解,这样方阵A就被特征值和特征向量唯一表示。

Matlab中通过eig函数就可求得特征值和特征向量矩阵。

D对角线的元素即为特征值(表示了伸缩的比例),D就是特征值分解公式中的Q,V的每一列与D没列对应,表示对应的特征向量,即特征值分解中的Σ。

1.分解方法

矩阵的特征分解

令 A 是一个 N×N 的方阵,且有 N 个线性无关的特征向量

这样, A 可以被分解为

其中 Q 是N×N方阵,且其第 i列为 A 的特征向量。 Λ 是对角矩阵,其对角线上的元素为对应的特征值,也即

。这里需要注意只有可对角化矩阵才可以作特征分解。比如

不能被对角化,也就不能特征分解。

一般来说,特征向量

一般被正交单位化(但这不是必须的)。未被正交单位化的特征向量组

也可以作为 Q 的列向量。这一事实可以这样理解: Q 中向量的长度都被

抵消了。

通过特征分解求矩阵的逆

若矩阵 A 可被特征分解并特征值中不含零,则矩阵 A 为非奇异矩阵,且其逆矩阵可以由下式给出:

因为 Λ 为对角矩阵,其逆矩阵容易计算出:

对特殊矩阵的特征分解

对称矩阵

任意的 N×N 实对称矩阵都有 N 个线性无关的特征向量。并且这些特征向量都可以正交单位化而得到一组正交且模为 1 的向量。故实对称矩阵 A 可被分解成

其中 Q 为 正交矩阵, Λ 为实对角矩阵

正规矩阵

类似地,一个复正规矩阵具有一组正交特征向量基,故正规矩阵可以被分解成

其中 U 为一个酉矩阵。进一步地,若 A 是埃尔米特矩阵,那么对角矩阵 Λ 的对角元全是实数。若 A 还是酉矩阵,则 Λ 的所有对角元在复平面单位圆上取得。

3.特征值与奇异值的分解

部分转载自http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applicatio

特征值与奇异值

特征值和奇异值:在大部分人的印象中,往往是停留在纯粹的数学计算中。而且线性代数或者矩阵论里面,也很少讲任何跟特征值与奇异值有关的应用背景。奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。就像是描述一个人一样,给别人描述说这个人长得浓眉大眼,方脸,络腮胡,而且带个黑框的眼镜,这样寥寥的几个特征,就让别人脑海里面就有一个较为清楚的认识,实际上,人脸上的特征是有着无数种的,之所以能这么描述,是因为人天生就有着非常好的抽取重要特征的能力,让机器学会抽取重要的特征,SVD是一个重要的方法。

4.奇异值与特征值的基础知识

特征值分解和奇异值分解在机器学**领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。先谈谈特征值分解吧:

(1)特征值

如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式:

这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式:

其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。我这里引用了一些参考文献中的内容来说明一下。首先,要明确的是,一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。比如说下面的一个矩阵:

它其实对应的线性变换是下面的形式:

因为这个矩阵M乘以一个向量(x,y)的结果是:

上面的矩阵是对称的,所以这个变换是一个对x,y轴的方向一个拉伸变换(每一个对角线上的元素将会对一个维度进行拉伸变换,当值>1时,是拉长,当值<1时时缩短),当矩阵不是对称的时候,假如说矩阵是下面的样子:

它所描述的变换是下面的样子:

这其实是在平面上对一个轴进行的拉伸变换(如蓝色的箭头所示),在图中,蓝色的箭头是一个最主要的变化方向(变化方向可能有不止一个),如果我们想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了。反过头来看看之前特征值分解的式子,分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)

(2)奇异值

下面谈谈奇异值分解。特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,在现实的世界中,我们看到的大部分矩阵都不是方阵,比如说有N个学生,每个学生有M科成绩,这样形成的一个N * M的矩阵就不可能是方阵,我们怎样才能描述这样普通的矩阵呢的重要特征呢?奇异值分解可以用来干这个事情,奇异值分解是一个能适用于任意的矩阵的一种分解的方法:

假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),从图片来反映几个相乘的矩阵的大小可得下面的图片

那么奇异值和特征值是怎么对应起来的呢?首先,我们将一个矩阵A的转置 * A,将会得到一个方阵,我们用这个方阵求特征值可以得到:

这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到:

这里的σ就是上面说的奇异值,u就是上面说的左奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:

r是一个远小于m、n的数,这样矩阵的乘法看起来像是下面的样子:

右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。

5.特征值分解和奇异值分解的区别:

A(T)=所有的矩阵都可以进行奇异值分解,而只有方阵才可以进行特征值分解。当所给的矩阵是对A,二者的结果是相同的。也就是说对称矩阵的特征值分解是所有奇异值分解的一个特例。但是二者还是存在一些小的差异,奇异值分解需要对奇异值从大到小的排序,而且全部是大于等于零。

对于特征值分解   [v,d] = eig( A )   , 即  A = v*d*inv(v)

对于奇异值分解,其分解的基本形式为 [u,s,v] = svd(C),   C = u*s*v‘.   若C阵为对称的方阵, 则有 u = v; 所以有 C = v*s*v‘;

对于特征值分解   [v,d] = eig( A )   , 即  A = v*d*inv(v)

对于奇异值分解,其分解的基本形式为 [u,s,v] = svd(C),   C = u*s*v‘.   若C阵为对称的方阵, 则有 u = v; 所以有 C = v*s*v‘;

6.特征值分解及奇异值分解在数字图像中的应用

目前,随着科学技术的高速发展,现实生活中有大量的信息用数字进行存储,处理和传送。而传输宽带,速度和存储器容量等往往有限制,因此数据压缩就显得十分必要,数据压缩技术已经是多媒体发展的关键和核心技术,图像文件的容量一般都比较大,所以它的存储,处理和传送会受到较大限制,图像压缩就显得及其重要。当前对图像压缩的算法有很多,特点各异,类似JPEG等许多标准都已经得到了广泛的应用,简单阐述了矩阵特征值的数值求解理论之后,介绍了几种常用的求解矩阵特征值的方法,并最终将特征值计算应用到图像压缩中。以及奇异值分解。奇异值分解是一种基于特征向量的矩阵变换方法,在信号处理,模式识别,数字水印技术等方法都得到了应用。由于图像具有矩阵结构,有文献提出将奇异值分解应用于图像压缩,并取得了成功,被视为一种有效的图像压缩方法。

时间: 2024-11-05 23:39:13

R语言数据集的技术的相关文章

R语言 数据集

第二章 创建数据集 1.R语言的数据类型 数值型.字符型.逻辑型.复数型(虚数)和原生型(字节) 2.数据结构 a.向量:存储数值型.字符型和逻辑型数据的一维数组 > a=c(1,2,3,4,5)#创建 组合功能的函数c() > a [1] 1 2 3 4 5 > a[c(1,4)]#访问 方括号+向量中指定的元素 [1] 1 4 b.矩阵:二维数组 mymatrix=matrix(1:20,nrow=5,ncol=4,byrow=TRUE,dimnames=list(rnames,cn

R语言︱ 数据库SQL-R连接与SQL语句执行(RODBC、sqldf包)

数据库是极其重要的R语言数据导入源数据之地,读入包有sqldf.RODBC等.跟SQL server相连有RODBC,跟mySQL链接的有RMySQL.但是在R里面,回传文本会出现截断的情况,这一情况可把我弄得有点手足无措. 一.数据库读入--RODBC包 CRAN 里面的包 RODBC 提供了 ODBC的访问接口: odbcConnect 或 odbcDriverConnect (在Windows图形化界面下,可以通过对话框选择数据库) 可以打开一个连接,返回一个用于随后数据库访问的控制(ha

R语言︱情感分析文本操作技巧汇总(打标签、词典与数据匹配等)

笔者寄语:情感分析中对文本处理的数据的小技巧要求比较高,笔者在学习时候会为一些小技巧感到头疼不已. 主要包括以下内容: 1.批量读取txt字符文件(导入.文本内容逐行读取.加入文档名字). 2.文本清洗(一级清洗,去标点:二级清洗去内容:三级清洗,去停用词) 3.词典之间匹配(有主键join.词库匹配%in%) 4.分词之后档案id+label的加入 5.情感打分(关联情感词join.情感分数aggerate.情感偏向) -------------------------------------

R语言重要数据集分析研究——需要整理分析阐明理念

1.R语言重要数据集分析研究需要整理分析阐明理念? 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候如何下手分析,数据分析的第一步,探索性数据分析. 统计量,即统计学里面关注的数据集的几个指标,常用的如下:最小值,最大值,四分位数,均值,中位数,众数,方差,标准差,极差,偏度,峰度 先来解释一下各个量得含义,浅显就不说了,这里主要说一下不常见的 众数:出现次数最多的 方差:每个样本值与均值的差得平方和的平均数 标准差:又称均方差,是方差的二次方根,用来衡量一个数据集的集中性 极差:最大值

R语言——K折交叉验证之随机均分数据集

今天,在阅读吴喜之教授的<复杂数据统计方法>时,遇到了把一个数据集按照某个因子分成若干子集,再把若干子集随机平均分成n份的问题,吴教授的方法也比较好理解,但是我还是觉得有点繁琐,因此自己编写了一个函数,此后遇到这种问题只需要运行一下函数就可以了. 这里采用R中自带的iris数据集, > str(iris) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4

第二篇:R语言数据可视化之数据塑形技术

前言 绘制统计图形时,半数以上的时间会花在调用绘图命令之前的数据塑型操作上.因为在把数据送进绘图函数前,还得将数据框转换为适当格式才行. 本文将给出使用R语言进行数据塑型的一些基本的技巧,更多技术细节推荐参考<R语言核心手册>. 数据框塑型 1. 创建数据框 - data.frame() # 创建向量p p = c("A", "B", "C") # 创建向量q q = 1:3 # 创建数据框:含p/q两列 dat = data.fra

R语言统计分析技术研究 特征值选择技术要点

特征值选择技术要点                          作者:王立敏 文章来源:  网络 1.特征值 特征值是线性代数中的一个重要概念.在数学,物理学,化学,计算机等领域有着广泛的应用.设A是n阶方阵,如果存在数m和非零n维列向量x,使得Ax=mx成立,则称m是A的一个特征值或本征值.非零n维列向量x称为矩阵A的属于特征值m的特征向量或本征向量,简称A的特征向量或A的本征向量. 2.使用R语言的Boruta包进行特征选择 在数据分析过程中,利用各种图表进行数据探索是必要的前期工作

R语言在数据处理上的禀赋之——可视化技术(一)

本文首发 https://program-dog.blogspot.com R语言在可视化上可谓非常出众,想必这也是为什么R语言在数据处理方面受到追捧的原因之一. 上一节已经大体了解了R语言的基本数据类型,以及优势所在.R的可视化技术同样也是优势大大滴.这也是R的数据类型为可视化立下汗马功劳,为啥这样说呢? Java的可视化技术 我们再拿Java开刀,和做一下对比.希望Java他老爹不要见怪.大家都知道,java做图真心说不上漂亮,为什么又拿java做对比呢?原因之一是我对java比较熟悉一点,

《R语言实战》读书笔记--第二章 创建数据集

2.1数据集的概念 变量的类型是不同的,比如标示符.日期变量.连续变量.名义变量.有序型变量等,记得数据挖掘导论中有专门的描述. R可以处理的数据类型包括了数值型.字符型.逻辑型.复数型(虚数).原生型(字节). 2.2数据结构 R拥有很多存储数据的对象类型,包括 标量.向量.矩阵.数组.数据框.列表.它们可以用下图表示: 因子是R中的名义型或者有序型变量,比较特殊. 2.2.1向量 标量是只有一个元素的向量,一般用来保存常量.其他没什么说的. 2.2.2矩阵 矩阵创建函数: matrix(da