Linear discriminant analysis (LDA) 线性判别分析也是机器学习中常用的一种降维算法,与 PCA 相比,

LDA 是属于supervised 的一种降维算法。PCA考虑的是整个数据集在高维空间的分散性,PCA降维之后依然要让数据在低维空间尽可能地分散。而LDA考虑的是类与类之间的差别(用距离来衡量)。

我们考虑两类情况下的LDA,

给定一个训练集 D={xi∈Rd},i=1,2,...N, 假设其中有 n1 个属于第一类 c1,n2 个属于第二类c2,N=n1+n2, LDA 希望可以找到一个投影关系,使得原来的特征向量 xi 投影到低维空间之后,类间的距离尽可能地大,而类内距离尽可能地小。

我们可以计算每一类的均值向量:

u1=1n1∑x∈c1xu2=1n2∑x∈c2x

假设投影为 w,投影后为 y, 那么 y=wTx, 我们也可以求出投影后的均值:

v1=1n1∑y∈c1y=1n1∑x∈c1wTx=wTu1
v2=1n2∑y∈c2y=1n2∑x∈c2wTx=wTu2

那么,我们可以设立如下的目标函数:

J=|v1−v2|=|wTu1−wTu2|

上面的目标函数,保证了映射之后类间距离尽可能大,但是无法保证类内距离尽可能小,为了让类内距离尽可能小,我们可以进一步定义:

s21=∑y∈c1(y−v1)2

s22=∑y∈c2(y−v2)2

s21,s22 可以用来度量映射后每一类与类中心的分散程度。所以,最终的目标函数是:

J=|v1−v2|2s21+s22

我们可以定义投影前的向量 x 与类中心的分散程度:

Si=∑x∈ci(x−ui)(x−ui)T

SW=S1+S2

我们可以看到:

s2i=∑y∈ci(y−vi)2=∑x∈ci(wTx−wTui)2=wTSiw
s21+s22=wTSWw

同样的,我们有:

(v1−v2)2=(wTu1−wTu2)2=wT(u1−u2)(u1−u2)Tw=wTSBw
SB=(u1−u2)(u1−u2)T

所以最终的目标函数是:

J(w)=wTSBwwTSWw

最终得到的投影w⋆:

w⋆=argmax[wTSBwwTSWw]=S−1W(u1−u2)

对于多类的LDA, 我们不能简单地将原来的向量 x 投影到一个标量y,我们需要投影到一个低维的向量 y 上。一个有C类的训练集 D={x∈Rd} 含有N 个样本, N=∑ni. 我们需要找到一个投影矩阵W, 使得 y=WTx。

我们可以先定义

Sw=∑i=1cSiSi=∑x∈ci(x−ui)(x−ui)T
SB=∑i=1cNi(ui−u)(ui−u)Tu=1N∑x

那么目标函数可以写成:

J(W)=|WTSBW||WTSWW|

最后的投影矩阵可以表示为: W=[w1,w2,...wk], 其中 wi 满足如下关系:

SBwi=λiSWwi→S−1WSBwi=λiwi

wi 是矩阵 S−1WSB 的特征向量, 所以简单来说,可以先对矩阵 S−1WSB 做特征值分解,然后取前 k 个大的特征值所对应的特征向量,组成投影矩阵。但是由于 S_{B} 的秩不会超过 c−1,所以 k 最大也就是 c−1,取前面k 个特征向量组成投影矩阵。对于两类的情况, c=2, k=1, 所以两类的情况下,LDA投影得到的是一个标量。

