【数据科学基础复习 - 3】PCA主成分分析
本文仅就PCA原理及应用作一简单总结, 具体的数学原理等考试后再补上.
1. PCA推导
目标
对于正交空间中的样本点,现想将其投影到一个低维超平面中使得所有样本可在该平面中得到恰当的表达.
什么叫恰当的表达?
- 最近重构性:样本点到该超平面的距离都足够近(距离最小).
- 最大可分性:样本点到该超平面上的投影尽可能分开(方差最大, 协方差为0)
可以证明,上面两个表述可推出等价的投影矩阵.
基于最近重构性的PCA推导
假设样本已中心化\(\sum x_i=0\),设新坐标系为\(W=\{w_1,w_2,\dots,w_d\}\),其中\(w_i\)是标准正交基向量, 即\(||w_i||=1,w_i^Tw_j=0(i\neq j)\)
现欲降维至\(d'<d\),则样本点\(x_i\)在低维坐标系中的投影为\(z_i=(z_{i1},z_{i2},\dots,z_{id'})\),其中\(z_{ij}=w_j^Tx_i\)
此时再将新坐标反投影回原坐标系(重构)可得\(x_i'=\sum_{j=1}^{d'}z_{ij}w_j\)
考虑原样本点\(x_i\)与重构后\(x_i'\)的距离为:

根据最小重构性,可得优化目标:找满足\(W^TW=1\)且使得\(-tr(W^TXX^TW)\)最小的\(W\).
根据拉格朗日乘子法(需补充详细过程),可得\(XX^TW=\lambda W\).故只需对\(XX^T\)进行特征值分解.将求得的特征值排序取前\(d'\)个构成\(W=(w_1,\dots,w_{d'})\). 投影坐标为\(y=W^Tx\)
也可以理解为求得的是使得\(XX^T\)对角化(协方差为0)且方差最大(对角元取最大的几个特征值)的\(W\)
逐一选取特征向量与直接选取具有等价性

实践中常用奇异值分解代替特征值分解
2. PCA应用(做题)
一些细节
如何组织数据?
\[\left \{
\begin{matrix}
&a_1&\dots&a_n\\
&b_1&...&b_n\\
&...&...&...\\
&z_1&...&z_n\\
\end{matrix}
\right\}\tag{1}
\]\(m\)维\(n\)个数据
如何中心化?
每行数据减去均值
计算步骤
- 中心化数据
- 计算协方差矩阵
- 求特征值
- 取最大的前\(d'\)个特征值对应的特征向量标准正交化后得到\(W\)
- 如果有重特征值排在前\(d'\)则需施密特正交化
- 新坐标\(y=W^Tx\)
【数据科学基础复习 - 3】PCA主成分分析的更多相关文章
- python3 数据科学基础
第一章 1.Anaconda(最著名的python数据科学平台) 下面小伙伴们咱们来初初识下Anaconda吧 What is Anaconda???? 回答: (1).科学计算的平台 (2).有很多 ...
- (数据科学学习手札22)主成分分析法在Python与R中的基本功能实现
上一篇中我们详细介绍推导了主成分分析法的原理,并基于Python通过自编函数实现了挑选主成分的过程,而在Python与R中都有比较成熟的主成分分析函数,本篇我们就对这些方法进行介绍: R 在R的基础函 ...
- (数据科学学习手札20)主成分分析原理推导&Python自编函数实现
主成分分析(principal component analysis,简称PCA)是一种经典且简单的机器学习算法,其主要目的是用较少的变量去解释原来资料中的大部分变异,期望能将现有的众多相关性很高的变 ...
- 数据降维-PCA主成分分析
1.什么是PCA? PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法.PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特 ...
- 零基础使用Swift学习数据科学
概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...
- 《Python数据科学手册》第五章机器学习的笔记
目录 <Python数据科学手册>第五章机器学习的笔记 0. 写在前面 1. 判定系数 2. 朴素贝叶斯 3. 自举重采样方法 4. 白化 5. 机器学习章节总结 <Python数据 ...
- python书籍推荐:Python数据科学手册
所属网站分类: 资源下载 > python电子书 作者:today 链接:http://www.pythonheidong.com/blog/article/448/ 来源:python黑洞网 ...
- 深入对比数据科学工具箱:Python和R之争
建议:如果只是处理(小)数据的,用R.结果更可靠,速度可以接受,上手方便,多有现成的命令.程序可以用.要自己搞个算法.处理大数据.计算量大的,用python.开发效率高,一切尽在掌握. 概述 在真实的 ...
- CS229 6.6 Neurons Networks PCA主成分分析
主成分分析(PCA)是一种经典的降维算法,基于基变换,数据原来位于标准坐标基下,将其投影到前k个最大特征值对应的特征向量所组成的基上,使得数据在新基各个维度有最大的方差,且在新基的各个维度上数据是不相 ...
随机推荐
- vue 快速入门 系列 —— Vue 实例的初始化过程
其他章节请看: vue 快速入门 系列 Vue 实例的初始化过程 书接上文,每次调用 new Vue() 都会执行 Vue.prototype._init() 方法.倘若你看过 jQuery 的源码, ...
- 常见线程池 newFixedThreadPool 的简单使用
package com.aaa.threaddemo; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurr ...
- Entity Framework 在OrderBy排序中使用字符串
public static class LinqExtensions { private static PropertyInfo GetPropertyInfo(Type objType, strin ...
- Java产生指定范围内的随机日期
要想产生指定范围内的随机日期,首先我们要指定一个范围,那么我们可以通过SImpleDateFormat格式化日期,然后再通过parse()方法设置日期,返回一个Date类型的日期对象,再转化为时间戳( ...
- HTTP缓存协议实战
一.什么是缓存 缓存,又称作Cache,我们把临时存储数据的地方叫做缓存池,缓存池里面放的数据就叫做缓存.当用户需要使用这些数据,首先在缓存中寻找,如果找到了则直接使用.如果找不到,则再去其他数据源中 ...
- SpringMVC探秘-请求之路
SpringMVC探秘-请求之路 开始 今天来分析一下SpringMVC的原理,探究SpringMVC如何把请求传递到每个Controller的方法上,从Servlet到Controller,一个请求 ...
- HDFS源码解析系列一——HDFS通信协议
通信架构 首先,看下hdfs的交互图: 可以看到通信方面是有几个角色的:客户端(client).NameNode.SecondaryNamenode.DataNode;其中SecondaryNamen ...
- 8、Linux基础--rpm、yum、yum私有仓库、系统优化
笔记 1.晨考 1.文件的三种时间属性,每一种时间属性在什么情况下改变 atime : 访问时间 mtime :修改时间 ctime :修改属性时间 2.权限的类型 可读(r, 4) 可写(w, 2) ...
- nginx负载均衡初体验
本例采取简单的轮询策略进行nginx的负载均衡处理. 在反向代理(参考:https://www.cnblogs.com/ilovebath/p/14771571.html)的基础上增加负载均衡处理的n ...
- 以Docker容器的形式运行GVM-11
OpenVAS(Open Vulnerability Assessment System)是在nessus基础上发展起来的一个开源的漏洞扫描程序,其核心部件是一套漏洞测试程序,可以检测远程系统和应用程 ...