主成分分析

  • 线性、非监督、全局的降维算法

PCA最大方差理论

  • 出发点:在信号处理领域,信号具有较大方差,噪声具有较小方差

  • 目标:最大化投影方差,让数据在主投影方向上方差最大

  • PCA的求解方法:

    • 对样本数据进行中心化处理

    • 求样本协方差矩阵

    • 对协方差矩阵进行特征分解,将特征值从大到小排列

    • 取特征值前d大对应的特征向量\(w_1, w_2, \cdots, w_d\),通过以下变换将n维样本映射到d维

      \[x^{'}_i = \begin{bmatrix} w_1^{T}x_i \\ w_2^Tx_i \\ \cdots \\ w_d^Tx_i \end{bmatrix}\]

      新的\(x^{'}_i\) 的第d维就是\(x_i\)在第d个主成分\(w_d\)方向上的投影

  • 局限性:

    • 线性降维
    • 通过核映射对PCA进行扩展得到核主成分分析(KPCA)

PCA最小平方误差理论

  • 出发目标:找到一个d维超平面,使得数据点到这个超平面的距离平方和最小

  • 优化目标:

    \[\begin{aligned} \mathop{\arg\min}_{w_1, \dots, w_d} \sum \limits_{k=1}^{n}||x_k - \tilde{x}_k||_2 \\ s.t. \quad w_i^Tw_j = \begin{cases} 1, i = j \\ 0, i \neq j \end{cases} \end{aligned}\]

    \(\tilde{x}_k\)是投影向量

线性判别分析

二分类

  • 监督降维方法(LDA)

  • PCA算法没有考虑到数据标签,可能会导致映射后无法进行分类

  • 中心思想:最大化类间距离和最小化类内距离

  • 对于二分类

    • 类间散度矩阵:\(S_B = (\mu_1 - \mu_2)(\mu_1 - \mu_2)^T\)

    • 类内散度矩阵:\(S_w = \sum \limits_{x \in C_i}(x - \mu_i)(x - \mu_i)^T\)

    • 优化目标:

      \[J(w) = \frac{w^T S_B w}{w^T S_w w} = \lambda\]

    • \(S_w^{-1}S_Bw = \lambda w\) \(J(w)\)对应了矩阵\(S_w^{-1}S_B\)最大的特征值,而投影方向就是这个特征值对应的特征向量

  • 对数据分布做了强假设:每个类数据都是高斯分布、各个类的协方差相等

  • 优点:线性模型对噪声的鲁棒性比较好

  • 缺点:模型简单也有假设,可以通过引入核函数处理分布较复杂的数据

具有多个类别标签的高维数据LDA方法

  • 计算数据集每个类别的均值\(\mu_j\) 和总体均值\(\mu\)

  • 计算类内散度矩阵\(S_w\) ,全局散度矩阵\(S_t\) ,并得到类间散度矩阵\(S_B = S_t - S_w\)

  • 对\(S_w^{-1}S_B\)矩阵进行特征值分解,将特征值从大到小排列

  • 取特征值前d大对应的特征向量\(w_1, w_2, \cdots, w_d\),通过以下变换将n维样本映射到d维

    \[x^{'}_i = \begin{bmatrix} w_1^{T}x_i \\ w_2^Tx_i \\ \cdots \\ w_d^Tx_i \end{bmatrix}\]

    新的\(x^{'}_i\) 的第d维就是\(x_i\)在第d个主成分\(w_d\)方向上的投影

PCA和LDA的区别与联系

  • 联系:求解过程很类似

  • 区别:

    • 数学原理
    • 优化目标
    • 应用场景:对无监督任务使用PCA降维,对有监督则使用LDA。
      • 从音频中提取语音信号,用PCA过滤掉噪声
      • 声纹识别,用LDA使每个人的声音信号具有区分性

主成分分析(PCA)与线性判别分析(LDA)的更多相关文章

  1. 机器学习 —— 基础整理(四)特征提取之线性方法:主成分分析PCA、独立成分分析ICA、线性判别分析LDA

    本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...

  2. 运用sklearn进行线性判别分析(LDA)代码实现

    基于sklearn的线性判别分析(LDA)代码实现 一.前言及回顾 本文记录使用sklearn库实现有监督的数据降维技术——线性判别分析(LDA).在上一篇LDA线性判别分析原理及python应用(葡 ...

  3. 机器学习理论基础学习3.2--- Linear classification 线性分类之线性判别分析(LDA)

    在学习LDA之前,有必要将其自然语言处理领域的LDA区别开来,在自然语言处理领域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),是一种处理文档的主题 ...

  4. 线性判别分析LDA原理总结

    在主成分分析(PCA)原理总结中,我们对降维算法PCA做了总结.这里我们就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)做一个总结. ...

  5. 线性判别分析LDA详解

    1 Linear Discriminant Analysis    相较于FLD(Fisher Linear Decriminant),LDA假设:1.样本数据服从正态分布,2.各类得协方差相等.虽然 ...

  6. 机器学习中的数学-线性判别分析(LDA)

    前言在之前的一篇博客机器学习中的数学(7)——PCA的数学原理中深入讲解了,PCA的数学原理.谈到PCA就不得不谈LDA,他们就像是一对孪生兄弟,总是被人们放在一起学习,比较.这这篇博客中我们就来谈谈 ...

  7. 线性判别分析 LDA

    点到判决面的距离 点\(x_0\)到决策面\(g(x)= w^Tx+w_0\)的距离:\(r={g(x)\over \|w\|}\) 广义线性判别函数 因任何非线性函数都可以通过级数展开转化为多项式函 ...

  8. PCA主成分分析 ICA独立成分分析 LDA线性判别分析 SVD性质

    机器学习(8) -- 降维 核心思想:将数据沿方差最大方向投影,数据更易于区分 简而言之:PCA算法其表现形式是降维,同时也是一种特征融合算法. 对于正交属性空间(对2维空间即为直角坐标系)中的样本点 ...

  9. LDA线性判别分析(转)

    线性判别分析LDA详解 1 Linear Discriminant Analysis    相较于FLD(Fisher Linear Decriminant),LDA假设:1.样本数据服从正态分布,2 ...

随机推荐

  1. PHP mysqli_connect() 函数

    打开一个到 MySQL 服务器的新的连接: mysqli_connect(host,username,password,dbname,port,socket); <?php $con=mysql ...

  2. 牛客练习赛53 (E 老瞎眼 pk 小鲜肉) 线段树+离线

    考试的时候切的,类似HH的项链~ code: #include <bits/stdc++.h> #define ll long long #define M 500003 #define ...

  3. python3.5+win7 安装 numpy 和scipy的总结

    1.安装numpy.      官网下载numpy.下载地址为https://pypi.Python.org/pypi/numpy.选择与Python版本相对应的numpy版本.之后在python35 ...

  4. 【概率论】1-1:概率定义(Definition of Probability)

    title: [概率论]1-1:概率定义(Definition of Probability) categories: Mathematic Probability keywords: Sample ...

  5. 网络1911、1912 C语言第4次作业--函数批改总结

    目录 网络1911.1912 C语言第4次作业--函数批改总结 一.评分规则 二.本次作业亮点 三.本次作业存在的问题 四.助教有话说 五.得分详情 网络1911.1912 C语言第4次作业--函数批 ...

  6. Java三大特征--多态

    1.定义 允许不同类的对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式. 2.存在条件 2.1存在继承关系 2.2子类重写了父类方法 2.3父类类型的变量指向子类对象的 ...

  7. JIRA恢复备份后无法上传附件

    1.在恢复JIRA 备份数据和附件后,上传附件失败,这一般是恢复附件时没有修改附件的拥有者和组 创建JIRA平台,会自动创建一个服务器的账户,如果是服务器第一次部署JIRA那么账户肯定是jira,如果 ...

  8. CF1208D

    CF1208D 题意: 给你一个数组,要求支持单点修改和单点查询 解法: 直接线段树搞一搞就没了. CODE: #include<iostream> #include<cstdio& ...

  9. 交互式绘图工具gunplot

    Gnuplot是一个命令行的交互式绘图工具(command-driven interactive function plotting program).用户通过输入命令,可以逐步设置或修改绘图环境,并 ...

  10. Flask 静态文件缓存问题

    大家好,今天才发现很多学习Flask的小伙伴都有这么一个问题,清理缓存好麻烦啊,今天就教大家怎么解决. 大家在使用Flask静态文件的时候,每次更新,发现CSS或是Js或者其他的文件不会更新. 这是因 ...