[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

  1. 减少计算成本。减少不重要的特征,保留关键成分。
  2. 减少 “维度灾难” 的影响。lecture 11 中提及,维度增加,需要更多数据点,分析耗费的时间更多。因此,减少维度能够缓解维度灾难。
  3. 压缩数据。极大的降低数据储存要求。

Singular Value Decomposition (SVD)

Overview

直观地,SVD 是允许将数据呈现在一个新子特征空间的程序,使得数据的大多数变化能被捕捉。这是通过原特征空间的旋转轴,形成与原轴 / 原特征(例如:客户的年龄、收入 ···)线性组合的新轴。新轴可以基于每个方向对方差的贡献,系统地分解数据点的方差(数据的分散程度)。

SVD 的结果是一个关于特征空间的 “方向” 表,根据方差由高到低排序。有最高方差的方向称为 “(数据方差的)主成份”。关注这些维度的数据分布,就可以捕捉到大多数信息。

特征选择和维度减少有所不同,见下。

Technical Details of Singular Value Decomposition

  • SVD 代表矩阵 A=UΣVT A = U Σ V T ,其中 U:m×m U : m × m V:n×n V : n × n 是旋转矩阵, Σ:m×n Σ : m × n 是对角尺度矩阵。例如:

  • python 代码:[U, S, V] = numpy.linalg.svd(A)。计算机计算 SVD 步骤如下:

    1. 计算 AAT A A T 的特征向量。这些向量构成 U U 的列。特征向量的平方根为奇异值 (构成Σ)
    2. 计算 ATA A T A 的特征向量。这些向量构成 V V 的列。
  • 因为 SVD 依赖于特征向量的计算,所以即使矩阵很大,计算也很快。

  • 更详细的实现细节:http://www.ams.org/samplings/feature-column/fcarc-svd.

Eigenvector definition

  • Ax=λx x x 为特征向量,λ为放缩因子。
  • 换句话说,用 x x 来转换A只会放缩但不会改变方向。

Applications of Singular Value Decomposition

  • 计算逆转矩阵。如果任意矩阵 A A 可以被分解为A=UΣVT,那么 A A 的逆可以定义为A+=VTΣ1U。即使这只是一个近似值,但它允许计算许多非平方矩阵的逆。
  • SVD 也可以用于计算矩阵的主成份。主成份大量用于数据分析和机器学习中,因此 SVD 是很多程序的核心。

Principal Component Analysis (PCA)

What are Principal Component

继续 SVD 的例子,注意 U U 的第一列被Σ的第一个值缩放了。

接着, UΣ U Σ VT V T 的第一行缩放,对 A A 的列产生了一个贡献Apartial。每个 ( U U 的列i)*( Σ Σ 的值 i i )*(VT的行 i i ) 都是A的一个成分。

在这个过程中,我们把矩阵 A A 作为U的行的线性组合,如上图。但是,现实中我们可以只有 U U 的几列来构造出一个A的好的近似。这是由于 Σ Σ 的性质。 Σ Σ 是一个最大值位于左上角,其余值由左上往右下递减的对角矩阵。因此, U U 的前列对A的贡献最大。这前几列就称为主成分。

我们通过分析协方差矩阵,移除贡献小的维度。协方差矩阵的值并没有那么重要,但是值的符号很重要,正号代表正相关,负号代表负相关,0 代表相互独立。

Covariance

方差和协方差是一组点在质量中心(均值)的 “扩散” 的度量。方差:衡量一个维度上的点的偏差的度量,例如高度。协方差:衡量每个维度之间的差异的一种度量。在两个维度之间测量协方差,看看两个维度之间是否有关系,例如研究的小时数和获得的分数。一个维度和自身之间的协方差是方差。

COV(x,y)=ni=1(x¯¯¯ix)(y¯¯¯iy)n1 C O V ( x , y ) = ∑ i = 1 n ( x ¯ i − x ) ( y ¯ i − y ) n − 1

Performing PCA

PCA 可以用 sklearn package 实现:sklearn.decomposition.PCA。非正式方法实现步骤如下:

  1. 将数据转化为 m×n m × n 格式, m m 代表样本数,n表示特征数

  2. 使 X X 置中

    X

  3. 通过 SVD 对角化 X X X=UΣVT

  4. 特征向量是主要方向,这些轴上的阴影是组成成分。这意味着最终我们要计算 XV X V

  5. 因为 V V 包含特征向量,所以是标准正交的,XV=UΣVTV=US

  6. 步骤 5 说明我们只需要 US U S 的列,均由 SVD 产生。

Applications of Principal Component

  • 图像压缩。图像矩阵中的大多数信息都可以被低阶矩阵提取。所以在质量没有明显损失下,可以使用 PCA 压缩图像。如图:

    只用 16 个主成份,原图像就能被很好的重现。相对误差如下:

  • 用于搜索引擎。搜索空间中有许多都与搜索关键词无关,所以搜索引擎常用 PCA 缩小搜索空间。这对即使搜索十分重要,也体现了 SVD 的能力。

实际上,PCA 代表了样本作为不同成分的权重 – 允许用一个成分代表样本间的差异。这大大减少了数据冗余,使得算法更加高效有用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值