本文仅就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\)个数据

  • 如何中心化?

    每行数据减去均值

  • 计算步骤

    1. 中心化数据
    2. 计算协方差矩阵
    3. 求特征值
    4. 取最大的前\(d'\)​​个特征值对应的特征向量标准正交化后得到\(W\)​
      • 如果有重特征值排在前\(d'\)则需施密特正交化
    5. 新坐标\(y=W^Tx\)

【数据科学基础复习 - 3】PCA主成分分析的更多相关文章

  1. python3 数据科学基础

    第一章 1.Anaconda(最著名的python数据科学平台) 下面小伙伴们咱们来初初识下Anaconda吧 What is Anaconda???? 回答: (1).科学计算的平台 (2).有很多 ...

  2. (数据科学学习手札22)主成分分析法在Python与R中的基本功能实现

    上一篇中我们详细介绍推导了主成分分析法的原理,并基于Python通过自编函数实现了挑选主成分的过程,而在Python与R中都有比较成熟的主成分分析函数,本篇我们就对这些方法进行介绍: R 在R的基础函 ...

  3. (数据科学学习手札20)主成分分析原理推导&Python自编函数实现

    主成分分析(principal component analysis,简称PCA)是一种经典且简单的机器学习算法,其主要目的是用较少的变量去解释原来资料中的大部分变异,期望能将现有的众多相关性很高的变 ...

  4. 数据降维-PCA主成分分析

    1.什么是PCA? PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法.PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特 ...

  5. 零基础使用Swift学习数据科学

    概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...

  6. 《Python数据科学手册》第五章机器学习的笔记

    目录 <Python数据科学手册>第五章机器学习的笔记 0. 写在前面 1. 判定系数 2. 朴素贝叶斯 3. 自举重采样方法 4. 白化 5. 机器学习章节总结 <Python数据 ...

  7. python书籍推荐:Python数据科学手册

    所属网站分类: 资源下载 > python电子书 作者:today 链接:http://www.pythonheidong.com/blog/article/448/ 来源:python黑洞网 ...

  8. 深入对比数据科学工具箱:Python和R之争

    建议:如果只是处理(小)数据的,用R.结果更可靠,速度可以接受,上手方便,多有现成的命令.程序可以用.要自己搞个算法.处理大数据.计算量大的,用python.开发效率高,一切尽在掌握. 概述 在真实的 ...

  9. CS229 6.6 Neurons Networks PCA主成分分析

    主成分分析(PCA)是一种经典的降维算法,基于基变换,数据原来位于标准坐标基下,将其投影到前k个最大特征值对应的特征向量所组成的基上,使得数据在新基各个维度有最大的方差,且在新基的各个维度上数据是不相 ...

随机推荐

  1. ql/sql 循环语句、异常处理、事务处理!

    一.ql sql 循环语句? /*1.loop循环 语法: 声明循环变量 loop 判断循环条件 ,如果循环条件不成立,跳出循if 条件表达式 then exit; end if; 语句块; 改变循环 ...

  2. 第09讲:Flink 状态与容错

    Flink系列文章 第01讲:Flink 的应用场景和架构模型 第02讲:Flink 入门程序 WordCount 和 SQL 实现 第03讲:Flink 的编程模型与其他框架比较 第04讲:Flin ...

  3. jdk、jre、javase、javaee、javame的区别

    Jdk定义 JAVA的开发工具包,包含jre,可以进行编译和运行Java程序. Jre定义 JAVA的运行环境,如果不需要进行编译程序,则可只安装jre. Javase定义 标准版Java SE(Ja ...

  4. 自定义ASP.NET MVC Html标签辅助方法

    原文:https://blog.csdn.net/a497785609/article/details/50184779 在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性 ...

  5. JDBC工具包commons-dbutils的基本介绍

    感谢原文作者:simonXi-tech 原文链接:https://blog.csdn.net/simonforfuture/article/details/90480147 更多请查阅在线API文档: ...

  6. Embedded Python应用小结

    转载请注明来源:https://www.cnblogs.com/hookjc/ (1)初始化Python脚本运行环境 Py_Initialize(); (2) 脚本的编译 bytecode = Py_ ...

  7. C++实现对Json数据的友好处理

    背景 C/C++客户端需要接收和发送JSON格式的数据到后端以实现通讯和数据交互.C++没有现成的处理JSON格式数据的接口,直接引用第三方库还是避免不了拆解拼接.考虑到此项目将会有大量JSON数据需 ...

  8. 磁盘管理+三剑客之awk

    目录 磁盘管理+三剑客之awk 一.磁盘管理 二.格式化命令awk 1.awk的语法 2.参数 3.awk的生命周期 4.awk中的预定义变量 5.awk处理规则的执行流程 6.awk中的函数 7.a ...

  9. Solution -「ARC 124E」Pass to Next

    \(\mathcal{Description}\)   Link.   有 \(n\) 个人站成一个环,初始时第 \(i\) 个人手里有 \(a_i\) 个球.第 \(i\) 个人可以将自己手中任意数 ...

  10. 聊聊MySQL的加锁规则《死磕MySQL系列 十五》

    大家好,我是咔咔 不期速成,日拱一卒 本期来聊聊MySQL的加锁规则,知道这些规则后可以判断SQL语句的加锁范围,同时也可以写出更好的SQL语句,防止幻读问题的产生,在能力范围内最大程度的提升MySQ ...