PCA 随笔

作者: zidea | 来源:发表于2020-04-01 21:04 被阅读0次
machine_learning.jpg

在今天硬件条件下,我们无需考虑存储成本,大量高维数据提供机器学习再次崛起的条件,同时维度泛滥也给我们带来困惑。当然要首先澄清一下我们认为用处不大的维度并不等于他真的没有价值。可能我们看到的只是表面...

PCA

数据分布中心点,我们可以通过线性变换将数据平移到的数据分布中心,为了简化 PCA 推导过程,我们要做的就是先中心化数据,也就是让数据平均值就是在(0,0)点

  • 中心化数据
import numpy as np
import matplotlib.pyplot as plt
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
from numpy.linalg import cholesky
%matplotlib inline
np.random.seed(10)
sampleNumber = 20
mu = np.array([[1, 5]])
Sigma = np.array([[1, 0.5], [1.5, 3]])
R = cholesky(Sigma)
plt.axhline(y=0,color='y',linestyle="dashed")
plt.axvline(x=0,color='y',linestyle="dashed")
plt.xlim(-5,10)
plt.ylim(-5,10)
plt.grid()
s = np.dot(np.random.randn(sampleNumber, 2), R) + mu
plt.scatter(s[:,0],s[:,1])
plt.axhline(y=np.mean(s[:,1]))
plt.axvline(x=np.mean(s[:,0]))
plt.show()

那么找到数据一个分量,然后数据在这个分量上分的最开,那么我们如何找到这个分量,我们如何衡量数据分散的程度,投影后数据的方差变大代表数据分布比较开,
我们就是要找到最大方差,当投影后,
\begin{aligned} x^{(1)} \rightarrow l^{(1)}\\ x^{(2)} \rightarrow l^{(2)}\\ \vdots\\ x^{(N)} \rightarrow l^{(N)}\\ \end{aligned}
l^{(i)} 表示x^{(1)} 在某一个分量上的投影,然后

\frac{1}{N}\sum_{i=1}^N (l^{(i)} - 0)^2

x^{(1)} \rightarrow l^{(1)}

我们假设要投影的方向为单位向量\vec{u},表示一个方向

l^{(i)} = x^{(i)}\vec{u}

目标函数
\frac{1}{N} \sum_{i=1}^N (x^{(i)}\vec{u})^2

\max_{\vec{u}}\frac{1}{N} \sum_{i=1}^N (x^{(i)}\vec{u})^2
标量做转置还是标量
\begin{aligned} \max_{\vec{u}}\frac{1}{N} \sum_{i=1}^N (x^{(i)}\vec{u})^T(x^{(i)}\vec{u})\\ \max_{\vec{u}}\frac{1}{N} \sum_{i=1}^N ( (x^{(i)})^T\vec{u})^T( (x^{(i)})T\vec{u})\\ \max_{\vec{u}}\frac{1}{N} \sum_{i=1}^N \vec{u}^Tx^{(i)}(x^{(i)})^T\vec{u}\\ \max_{\vec{u}} \vec{u}^T \frac{1}{N} \sum_{i=1}^N ( x^{(i)}(x^{(i)})^T)\vec{u} \end{aligned}

\frac{1}{N} \sum_{i=1}^N ( x^{(i)}(x^{(i)})^T) 就是 \vec{u}= 0 时的协方差矩阵。

\max_{\vec{u}} \vec{u}^T \Sigma \vec{u}
假设最大值是\lambda,我们能够看到\vec{u}\vec{u}_1

\vec{u}_1^T \Sigma \vec{u}_1 = \lambda
\vec{u}_1 \vec{u}_1 \Sigma \vec{u}_1 = \lambda \vec{u}_1
\vec{u}_1 \vec{u}_1^T \Sigma \vec{u}_1 = \lambda \vec{u}_1
\Sigma \vec{u}_1 = \lambda \vec{u}_1

\lambda\Sigma 的特征值,\vec{u}就是\Sigma 的特征向量

相关文章

  • PCA 随笔

    给大家解释一个问题,我们可以基于64×64像素的灰度图像表示通过在图像周围填充 0 来将图片变为 100×100 ...

  • PCA 随笔

    在今天硬件条件下,我们无需考虑存储成本,大量高维数据提供机器学习再次崛起的条件,同时维度泛滥也给我们带来困惑。当然...

  • 2020-08-25--PCA降维01

    主要内容 PCA简介 使用梯度上升法解决PCA问题 1.PCA简介 PCA(Principal Component...

  • PCA降维

    参考:如何理解主元分析(PCA)?PCA的数学原理转自:python实现PCA ★ PCA思路: 我们的初始矩阵为...

  • PCA

    PCA PCA KPCA 代码详见:https://github.com/AresAnt/ML-DL PCA: P...

  • 12-机器学习练习与特征工程、评价指标

    一.使用PCA识别手写数字 PCA:Principal Component Analysis(主成分分析)PCA通...

  • PCA在R语言中的实现

    PCA 简介 PCA(Principal Component Analysis),即主成分分析。PCA是一种研究数...

  • 浅谈PCA降维原理

    PCA是什么 PCA(Principal Component Analysis)是一种常用的数据分析方法PCA通过...

  • PCA 的数学原理和可视化效果

    本文结构: 什么是 PCA 数学原理 可视化效果 1. 什么是 PCA PCA (principal compon...

  • PCA

    PCA降维 一、算法原理 降维算法 还原算法 二、算法实现 三、scikit-learn PCA 四、PCA降噪 ...

网友评论

    本文标题:PCA 随笔

    本文链接:https://www.haomeiwen.com/subject/mldbuhtx.html