用户名*
邮箱*
密码*
确认密码*
验证码* 点击图片更换验证码
找回密码
忘记密码了?输入你的注册邮箱,并点击重置,稍后,你将会收到一封密码重置邮件。
搞大数据的coder
给一个比较algebraic的解释,这两个概念实际上是有内在关联的。很多词不是很清楚中文怎么表示所以会用英文…我们假设数据矩阵(data matrix)的维数是,是样本(sample)的数量,p是数据的维数。我们假设已经中心化了,即每列的均值为0。
首先我们定义PCA的有关概念。一种对PCA的核心意图的解释是,找到另一组正交基,使得进行变换后的方差(variance)最大(因为选取了方差最大的维度,所以这样可以存储最多的信息)。 如下图,如果两个维度之间的data有强相关的话这两个维度的数据会趋近一条直线(这意味着其中一个维度的数据是多余的),反之则会有比较大的variance。记作变换后的矩阵为。其中,矩阵的行就组成了主元(principal components)。
实际中最好的做法是选择一个合适的,使得的协方差矩阵(covariance matrix)能够被对角化(diagonalized)。这是符合直观的因为这样子所有的covariance都被消除了(比如可能本来有很多noise)而留下的就是最能体现信息量的方差本身。具体的做法则是,注意到也是对称正定矩阵所以我们可以做特征值分解(eigen-decomposition)得到,其中是对角矩阵(对角元是特征值),的每列是相应的特征向量。我们令便能得到我们的principal components。因为用这样的,我们就有(注意因为是正交阵,所以):
即我们可以将对角化。
而SVD来源于另外的一套数学概念,不过我们将要说明这套概念和PCA是内在关联的。不同于特征值分解,SVD(奇异值分解)可以作用于任何形状的矩阵。于是我们则定义对的SVD为,其中是两个正交阵而是对角阵(对角元是的奇异值,即singular values)。我们由此也可以看到SVD比特征值分解要强得多的泛用性,这也是它广泛被用于数值计算的原因。
那么它与PCA的关系呢?我们考虑的SVD表示方式:,所以到这里答案就很明显了,我们只需要取另一个投影矩阵就可以将对角化,即的列是principal components。顺便,我们得到了一个副产品奇异值和特征值的关系:,其中是和相应的特征值和奇异值。因此,我们得到了SVD是PCA的另一种algebraic formulation。而这也提供了另外一种算法来计算PCA,实际上,平时我就是用SVD定义的这套算法来做PCA的。因为很方便,计算一次就可以了。
额外补充一点,经常我们希望用PCA对进行压缩,比如只保留维度的数据,这个时候我们只需要仅保留的前列(前个principal components),记作,然后就是我们所要的压缩后的数据。
参考资料(包括那张图的出处):
———————————————————————————————————————————
我的一个用SVD做图像压缩的简单实例的回答:
SVD降维体现在什么地方? – 数学 – 知乎
刚写了篇博客,希望有帮助。
我理解就是一种降维的方法,用更少的成本描述更多的信息,具体可以看看这篇文章:理解PCA和SVD
小弟前来卖个萌,说的不对大家多做自我批评~~
先说PCA吧,PCA降维的大致思想就是: 挑选特征明显的、显得比较重要的信息保留下来。
那么关键就是【特征明显的,重要的信息】如何选择? 选择标准有两个:
1: 同一个维度内的数据,方差大的比较明显,因为方差大表示自己和平均水平差异大,有个性,降维后也最可能分的开~
2: 两个不同维度间关联度越小越好,因为关联度小表示这两个维度表征共同信息的量比较少,最理想就是两个维度不相关,相关度为0(相关度可以用协方差cov(a,b)表示),在线性空间内表现为两个维度正交~
协方差矩阵的主对角线和其余元素正好可以分别表示方差和协方差,而根据两条标准又很容易想到求特征值和特征向量,推导过程 @覃含章大大写的很清楚了
——————————————————————————————————————
下面说一下为啥还有SVD,上面我们说PCA针对的是协方差矩阵C,但你得知道协方差矩阵是个方阵啊,难道不是方阵我们就不资瓷么?? 所以就有了SVD~~
大概可以把SVD看作是对非方阵做PCA处理的一种方式啦,毕竟两者的套路都差不多,分解出特征值(SVD里是奇异值,数据XX‘的特征值的平方根),挑比较大的特征值对应的特征向量构成投影矩阵,然后做线性变换(将数据X投影到低维空间)
稍微有点线性代数基础,再看这篇文章CodingLabs – PCA的数学原理,帮你理清向量基变换和协方差矩阵,就能理解PCA了
每一条训练数据可以看做是高维空间中的一个点,空间需要一组基来表示。通俗的说,就是坐标轴。原始特征的表示并不一定好。
pca可以理解为给数据找一组新的基,通常这组新的基比原来维度低,即传说中的降维。这样要解决的事情就是用比原来少的维度,还能刻画原来的数据。怎么做?svd就是一种方法。svd分解之后,保留奇异值最大的那部分,就实现了这一点,因为奇异值大的那部分「更能代表原来的信息」。
降维有什么用?一方面是可以降低信噪比,让数据更容易被学习,其实就是对数据进行了一次去冗,通俗的说就是捞干的。另外也是为了性能,毕竟维度太高是算不动的。
可以参阅:
机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
1、奇异值与主成分分析(PCA)
2、奇异值与潜在语义索引LSI
一句话,SVD是矩阵上的PCA方法
A one sentence explanation goes like this:
If a random vector is represented in the vector space whose basis are the orthogonal eigen vectors of its original covariance matrix, the 2nd order information redundancy would be eliminated.
The detailed explanation can be found here:
这个我写过一篇,就是降维,比如西瓜有很多特征,我们只需要找到最关键的特征就好了。
昵称*
E-Mail*
回复内容*
回复 ( 10 )
给一个比较algebraic的解释,这两个概念实际上是有内在关联的。很多词不是很清楚中文怎么表示所以会用英文…我们假设数据矩阵(data matrix)的维数是,是样本(sample)的数量,p是数据的维数。我们假设已经中心化了,即每列的均值为0。
首先我们定义PCA的有关概念。一种对PCA的核心意图的解释是,找到另一组正交基,使得进行变换后的方差(variance)最大(因为选取了方差最大的维度,所以这样可以存储最多的信息)。 如下图,如果两个维度之间的data有强相关的话这两个维度的数据会趋近一条直线(这意味着其中一个维度的数据是多余的),反之则会有比较大的variance。记作变换后的矩阵为。其中,矩阵的行就组成了主元(principal components)。
实际中最好的做法是选择一个合适的,使得的协方差矩阵(covariance matrix)能够被对角化(diagonalized)。这是符合直观的因为这样子所有的covariance都被消除了(比如可能本来有很多noise)而留下的就是最能体现信息量的方差本身。具体的做法则是,注意到也是对称正定矩阵所以我们可以做特征值分解(eigen-decomposition)得到,其中是对角矩阵(对角元是特征值),的每列是相应的特征向量。我们令便能得到我们的principal components。因为用这样的,我们就有(注意因为是正交阵,所以):
即我们可以将对角化。
而SVD来源于另外的一套数学概念,不过我们将要说明这套概念和PCA是内在关联的。不同于特征值分解,SVD(奇异值分解)可以作用于任何形状的矩阵。于是我们则定义对的SVD为,其中是两个正交阵而是对角阵(对角元是的奇异值,即singular values)。我们由此也可以看到SVD比特征值分解要强得多的泛用性,这也是它广泛被用于数值计算的原因。
那么它与PCA的关系呢?我们考虑的SVD表示方式:,所以到这里答案就很明显了,我们只需要取另一个投影矩阵就可以将对角化,即的列是principal components。顺便,我们得到了一个副产品奇异值和特征值的关系:,其中是和相应的特征值和奇异值。因此,我们得到了SVD是PCA的另一种algebraic formulation。而这也提供了另外一种算法来计算PCA,实际上,平时我就是用SVD定义的这套算法来做PCA的。因为很方便,计算一次就可以了。
额外补充一点,经常我们希望用PCA对进行压缩,比如只保留维度的数据,这个时候我们只需要仅保留的前列(前个principal components),记作,然后就是我们所要的压缩后的数据。
参考资料(包括那张图的出处):
———————————————————————————————————————————
我的一个用SVD做图像压缩的简单实例的回答:
SVD降维体现在什么地方? – 数学 – 知乎
刚写了篇博客,希望有帮助。
我理解就是一种降维的方法,用更少的成本描述更多的信息,具体可以看看这篇文章:理解PCA和SVD
小弟前来卖个萌,说的不对大家多做自我批评~~
先说PCA吧,PCA降维的大致思想就是: 挑选特征明显的、显得比较重要的信息保留下来。
那么关键就是【特征明显的,重要的信息】如何选择? 选择标准有两个:
1: 同一个维度内的数据,方差大的比较明显,因为方差大表示自己和平均水平差异大,有个性,降维后也最可能分的开~
2: 两个不同维度间关联度越小越好,因为关联度小表示这两个维度表征共同信息的量比较少,最理想就是两个维度不相关,相关度为0(相关度可以用协方差cov(a,b)表示),在线性空间内表现为两个维度正交~
协方差矩阵的主对角线和其余元素正好可以分别表示方差和协方差,而根据两条标准又很容易想到求特征值和特征向量,推导过程 @覃含章大大写的很清楚了
——————————————————————————————————————
下面说一下为啥还有SVD,上面我们说PCA针对的是协方差矩阵C,但你得知道协方差矩阵是个方阵啊,难道不是方阵我们就不资瓷么?? 所以就有了SVD~~
大概可以把SVD看作是对非方阵做PCA处理的一种方式啦,毕竟两者的套路都差不多,分解出特征值(SVD里是奇异值,数据XX‘的特征值的平方根),挑比较大的特征值对应的特征向量构成投影矩阵,然后做线性变换(将数据X投影到低维空间)
稍微有点线性代数基础,再看这篇文章CodingLabs – PCA的数学原理,帮你理清向量基变换和协方差矩阵,就能理解PCA了
每一条训练数据可以看做是高维空间中的一个点,空间需要一组基来表示。通俗的说,就是坐标轴。原始特征的表示并不一定好。
pca可以理解为给数据找一组新的基,通常这组新的基比原来维度低,即传说中的降维。这样要解决的事情就是用比原来少的维度,还能刻画原来的数据。怎么做?svd就是一种方法。svd分解之后,保留奇异值最大的那部分,就实现了这一点,因为奇异值大的那部分「更能代表原来的信息」。
降维有什么用?一方面是可以降低信噪比,让数据更容易被学习,其实就是对数据进行了一次去冗,通俗的说就是捞干的。另外也是为了性能,毕竟维度太高是算不动的。
可以参阅:
机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
1、奇异值与主成分分析(PCA)
2、奇异值与潜在语义索引LSI
一句话,SVD是矩阵上的PCA方法
A one sentence explanation goes like this:
If a random vector is represented in the vector space whose basis are the orthogonal eigen vectors of its original covariance matrix, the 2nd order information redundancy would be eliminated.
The detailed explanation can be found here:
这个我写过一篇,就是降维,比如西瓜有很多特征,我们只需要找到最关键的特征就好了。