ML_Review_PCA(Ch4)
Note sth about PCA(Principal Component Analysis)
ML6月20日就要考试了,准备日更博客,来记录复习一下这次ML课所学习的一些方法。
博客是在参考老师的ppt,以及戳这里,学习播客之后完成的,主要运用ppt的公式,因为博客公式自己链过去就可以看了(;_;)。
看学习博客的时候,发现它内附了另一篇作者自己的文章,和我微信公众号看到的几乎一模一样。???可是作者不是同一个人
动机:
PCA的中文名字——主成分分析。顾名思义,是分析主成分的,何为主成分?那是一个事物组成部分里面为主的成分,至少从我的角度来说开始离题,我区分PCA和LDA(之后会更)的方法就是如此。PCA本身不能做分类(当然可以拿它降维完的特征再进一步进行分类),而LDA最直观的直接分类就是在两类的时候,LDA转换完的特征值可以直接分类(一正一负)。离题结束PCA能的最主要的事情大概就是降维了,这也就是PCA的动机。
PCA算法:
首先,需要明确的是,PCA是根据方差来降维的,假设我们有个N维的向量,我们想降维到k维(k<=N),那么我们应该如何操作?降维至k,其实就是拿k个轴去表示目前的N维特征,显然不一定能够完全表示,但是丢失少量的信息是我们完全可以接受的(参考Subsampling)。那我们是不是第一次应该求出方差最大的轴,那第二次呢?我们应该求出方差次次大的轴!没错,但是约束条件是,第二次的轴必须和第一次的正交(参考XOY坐标系),那么第三个其实就是在垂直前两个轴所组成平面的平面上,方差最大的轴。显然,操作k次之后便得到了k个特征。这里有一种直观感受——如果样本是二维的,并且空间分布为一个椭圆,那么第一次的轴就是实轴,如果还要求第二次的话就是虚轴。
其次,考虑一下方差,方差其实是一维特征的东西,推到高维,计算的应该是协方差。思考一下,互不相关的轴、从大到小的(协)方差。是否可以求出样本的协方差矩阵,最后求得这个矩阵的特征值与特征向量,然后取k个,就是所求答案?答案是肯定的。
算法公式概述:
$$ X \in R^{N * m} $$
$$ \overline{x} = \frac{1}{m} \sum_{i=1}^{m} x_i $$
$$ \Sigma = \frac{1}{m} \sum_{i=1}^{m} (x_i-\overline{x})(x_i-\overline{x})^T $$
$ {\lambda_i, \mu_i} $ the top k principle components(eigenvalue, eigenvector) and i = 1,2,......,k
问题:
我们不难发现,将N维特征降至k维的方法很好,但也有一个很容易考虑到的问题,k是多少?显然,k越大,我们提取的特征就越接近原来的样本,可是这样就失去了降维的意义;而如果k过小,这样一来我们抓住了重点,可却也只抓住了重点,如果大家在重点上都表现得很好,那么又失去了区分度(类似于考试重点题,大家都会做)。于是乎我看到了老师与博客的不同,先说博客的:试,调节一个阈值去尝试然后评估,最后确定k之。显然可行,也非常符合我的考虑。但是我瞄到了老师的处理方法,发现老师运用了一个很寻常,但是式子很好看的方法——拉格朗日乘子法。为什么可以用拉格朗日乘子法?其实这需要将问题做一些转化,描述如下。
用拉格朗日乘子法解决找k的问题:
$$ x \in R^N $$
$$ X = [x_1,x_2,......,x_m] \in R^{N * m} $$
$$ U = (\mu_1,\mu_2,......,\mu_n) \in R^{N * N} $$
$$ y = Ux $$
$$ x = U^Ty = \sum_{i=1}^{N} \mu_i y_i $$
$$ \widehat{x} = \sum_{i=1}^{M} \mu_i y_i, (M \leq N) $$
$$ \epsilon = E{ || x - \widehat{x} ||^2 } = \frac{1}{m} \sum_{j=1}^{m} || x_j - \widehat{x_j} || $$
GOAL:
$$ arg min \epsilon^2, s.t U^T U = I_N $$
从这里我们可以看出,我们得到了一个优化目标argmin也得到了一个约束条件s.t,那么接下来就是拉格朗日乘子法的过程了。将$\epsilon$展开会发现,$\epsilon^2 = \sum_{i=M+1}^{N} \mu_i^T\Sigma\mu_i$,之后结合约束以及拉格朗日乘子法的过程,我们得到:$$ L = \epsilon^2 - \sum_{i=M+1}^{N} \lambda_i(\mu_i^T\mu_i-1) $$
之后用L对$\mu$求偏导,得到:$ \frac{\partial L}{\partial\mu_i} = [2\Sigma\mu_i-2\lambda_i\mu_i] = 0 $
现在形式就非常明显了——$ \Sigma\mu_i = \lambda\mu_i $,解出特征值,特征向量就结束了。
其实,PCA在我看来说白了就是一句话:在方差最大的方向上(信号学相信样本是方差大的,而噪声是方差小的为什么???),选择一根轴,使得样本到轴的投影距离之和最小。
ML_Review_PCA(Ch4)的更多相关文章
- Mongodb Manual阅读笔记:CH4 管理
4 管理 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...
- 《代码整洁之道》ch1~ch4读书笔记 PB16110698 (~3.8 第一周)
<代码整洁之道>ch1~ch4读书笔记 <clean code>正如其书名所言,是一本关于整洁代码规范的“教科书”.作者在书中通过实例阐述了整洁代码带来的种种利处以及混乱代码 ...
- 《图解机器学习-杉山将著》读书笔记---CH4
CH4 带有约束条件的最小二乘法 重点提炼 提出带有约束条件的最小二乘学习法的缘故: 左图中可见:一般的最小二乘学习法有个缺点----对于包含噪声的学习过程经常会过拟合 右图:有了空间约束之后,学 ...
- 计算机体系结构——CH4 输入输出系统
计算机体系结构--CH4 输入输出系统 右键点击查看图像,查看清晰图像 X-mind 计算机体系结构--CH4 输入输出系统 输入输出原理 特点 实时性 与设备无关性 异步性 输入输出系统的组织方式 ...
- [Ocean Modelling for Begineers] Ch4. Long Waves in a Channel
Ch4. Long Waves in a Channel 简介 本章主要介绍明渠中分层流体模拟.练习包括浅水表面波,风暴潮.内波和分层流体模拟. 4.1 有限差分法详细介绍 4.1.1 泰勒公式 4. ...
- SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件
4.数据库连接组件 访问数据库有多种不同的技术,包括ADO,ODBC,OLEDB,ADO.NET等这些都有一些共性.首先要建立连接(Connection),然后通过命令(Command)对数据库进行访 ...
- ch4 MySQL 安全管理
第 4 章 MySQL 安全管理 前言 对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的有些商业数据,可能数据就是公司的根本,失去了数据的安全性,可能就是失去了公司 ...
- 【FSFA 读书笔记】Ch4 Volume Analysis & Cr 5 PC-based Partitions
Volume Analysis 1. “卷”可以理解为从逻辑上对物理存储设备的重新编制,便于操作系统管理. (A volume is a collection of addressable secto ...
- C++ Primer 5 CH4 表达式
4.1 基础 函数调用也是一种特殊的运算符,它对运算对象的数量没有限制. C++ 的表达式要么是左值,要么是右值.左值可以位于赋值语句的左边,右值则不可以. 当一个对象被用作右值的时候,用的是对象的值 ...
随机推荐
- Eclipse-错误集
1.The origin server did not find a current representation for the target resource or is not willing ...
- flask之蓝图BulePrint使用
之前flask启用程序代码和逻辑代码都是在一个页面,这样代码多了很自然不利于关于,如果要将逻辑代码和进行分离,这里需要用到Falsk的蓝图(Blueprint) 项目结构 app文件夹为项目最外层文件 ...
- 铰链joints
Fixed Joint原理像阶层里的父子结构.关节会将对象锁在一个世界坐标或者锁在一个连接的刚体. 固定关节可以设定断裂力道(Break Farce)和断裂扭力(Break torque),破坏关节所 ...
- Centos7.6进入挂载硬盘后,进入应急模式(emergency mode)而非图形模式解决方法
Centos7.6进入挂载硬盘后,进入应急模式(emergency mode)而非图形模式解决方法 话说某天我想在centos7.6中挂载个硬盘,结果刚在虚拟机中添加了一块硬盘,再次打开系统时,居然就 ...
- RestFramework之权限组件
一.权限组件的使用 1.首先需要导入包 from rest_framework.permissions import BasePermission 2.编写权限类 class VipPermissio ...
- RestFramework之认证组件
一.认证组件的介绍 对于认证,我们一般有三种方式,即cookie, session,token, cookie,是将信息存放在客户端(浏览器上),信息不安全: session,把信息放在服务器数据库中 ...
- DNS服务——域名解析委派
域名解析委派 域名解析委派和DNS域名解析递归查询很像,举个例子解释域名解析委派 ①假设在.net域名下有台计算机想要访问www.cac.com. ②.net这台DNS服务器不知道www.cac.co ...
- Django drf: 跨域机制
一.同源策略 二.CORS(跨域资源共享)简介 三.CORS基本流程 四.CORS两种请求流程 五.Django项目中支持CORS 一.同源策略 同源策略是一种约定,它是浏览器最核心的最基本的安全功能 ...
- jFinal的小知识点总结
sql批处理 // 批处理sql List<String> sqlList = new ArrayList<String>(); sqlList.add("delet ...
- Lua 学习之基础篇一<Lua 运算符>
引言 由于刚接触lua,个人觉得接触一门新语言,就要一定要对基础的部分做一个快速了解. 于是参考网上相关资料吸收并整理下来作为笔记,模糊的时候用来回顾一下. 这些部分基本都是经过自己手动测试梳理过,没 ...