首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

推荐 机器学习中SVD和PCA一直没有搞的特别清楚,应该如何理解呢?

每天一点小知识:NoSQLt时间戳可以精确到毫秒。

给一个比较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做图像压缩的简单实例的回答:

张馨宇正在搞机器学习,干过搜索引擎,码农

每一条训练数据可以看做是高维空间中的一个点,空间需要一组基来表示。通俗的说,就是坐标轴。原始特征的表示并不一定好。

pca可以理解为给数据找一组新的基,通常这组新的基比原来维度低,即传说中的降维。这样要解决的事情就是用比原来少的维度,还能刻画原来的数据。怎么做?svd就是一种方法。svd分解之后,保留奇异值最大的那部分,就实现了这一点,因为奇异值大的那部分「更能代表原来的信息」。

降维有什么用?一方面是可以降低信噪比,让数据更容易被学习,其实就是对数据进行了一次去冗,通俗的说就是捞干的。另外也是为了性能,毕竟维度太高是算不动的。

maple计算流体力学,机器学习

我理解就是一种降维的方法,用更少的成本描述更多的信息,具体可以看看这篇文章:理解PCA和SVD

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180709B07CHX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券