机器学习: Linear Discriminant Analysis 线性判别分析的更多相关文章

  1. LDA(Linear discriminate analysis)线性判别分析

    LDA 线性判别分析与Fisher算法完全不同 LDA是基于最小错误贝叶斯决策规则的. 在EMG肌电信号分析中,... 未完待续:.....

  2. 线性判别分析(Linear Discriminant Analysis, LDA)算法分析

    原文来自:http://blog.csdn.net/xiazhaoqiang/article/details/6585537 LDA算法入门 一. LDA算法概述:       线性判别式分析(Lin ...

  3. 线性判别分析(Linear Discriminant Analysis,LDA)

    一.LDA的基本思想 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD) ...

  4. 线性判别分析(Linear Discriminant Analysis, LDA)算法初识

    LDA算法入门 一. LDA算法概述: 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discrimin ...

  5. 机器学习中的数学-线性判别分析(LDA), 主成分分析(PCA)

    转:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-and-pca-machine-learning.html 版权声明: 本文由L ...

  6. Linear Discriminant Analysis Algorithm

    线性判别分析算法. 逻辑回归是一种分类算法,传统上仅限于两类分类问题. 如果有两个以上的类,那么线性判别分析算法是首选的线性分类技术.LDA的表示非常直接.它包括数据的统计属性,为每个类计算.对于单个 ...

  7. Max-Mahalanobis Linear Discriminant Analysis Networks

    目录 概 主要内容 Pang T, Du C, Zhu J, et al. Max-Mahalanobis Linear Discriminant Analysis Networks[C]. inte ...

  8. 线性判别分析(Linear Discriminant Analysis)转载

    1. 问题 之前我们讨论的PCA.ICA也好,对样本数据来言,可以是没有类别标签y的.回想我们做回归时,如果特征太多,那么会产生不相关特征引入.过度拟合等问题.我们可以使用PCA来降维,但PCA没有将 ...

  9. 线性判别分析(Linear Discriminant Analysis)

    1. 问题 之前我们讨论的PCA.ICA也好,对样本数据来言,可以是没有类别标签y的.回想我们做回归时,如果特征太多,那么会产生不相关特征引入.过度拟合等问题.我们可以使用PCA来降维,但PCA没有将 ...

随机推荐

  1. AngularJS:实现动态添加输入控件功能

    功能要求如下:1.    点击加号可以增加输入框.2.    点击减号可以减少输入框.3.    当输入框只有一个的时候,不能再减少输入框.效果图如下:只有一个输入框有多个输入框 要实现这个功能,可以 ...

  2. Basic Vim Configuration

    原文: https://computers.tutsplus.com/tutorials/basic-vim-configuration--cms-21498 原来,vim的配置文件,.vimrc也是 ...

  3. 微信公众平台SDK for node

    实现了下面特性: 1.开启开发人员模式 2.解析微信请求參数 3.验证消息来源 4.被动回复文字消息 5.被动回复图文消息 6.获取access_token 7.创建自己定义菜单 地址:wechat ...

  4. Android MPAndroidCharts 框架 画可滑动查看的直方图

    1.由于公司项目的需求,所以花了1.2天研究 MPAndroidCharts框架 .可是发现好多博客对我都没得帮助.浪费非常多时间在百度上.不得不说google 真是比百度强太多了. 要求:统计出56 ...

  5. 手写JQuery 的框架的实现

    JQuery的好处 快速上手(学习成本低) 开发效率高(选择器.批量操作 DOM.链型操作--) 一系列的封装(动画.ajax) 浏览器兼容(1.x版本 兼容IE6.7.8) JQuery 1.11. ...

  6. ElasticSearchserver操作命令

    在win7环境,进入elasticsearch安装文件夹的bin文件夹: 1. elasticsearch.bat 就能够启动elasticsearch了.执行这个插件的优点是:elasticsear ...

  7. PADS的历史版本

    1986年:PADS PCB,DOS操作系统 1989年:PADS Logic,DOS操作系统 1990年:PADS 2000,DOS操作系统 1993年:PADS Perform,DOS和Windo ...

  8. MyBatis学习(一):简单的运行

    1.准备工作 jar包: mybatis-3.4.4.jar,下载地址:https://github.com/mybatis/ignite-cache/releases mysql-connector ...

  9. PHP debug_backtrace() 函数

    PHP Error 和 Logging 函数 实例 生成 PHP backtrace: <?php function a($txt) { b("Glenn"); } func ...

  10. iOS UILabel文字缩进

    使用NSMutableParagraphStyle实现label文字首尾的缩进 NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphSty ...