1. 云栖社区>
  2. PHP教程>
  3. 正文

机器学习:Principal components analysis (主分量分析)

作者:用户 来源:互联网 时间:2017-12-01 10:30:42

学习components分析Principal

机器学习:Principal components analysis (主分量分析) - 摘要: 本文讲的是机器学习:Principal components analysis (主分量分析),Principal components analysis 这一讲,我们简单介绍Principal Components Analysis(PCA),这个方法可以用来确定特征空间的子空间,用一种更加紧凑的方式(更少的维数)来表示原来的特征

Principal components analysis

这一讲,我们简单介绍Principal Components Analysis(PCA),这个方法可以用来确定特征空间的子空间,用一种更加紧凑的方式(更少的维数)来表示原来的特征空间。假设我们有一组训练集{x(i);i=1,...m}/{x^{(i)}; i=1,...m /},含有m个训练样本,每一个训练样本x(i)∈Rnx^{(i)} /in /mathbb{R}^{n},其中(n≪mn /ll m),每一个n维的训练

样本意味着有n个属性,一般来说,这n个属性里面,会有很多是存在一定相关性的,也就是很多属性是冗余的,这就为特征的降维提供了可能,关键是如何确定多余的属性以及如何进行降维。

PCA为这个问题提供了一种解决途径,在做PCA之前,我们要先对数据做如下的预处理:

1: 求出训练集的均值向量:μ=1m∑mi=1x(i)/mu=/frac{1}{m} /sum_{i=1}^{m}x^{(i)}.

2: 用每一个训练样本减去均值向量,x(i)=x(i)−μx^{(i)}=x^{(i)}-/mu.

3: 求出变换后的训练集的方差:σ2j=1m∑i(x(i)j)2/sigma_{j}^{2}=/frac{1}{m} /sum_{i} (x_{j}^{(i)})^{2}.

4: 再将训练集的样本做如下替换:x(i)j=x(i)j/σjx_{j}^{(i)}=x_{j}^{(i)} / /sigma_{j}.

上面的第1,2步确保了训练集的均值为0,第3,4步保证了训练集的方差为1,使得训练样本里的不同属性变换到同一个尺度上处理。给定一个单位向量uu和一个点xx,那么该点xx到单位向量的投影的长度为xTux^{T} u,如果x(i)x^{(i)}是训练集里的一个样本,那么它在uu上的投影长度即为xTux^{T}u到原点的距离,因此,为了能够让这些投影之间的方差最大,我们希望找到满足如下表达式的单位向量uu。

1m∑i=1m((x(i))Tu)2=1m∑i=1muTx(i)(x(i))Tu=uT(1m∑i=1mx(i)(x(i))T)u/begin{equation*}
/begin{split}
/frac{1}{m} /sum_{i=1}^{m} ((x^{(i)})^{T}u)^{2} & = /frac{1}{m} /sum_{i=1}^{m} u^{T}x^{(i)}(x^{(i)})^{T}u //
& =u^{T} /left( /frac{1}{m} /sum_{i=1}^{m} x^{(i)}(x^{(i)})^{T} /right) u
/end{split}
/end{equation*}

因为uu是单位向量,所以∥u∥2=1/left /| u /right /|^{2}=1,上式括号中的表达式即为均值为0的协方差矩阵(Σ=1m∑mi=1x(i)(x(i))T/Sigma=/frac{1}{m} /sum_{i=1}^{m} x^{(i)}(x^{(i)})^{T}),为了使目标函数最大化,则uu应该取Σ/Sigma最大的特征值所对应的特征向量。

总之,我们应该取Σ/Sigma的主特征向量,如果我们希望将原来的数据空间映射到一个低维的子空间,我们可以选择Σ/Sigma的前k个特征向量作为子空间的基向量,那么这k个特征向量u1,u2,...uku_{1}, u_{2}, ... u_{k}组成了新空间的基向量。那么我们可以将原来的训练样本x(i)x^{(i)}映射到新的特征空间:

y(i)=⎡⎣⎢⎢⎢⎢⎢⎢uT1x(i)uT2x(i)⋮uTkx(i)⎤⎦⎥⎥⎥⎥⎥⎥∈Rk
y^{(i)}=/begin{bmatrix}
u_{1}^{T}x^{(i)} //
u_{2}^{T}x^{(i)} //
/vdots //
u_{k}^{T}x^{(i)}
/end{bmatrix} /in /mathbb{R}^{k}

因此,虽然x(i)x^{(i)}是一个n维的向量,但是y(i)y^{(i)}变成了维数更低的向量,所以PCA是一种降维算法,其中特征向量u1,u2,...uku_{1}, u_{2}, ... u_{k}称为训练集的

前k个主分量。

参考来源:


Andrew Ng, “Machine Learning”, Stanford University.

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索学习 , components , 分析 , , , Principal ,以便于您获取更多的相关知识。