Principal component analysis(PCA)

中文就是主成成分分析。在学数学建模的时候将这分为了评价类的方法(我实在是很难看出来,在机器学习中是属于无监督学习降维方法的一种线性降维方法。

举一个最简单的栗子(下图,二维的数据降到一维,就得找到一条直线将所有的点都投影到该直线上,这条直线需要满足的条件就是投影在这条直线上的所有点的方差最大,减少信息的损失。



PCA主要用于当数据的维度过高或者不同维度的数据之间存在相关的关系,造成了机器学习性能的下降的问题。这个时候PCA就是要将高维特征转化为独立性较高的低维特征,降低特征之间的相关性。

Math of warning!

\(X_{nxm}\):n维特征的数据,\(Z_{kxm}\):k维特征的数据,PCA技术就是要找到一组\(W_{kxn}\)使得\(Z=W\cdot X\),同时\(Maximize(\sum_i^kVar(Z_i))\),\(Z_i\)表示第i-D下的投影。

  • 第一步 将X降到\(Z_1,Z_2\)上

    \(Z_1=W_1\cdot X\)

    \(Var(Z_1)=\frac{1}{m}\sum_{j=1}^m(Z_{1j}-\overline{Z_1})^2\),\(|W_1|=1\)投影但是不影响大小

    \(Z_2=W_2\cdot X\)

    \(Var(Z_2)=\frac{1}{m}\sum_{j=1}^m(Z_{2j}-\overline{Z_2})^2\),\(|W_2|=1\)投影但是不影响大小,但是为了是方差最大或者说使特征之间的相关性最低,\(W_1\cdot W_2=0\)

    PS:如果不加这个条件的话\(W_1==W_2\)

  • 第二步 求解\(Var(Z_1),Var(Z_2)\)



    PS:注意这里加\(\cdot\)是向量积,不加的是矩阵乘法(坑

  • \(Z_{1j}=W_1\cdot X_j,\overline{Z_1}=\frac{1}{m}\sum_{j=1}^mZ_{1j}=\frac{1}{m}\sum_{j=1}^mW_1\cdot X_j=W_1\cdot \overline{X_j}\)

  • \(Var(Z_1)=\frac{1}{m}\sum_{j=1}^m(W_1\cdot X_j-W_1\cdot \overline{X_j})^2=\frac{1}{m}\sum_{j=1}^m[W_1\cdot (X_j-\overline{X_j})]^2=W_1^T[\frac{1}{m}\sum_{j=1}^m(X_j-\overline{X_j})(X_j-\overline{X_j})^T]W_1=W_1^TCov(X)W_1=W_1^TSW_1,S=Cov(X)\)

  • 接下来是最大化\(Var(Z_1)\),存在Constraint:\(|W_1|=1,W_1.TW_1-1=0\),利用拉格朗日算子法

    \(g(W_1)=W_1^TSW_1-\alpha(W_1.TW_1-1)\)

    \(\forall i<=m, \frac{\partial g(W_1)}{\partial W_{1i}}=0\rightarrow SW_1-\alpha W_1=0\) 可知\(W_1\)是S的特征向量,\(\alpha\)是S的特征值

    \(Var(Z_1)=W_1^TSW_1=W_1^T\alpha W_1=\alpha W_1^TW_1=\alpha\),要是方差最大则\(\alpha\)是S的最大特征值,\(W_1\)为所对应的特征向量。

  • 按照相同的思路来最大化\(Var(Z_2)\),存在constraints:\(W_2^TW_2-1=0,W_1^TW_2=0\)

    \(g(W_2)=W_2^TSW_2-\alpha(W_2^TW_2-1)-\beta(W_2^TW_1)\)

    \(\forall i<=m, \frac{\partial g(W_2)}{\partial W_{2i}}=0\)

    \(\rightarrow SW_2-\alpha W_2-\beta W_1=0 \rightarrow W_1^TSW_2-\alpha W_1^TW_2-\beta W_1^TW_1=0\)

    \(\rightarrow \beta=W_1^TSW_2=(W_1^TSW_2)^T=W_2^TSW_1=W_2^T\lambda W_1=\lambda W_2^TW_1=0\)

    因为\(\beta=0\)所以\(SW_2=\alpha W_2\),同理可知\(W_1\)是S的特征向量,\(\alpha\)是S的特征值

    \(Var(Z_2)=W_2^TSW_2=\alpha\),要想方差最大且满足约束条件(隐含条件S是Symmetric的,特征向量是正交的),则\(\alpha\)是第二大的特征值且\(W_2\)是对应的特征向量。

  • 第三步 得出结论

    降至不同空间维度上保存的信息量的大小是降维所用S的特征向量所对应的特征值的大小决定的

Conclusions

1、因为S一定是实对称矩阵,则经过对S的奇异值分解以后\(S=Q\sum Q^T\),\(\sum\)是一个对角线为S的特征值的矩阵,Q是特征值对应的特征列向量矩阵,从Q中抽取特征值最大的对应的特征列向量就可以进行降维,并且通过特征值算出简单的信息损失情况。

  1. import numpy as np
  2. U,S,V=np.linalg.svd(S)

人生此处,绝对乐观

PCA技术的自我理解(催眠的更多相关文章

  1. 降维PCA技术

    降维技术使得数据变得更易使用,并且它们往往能够去除数据中的噪声,使得机器学习任务往往更加精确. 降维往往作为预处理步骤,在数据应用到其它算法之前清洗数据.有很多技术可以用于数据降维,在这些技术中,独立 ...

  2. Thread线程join方法自我理解

    Thread线程join方法自我理解 thread.join():等待thread线程运行终止,指的是main-thread(main线程)必须等待thread线程运行结束,才能继续thread.jo ...

  3. 《Python爬虫技术:深入理解原理、技术与开发》已经出版,送Python基础视频课程

    好消息,<Python爬虫技术:深入理解原理.技术与开发>已经出版!!!   JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送Python基础视频课程!J ...

  4. gslb(global server load balance)技术的一点理解

    gslb(global server load balance)技术的一点理解 前言 对于比较大的互联网公司来说,用户可能遍及海内外,此时,为了提升用户体验,公司一般会在离用户较近的地方建立机房,来服 ...

  5. SPP空间金字塔池化技术的直观理解

    空间金字塔池化技术, 厉害之处,在于使得我们构建的网络,可以输入任意大小的图片,不需要经过裁剪缩放等操作. 是后续许多金字塔技术(psp,aspp等)的起源,主要的目的都是为了获取场景语境信息,获取上 ...

  6. 【转】浅谈对主成分分析(PCA)算法的理解

    以前对PCA算法有过一段时间的研究,但没整理成文章,最近项目又打算用到PCA算法,故趁热打铁整理下PCA算法的知识.本文观点旨在抛砖引玉,不是权威,更不能尽信,只是本人的一点体会. 主成分分析(PCA ...

  7. 关于PCA主成分分析的一点理解

    PCA 即主成分分析技术,旨在利用降维的思想,把多指标转化为少数几个综合指标. 假设目前我们的数据特征为3,即数据维度为三,现在我们想将数据降维为二维,一维: 我们之前的数据其实就是三维空间中的一个个 ...

  8. 关于C#的委托(delegate)的自我理解

    首先描述一个事情,一个老师饿了,他要去买东西填饱肚子,然后他发现他的学生“小李”在玩,没学习,于是就委托“小李”去帮他买吃的. 根据这件事我们来分析: 首先得有个老师(老师饿了是他的方法,老师买东西也 ...

  9. android 的生命周期自我理解

    android的active的生命周期,经过网站的blog学习,加上自己的理解总结如下: 第1种:全新的启动应用程序顺序 onCreate--->onStart---->onResume ...

随机推荐

  1. 第一次看CCControl

    Control中有九种可能的事件,定义在.h文件中,另外还定义四种状态,用来表示控件高亮等. 在初始化控件的时候: bool Control::init() { if (Layer::init()) ...

  2. $CH0601\ Genius\ ACM$ 倍增优化DP

    ACWing Description 给定一个长度为N的数列A以及一个整数T.我们要把A分成若干段,使得每一段的'校验值'都不超过N.求最少需要分成几段. Sol 首先是校验值的求法: 要使得'每对数 ...

  3. Java迭代器源码解析

    private class Itr implements Iterator<E> { int cursor; // 调用next方法返回的元素的索引 int lastRet = -1; / ...

  4. k8s(1.14.0)+etcd(3.3.10)+flanneld(0.10)

    K8s(1.14) 几张比较不错的图 1.kubernetes 组件图 kubernetes 架构图 2.kubernetes 网络架构图 数据从源容器中发出后,经由所在主机的docker0虚拟网卡转 ...

  5. 从N个元素中抽取K个不重复元素(抽奖问题)

    核心就是 把N数组抽中的元素给K数组 把N数组最后一位给N数组被抽走的那一位(这时候N数组最后一位元素和被抽走的那位元素值相等) 把N数组长度减一,去除最后一位

  6. C#事件(Event): 发布符合 .NET Framework Guidelines 的事件

    本文翻译整理自:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/events/how-to-publish-event ...

  7. cometoj 茶颜悦色|扫描线+懒惰标记

    传送门 题目描述 茶颜悦色也太好喝了!鸡尾酒在长沙的各种茶颜悦色的店铺中流连忘返.他发现长沙有炒鸡多的茶颜悦色店,走两步就能遇到一家. “方圆一公里能有十家茶颜悦色!”鸡尾酒感叹了起来. 于是他想到了 ...

  8. OpenStack Identity API v3 (CURRENT)

    Table Of Contents Identity API v3 (CURRENT) Authentication and token management Password authenticat ...

  9. 重拾c++第三天(5):循环和关系表达式

    1.改变步长 ;i<;i=i+) 2.*与++优先级相同,从右向左 3.strcmp函数比较两个字符串,=0两个相同,><0 ----> str1><str2 4. ...

  10. Vue中echarts的基本用法

    前言:同大多数的前端框架一样,先读官网的使用方法.学会基本使用后,在实例中找到自己想要demo.拿过来改一改,一个echarts图表就形成,毕竟人家做就是为了方便使用. 我是在vue中下面直接使用的e ...