PCA的数学原理.pdf

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PCA的数学原理

16-5-6 Coding Labs - PCA的数学原理 CodingLabs keep coding, keep foolish 首页 | 标签 | 关于我 | +订阅 | 微博 PCA的数学原理 作者 张洋 | 发布于 2013-06-22 机器学习 线性代数 PCA PCA (Principal Component Analysis )是一种常用的数据分析方法。PCA通过线性变换将原始数据变换 为一组各维度线性无关的表示 ,可用于提取数据的主要特征分量 ,常用于高维数据的降维。网上关于 PCA的文章有很多 ,但是大多数只描述了PCA的分析过程 ,而没有讲述其中的原理。这篇文章的目的是 介绍PCA的基本数学原理 ,帮助读者了解PCA的工作机制是什么。 当然我并不打算把文章写成纯数学文章 ,而是希望用直观和易懂的方式叙述PCA的数学原理 ,所以整个 文章不会引入严格的数学推导。希望读者在看完这篇文章后能更好的明白PCA的工作原理。 数据的向量表示及降维问题 一般情况下 ,在数据挖掘和机器学习中 ,数据被表示为向量。例如某个淘宝店2012年全年的流量及交易 情况可以看成一组记录的集合 ,其中每一天的数据是一条记录 ,格式如下 : (日期, 浏览量, 访客数, 下单数, 成交数, 成交金额) 其中“日期”是一个记录标志而非度量值 ,而数据挖掘关心的大多是度量值 ,因此如果我们忽略日期这个字 段后 ,我们得到一组记录 ,每条记录可以被表示为一个五维向量 ,其中一条看起来大约是这个样子 : (500, 240, 25, 13, 2312.15)T 注意这里我用了转置 ,因为习惯上使用列向量表示一条记录 (后面会看到原因 ),本文后面也会遵循这 个准则。不过为了方便有时我会省略转置符号 ,但我们说到向量默认都是指列向量。 我们当然可以对这一组五维向量进行分析和挖掘 ,不过我们知道 ,很多机器学习算法的复杂度和数据的 维数有着密切关系 ,甚至与维数呈指数级关联。当然 ,这里区区五维的数据 ,也许还无所谓 ,但是实际 机器学习中处理成千上万甚至几十万维的情况也并不罕见 ,在这种情况下 ,机器学习的资源消耗是不可 接受的 ,因此我们必须对数据进行降维。 降维当然意味着信息的丢失 ,不过鉴于实际数据本身常常存在的相关性 ,我们可以想办法在降维的同时 将信息的损失尽量降低。 举个例子 ,假如某学籍数据有两列M和F ,其中M列的取值是如何此学生为男性取值1 ,为女性取值0 ;而 F列是学生为女性取值1 ,男性取值0。此时如果我们统计全部学籍数据 ,会发现对于任何一条记录来 说 ,当M为1时F必定为0 ,反之当M为0时F必定为1。在这种情况下 ,我们将M或F去掉实际上没有任何信 息的损失 ,因为只要保留一列就可以完全还原另一列。 当然上面是一个极端的情况 ,在现实中也许不会出现 ,不过类似的情况还是很常见的。例如上面淘宝店 blog .coding labs.org/articles/pca-tutorial.html 1/13 16-5-6 Coding Labs - PCA的数学原理 铺的数据 ,从经验我们可以知道 ,“浏览量”和“访客数”往往具有较强的相关关系 ,而“下单数”和“成交数”也 具有较强的相关关系。这里我们非正式的使用“相关关系”这个词 ,可以直观理解为“当某一天这个店铺的 浏览量较高 (或较低 )时 ,我们应该很大程度上认为这天的访客数也较高 (或较低 )”。后面的章节中我 们会给出相关性的严格数学定义。 这种情况表明 ,如果我们删除浏览量或访客数其中一个指标 ,我们应该期待并不会丢失太多信息。因此 我们可以删除一个 ,以降低机器学习算法的复杂度。 上面给出的是降维的朴素思想描述 ,可以有助于直观理解降维的动机和可行性 ,但并不具有操作指导意 义。例如 ,我们到底删除哪一列损失的信息才最小 ?亦或根本不是单纯删除几列 ,而是通过某些变换将 原始数据变为更少的列但又使得丢失的信息最小 ?到底如何

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档