R语言数据集的技术

时间:2021-08-11 20:02:59

特征值选择技术要点

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

     作者:王立敏

                                                                                                               文章来源:xiahouzuoxin

一.特征值分解

1.特征值分解

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

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

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

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

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

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

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

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

R语言数据集的技术

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.特征值与奇异值的分解

R语言数据集的技术

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

R语言数据集的技术

特征值与奇异值

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

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

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

(1)特征值

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

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

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

 

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

R语言数据集的技术

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

R语言数据集的技术

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

R语言数据集的技术

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

R语言数据集的技术

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

   (2)奇异值

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

              

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

R语言数据集的技术

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

R语言数据集的技术

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

R语言数据集的技术

 

 

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

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等许多标准都已经得到了广泛的应用,简单阐述了矩阵特征值的数值求解理论之后,介绍了几种常用的求解矩阵特征值的方法,并最终将特征值计算应用到图像压缩中。以及奇异值分解。奇异值分解是一种基于特征向量的矩阵变换方法,在信号处理,模式识别,数字水印技术等方法都得到了应用。由于图像具有矩阵结构,有文献提出将奇异值分解应用于图像压缩,并取得了成功,被视为一种有效的图像压缩方法。