机器学习笔记—主成分分析

在介绍因子分析时,我们把数据 x∈Rn 建模在 k 维子空间上,k<<n。我们假设每个点 x(i) 是这样生成的:先从 k 维高斯多元高斯分布中采样得到 z(i),再通过计算 μ+Λz(i) 将 z 映射到 n 维空间,给 μ+Λz(i) 增加协方差噪声 ψ,得到 x(i)。因子分析是基于概率模型,参数估计使用了迭代式 EM 算法。

本文介绍主成分分析方法,即 PCA,尝试找出数据依赖的子空间。但 PCA 会做得更直接,只需要用到向量计算,不需要使用 EM。

设有 m 种不同汽车的属性数据 {x(i),i=1,...,m},如最大速度、转弯半径等,其中 x(i)∈Rn(n<<m)。但我们不知道的是,有两个属性 x 和 x,都表示汽车的最大时速,只是一个以英里为单位,一个以公里为单位。所以,这两个属性几乎是线性依赖的,只是因为取整不同会有一点小区别。所以,数据其实几乎是依赖于 n-1 维子空间的,我们怎么才能检测或者去除这种冗余呢?

举一个自然点的例子,有无线电控制直升机的驾驶员数据,其中 x1(i) 表示驾驶员 i 的技能程度,x2(i) 表示他有多喜欢飞行。因为无线电控制的直升飞机很难飞行,所以只有最愿意投入的学生,真正喜欢飞行,才能成为好的驾驶员。所以,两个属性 x1 和 x2 是强相关的。实际上,我们看到斜线轴方向捕捉到了人们的飞行本质,在该斜线轴上只有一点噪声。怎么才能自动计算 u1 方向呢?

我们将简单介绍 PCA 算法,在运行 PCA 算法之前,先对数据进行预处理,归一化均值和方差。

现在,怎么来计算变化的主轴 u,也就是数据近似呈现的方向。根据观察,在跟 u 相关的方向上,数据映射到该方向上后的方差最大。直觉上,方差越大,信息量也越大。

考虑如下数据集,已经执行了归一化。

现在假设 u 是下图所示方向,圆圈表示原始数据到该线上的映射点。

可以看到映射数据有较大的方差,点趋向于远离原点。相反,如果取下列方向:

映射点的方差就明显要小得多,更靠近原点。

我们希望能自动找到上面两幅图的第一幅的 u。给定单元向量 u 和点 x,x 在 u 上的映射的长度为 xTu。所以,为最大化映射的方差,我们要选择单元向量 u,以最大化

该式有一个约束条件,|u|2=1,Σ 正好是数据的经验协方差矩阵。这个最大化问题的解 u 就是 Σ=(1/m)ΣxxT 的特征向量。这是如何得到的呢?

使用拉格朗日方程来求解该最大化问题,则:

对 u 求导,得

令导数为 0,可知 u 就是 Σ 的特征向量。

 

如果我们要将数据映射到 k 维子空间(k<n),我们应该选择 Σ 最大的 k 个特征向量 u1,u2,...,uk

现在以 x(i) 为基础,我们只需要计算相关向量:

y(i) 给出了一个 k 维的 x(i) 的近似。PCA 也因为被称为降维算法。向量 u1,...,uk 被称为数据的 k 个主成分。

PCA 有许多应用。首先是压缩,用低维的 y(i) 表示 x(i),如果能将高维数据压缩到 2 或 3 维,我们就可以画出 y(i) 以可视化数据。例如如果能把汽车数据压缩到 2 维,就可以看出哪些汽车是类似的,聚集在一块的;还有预处理,在运行监督学习算法之前先降维,除了计算上的好处,还能降低假设的复杂度,防止过拟合;PCA 还可用于降低噪声,例如从飞行技能和飞行享受的数据噪声中提取出本质。

 

参考资料:

[1] http://cs229.stanford.edu/notes/cs229-notes10.pdf

[2] http://blog.csdn.net/stdcoutzyx/article/details/37568225

转载于:https://www.cnblogs.com/NaughtyBaby/p/5429636.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值