[CS131] Lecture 12 Face Recognition & Dimensionality Reduction
根据 Stanford CS131 课程写的笔记(大部分为 note 翻译),英语水平一般,如有错误请评论指正
Lecture 12 Face Recognition & Dimensionality Reduction
Overview and Motivation
Overview
维度减少是用于减少特征数的一个过程,可以提高效率。主要有两种方法:奇异值分解 (Singular Value Decomposition, SVD) 和主成分分析 (Principal Component Analysis, PCA)。
Motivation
- 减少计算成本。减少不重要的特征,保留关键成分。
- 减少 “维度灾难” 的影响。lecture 11 中提及,维度增加,需要更多数据点,分析耗费的时间更多。因此,减少维度能够缓解维度灾难。
- 压缩数据。极大的降低数据储存要求。
Singular Value Decomposition (SVD)
Overview
直观地,SVD 是允许将数据呈现在一个新子特征空间的程序,使得数据的大多数变化能被捕捉。这是通过原特征空间的旋转轴,形成与原轴 / 原特征(例如:客户的年龄、收入 ···)线性组合的新轴。新轴可以基于每个方向对方差的贡献,系统地分解数据点的方差(数据的分散程度)。
SVD 的结果是一个关于特征空间的 “方向” 表,根据方差由高到低排序。有最高方差的方向称为 “(数据方差的)主成份”。关注这些维度的数据分布,就可以捕捉到大多数信息。
特征选择和维度减少有所不同,见下。
Technical Details of Singular Value Decomposition
-
SVD 代表矩阵,其中和是旋转矩阵,是对角尺度矩阵。例如:
-
python 代码:
[U, S, V] = numpy.linalg.svd(A)
。计算机计算 SVD 步骤如下:- 计算的特征向量。这些向量构成的列。特征向量的平方根为奇异值 (构成)
- 计算的特征向量。这些向量构成的列。
因为 SVD 依赖于特征向量的计算,所以即使矩阵很大,计算也很快。
更详细的实现细节:http://www.ams.org/samplings/feature-column/fcarc-svd.
Eigenvector definition
- ,为特征向量,为放缩因子。
- 换句话说,用来转换只会放缩但不会改变方向。
Applications of Singular Value Decomposition
- 计算逆转矩阵。如果任意矩阵可以被分解为,那么的逆可以定义为。即使这只是一个近似值,但它允许计算许多非平方矩阵的逆。
- SVD 也可以用于计算矩阵的主成份。主成份大量用于数据分析和机器学习中,因此 SVD 是很多程序的核心。
Principal Component Analysis (PCA)
What are Principal Component
继续 SVD 的例子,注意的第一列被的第一个值缩放了。
接着,被的第一行缩放,对的列产生了一个贡献。每个 (的列)*(的值)*(的行) 都是的一个成分。
在这个过程中,我们把矩阵作为的行的线性组合,如上图。但是,现实中我们可以只有的几列来构造出一个的好的近似。这是由于的性质。是一个最大值位于左上角,其余值由左上往右下递减的对角矩阵。因此,的前列对的贡献最大。这前几列就称为主成分。
我们通过分析协方差矩阵,移除贡献小的维度。协方差矩阵的值并没有那么重要,但是值的符号很重要,正号代表正相关,负号代表负相关,0 代表相互独立。
Covariance
方差和协方差是一组点在质量中心(均值)的 “扩散” 的度量。方差:衡量一个维度上的点的偏差的度量,例如高度。协方差:衡量每个维度之间的差异的一种度量。在两个维度之间测量协方差,看看两个维度之间是否有关系,例如研究的小时数和获得的分数。一个维度和自身之间的协方差是方差。
Performing PCA
PCA 可以用 sklearn package 实现:sklearn.decomposition.PCA
。非正式方法实现步骤如下:
将数据转化为格式,代表样本数,表示特征数
-
使置中
通过 SVD 对角化:
特征向量是主要方向,这些轴上的阴影是组成成分。这意味着最终我们要计算
因为包含特征向量,所以是标准正交的,
步骤 5 说明我们只需要的列,均由 SVD 产生。
Applications of Principal Component
-
图像压缩。图像矩阵中的大多数信息都可以被低阶矩阵提取。所以在质量没有明显损失下,可以使用 PCA 压缩图像。如图:
只用 16 个主成份,原图像就能被很好的重现。相对误差如下:
用于搜索引擎。搜索空间中有许多都与搜索关键词无关,所以搜索引擎常用 PCA 缩小搜索空间。这对即使搜索十分重要,也体现了 SVD 的能力。
实际上,PCA 代表了样本作为不同成分的权重 – 允许用一个成分代表样本间的差异。这大大减少了数据冗余,使得算法更加高效有用。