瞎搞系列-奇异值分解
本文转自知乎
一、数据中的冗余和噪声
我们先举一个例子,假设现在我们拿到这样一组数据,里面有两个属性,既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然我们一眼就看出这两个特征有一个多余。
怎么直观的判断数据是否冗余? 上图从左往右,我们可以发现数据之间的关联性越来越强,也就是说两组数据越来越“相似”,我们用其中一组数据就能预测出另一组数据,这就是数据需要降维的其中一个原因:冗余。
另一方面,除了冗余之外,数据中可能还存在噪声,数据记录过程中存在某些不可抗因素的干扰。我们常常用信噪比signal-to-noise ratio (SNR) 来评价一组数据的好坏。
换句话说,一组数据中” 信号” 部分的方差较大,方差较小的我们可以认定为噪声。
哎呀,我们已经找到PCA 的理论根据了,我们要得到数据中的” 有用” 信息,也就是说我们要找到数据方差大的维度
二. 协方差矩阵
那么怎么判断两组数据是否冗余呢,很简单呀,求个协方差就可以了。
举个例子,我们想知道一个男孩子的猥琐程度跟他受女孩子的欢迎程度是否存在一些联系。我们就可以用协方差来度量,协方差的的定义:
协方差的结果有什么意义呢?
如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐越受女孩欢迎。如果结果为负值,就说明两者是负相关,越猥琐女孩子越讨厌。如果为0,则两者之间没有关系,猥琐不猥琐和女孩子喜不喜欢之间没有关联,就是统计上说的“相互独立”。
协方差矩阵可表示为:
将一组 N 维向量降为K 维(K 大于0,小于N),其目标是选择K 个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0(去冗余),而字段的方差则尽可能大(在正交的约束下,取最大的K 个方差:降噪)。