讲授LDA基本思想,寻找最佳投影矩阵,PCA与LDA的比较,LDA的实际应用

前边讲的数据降维算法PCA、流行学习都是无监督学习,计算过程中没有利用样本的标签值。对于分类问题,我们要达到的目标是提取或计算出来的特征对不同的类有很好的区分度,由于没有用样本的标签值,会导致一个问题,不同的两类样本,如A和B类投影之后交杂在一起无法区分开来,所以这种投影结果对于分类是不利的。线性判别分析LDA是以分类为目的的降维投影技术,把向量X变换为Y,Y的维数更低 ,Y要对分类比较有利能把不同的类有效的区分开来。

大纲:

LDA的思想
寻找最佳投影方向
推广到高维
与PCA的比较
实验环节
实际应用

LDA的思想:

主成分分析,流形降维算法都是无监督学习,整个计算过程中没有利用样本标签值,它们投影的结果对分类未必有利
能不能有一种算法,对数据投影之后,能够更便于分类?
分类要达成的目标:
区分不同的类,同一类的样本特征要尽量相似,不同类之间要尽可能不同,线性判别分析就是达成这种目标的一种线性算法。
目标最直观的表达是,最大化类间差异,最小化类内差异,数学的语言来表达就是方差比较小,使同类样本投影后聚集在一起,不同类样本离得尽可能远。

一维映射y=wTx:

寻找最佳投影方向:

问题的关键是如何得到最佳投影矩阵。

同PCA一样,首先考虑映射到一维的情况,然后考虑映射到高维的情况。

①一维的情况:
整个样本集xi,n个样本,分属两个类,分别是类C1、样本集D1、样本集个数n1,类C2、样本集D2、样本集个数n2,像一维空间投影y=wTx(w矩阵这里为一维向量),投影后得到两组标量Y1、Y2。

类间差异用两个类的均值之差来衡量-类间散布
类内差异用方差来衡量-类内散布

定义变量:

投影之前均值向量:

投影之后的均值向量:

投影之后的类间散布:

类内散布:,是方差的n倍

总类内散布:

则优化目标为:,类间散布绝对值不好算这里用平方代替,优化目标就是最大化类间散布和最小化类内散布,即分子最大化分母最小化,也可以用分子减去分母来表示误差但是效果没有相除好。

定义两个矩阵来简化以上问题表述:

类内散布矩阵:

类间散布矩阵:

那么,优化目标就变为:

显然优化目标有冗余,即w是最优解、kw也会是最优解,即最优解不唯一。为了消掉冗余,简化问题表述,加上一个约束条件:wTSww=1,把分母干掉了,优化分子就行了。

优化的目标变为:max wTSBw,wTSww=1。带等式的约束怎么求解呢?用拉格朗日乘子法来求解。

构造拉格朗日乘子L = wTSBw + λ(wTSww - 1),然后对w和λ求导:

对w求导:SBw+λSww=0,即Sw-1SBw=λw(如果总类内散布矩阵可逆的话,λ是否加负号无所谓它只是一个常数),问题又转换为求一个矩阵的特征值和特征向量问题,即Sw-1SB矩阵最大特征值对应的特征向量就是最佳投影方向。由于SB是一个列向量与行向量的乘积,所以它的秩小于等于一,所以Sw-1SB矩阵的秩小于等于一,它的特征值要么全为0要么有一个非零,即目标是取不为0的唯一的最大特征值对应的特征向量就是最佳投影方向。

②高维的情况:同PCA一样推广到高维,同理定义类内散布矩阵、类间散布矩阵

类内散布矩阵:

类间散布矩阵:

优化目标:

同样的优化目标也是有冗余的,加上约束条件WTSWW=I,化简得到,最终求解得到W矩阵(这里是W矩阵而非一维向量,m×n,m<n),投影,将n维向量x投影到m维。

LDA与PCA的比较:

两者有一定的相似性,归根到底都是求解矩阵的特征值和特征向量,而且它们推导过程中都用到了拉格朗日乘数法,导致最优解就是矩阵的特征值和特征向量。而且它们两个构造模型过程中都用到了散布矩阵的概念,只不过PCA它没有带类别标签它没有类间散布矩阵和类内散布矩阵一说,而LDA是分开了两个矩阵分别是类间散布矩阵和类内散布矩阵。

它们两个的本质不同是,LDA是有监督学习,而PCA是无监督学习算法;它们投影的目标是不一样的,LDA投影目标是最大化类间差异、最小化类内差异,PCA是最小化重构误差。LDA本身只是一种降维投影技术,x——>y,不能用来分类,后面如果想分类的话可以用别的分类器,如KNN、贝叶斯分类器等,此时分类的效果会更好一些,因为LDA它已经让类更好区分了。

LDA可能面临的一个主要问题是,类内散布矩阵可能不可逆的,这是LDA是失效的。

实验环节:

可以看出LDA是线性分类器。

实际应用:

流形学习虽然看上去很美,但实际应用的并不多,而PCA和LDA是被大规模使用的。

LDA可以用来做分类(非直接做分类),可以用LDA做一个投影之后+一个分类器联合起来做一个分类任务。

PCA和LDA一个最经典的应用是在人脸识别方面的使用,

[1] Matthew Turk,Alex Pentland. Eigenfaces for recognition. Journal of Cognitive Neuroscience, 1991.特征脸算法
[2] Peter N Belhumeur J P Hespanha David Kriegman. Eigenfaces vs. Fisherfaces: recognition using class specific linear projection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1997.
它们两个可以结合起来使用,先用PCA,再用LDA,这些算法代表了最早的一批经典的人脸识别算法:子空间算法,把人脸图像投影到d维空间做分类。投影矩阵每一行代表一个脸的特征叫做一个特征脸,LDA会面临矩阵不可逆,所以可以先用PCA降维的低维空间再用LDA继续降维然后再用KNN或其他分类器进行分类。

本集总结:

LDA的基本思想。

投影到1维、高维,构造散布矩阵求特征值、特征向量。

LDA与PCA的不同,PCA和流形学习都是无监督的数据降维算法,没有用到样本标签。

实际应用的介绍,人脸识别里边的子空间算法,可以用PCA降维+分类器进行分类,也可以用LDA降维+分类器进行分类,还可以用PCA+LDA+分类器进行分类。

SIGAI机器学习第十集 线性判别分析的更多相关文章

  1. SIGAI机器学习第二十集 AdaBoost算法1

    讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用 AdaBo ...

  2. SIGAI机器学习第七集 k近邻算法

    讲授K近邻思想,kNN的预测算法,距离函数,距离度量学习,kNN算法的实际应用. KNN是有监督机器学习算法,K-means是一个聚类算法,都依赖于距离函数.没有训练过程,只有预测过程. 大纲: k近 ...

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

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

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

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

  5. SIGAI机器学习第十九集 随机森林

    讲授集成学习的概念,Bootstrap抽样,Bagging算法,随机森林的原理,训练算法,包外误差,计算变量的重要性,实际应用 大纲: 集成学习简介 Boostrap抽样 Bagging算法 随机森林 ...

  6. SIGAI机器学习第十六集 支持向量机3

    讲授线性分类器,分类间隔,线性可分的支持向量机原问题与对偶问题,线性不可分的支持向量机原问题与对偶问题,核映射与核函数,多分类问题,libsvm的使用,实际应用 大纲: 多分类问题libsvm简介实验 ...

  7. SIGAI机器学习第十四集 支持向量机1

    讲授线性分类器,分类间隔,线性可分的支持向量机原问题与对偶问题,线性不可分的支持向量机原问题与对偶问题,核映射与核函数,多分类问题,libsvm的使用,实际应用 大纲: 支持向量机简介线性分类器分类间 ...

  8. SIGAI机器学习第十八集 线性模型2

    之前讲过SVM,是通过最大化间隔导出的一套方法,现在从另外一个角度来定义SVM,来介绍整个线性SVM的家族. 大纲: 线性支持向量机简介L2正则化L1-loss SVC原问题L2正则化L2-loss ...

  9. SIGAI机器学习第二十四集 聚类算法1

    讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用. 大纲: 聚类问题简介聚类算法的分类层次聚类算法 ...

随机推荐

  1. 数位dp踩坑

    前言 数位DP是什么?以前总觉得这个概念很高大上,最近闲的没事,学了一下发现确实挺神奇的. 从一道简单题说起 hdu 2089 "不要62" 一个数字,如果包含'4'或者'62', ...

  2. java类的访问修饰符

    1.java中外部类的访问修饰符有如下四种: public,默认,abstract,final // public,默认,abstract,final. public class Test1 {} c ...

  3. NIPS 2018 | 程序翻译新突破:UC伯克利提出树到树的程序翻译神经网络

    NIPS 2018 | 程序翻译新突破:UC伯克利提出树到树的程序翻译神经网络 机器之心 ​ 已认证的官方帐号 49 人赞同了该文章 选自arXiv,作者:Xinyun Chen.Chang Liu. ...

  4. 解决IIS出现“由于权限不足而无法读取配置文件”的问题

    在部署IIS项目的时候,今天突然遇到了如下问题: HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效 详细错误信息: 由于权限 ...

  5. (三)引用中央仓库中不存在的jar包

    有些jar包有版权oracle.sqlserver等,所以在maven的中央仓库是不提供下载引用的,但是这个jar包我们可以在别的地方下载到电脑,这是我们需要收工安装到本地仓库,然后再引用 A:手工安 ...

  6. C#通过重载构造函数传递参数、实现两个窗体下的方法的互相调用

    直接切入主题 有时候同一个项目下我们可能会使用多个窗体,窗体间方法互相调用也不可避免,好了,使用无参无返回值的方法,开始上图 1.新建一个winform项目Form1,并再添加一个窗体Form2:拖入 ...

  7. ZROI17普及23-A.如烟题解--技巧枚举

    题目链接 因版权原因不予提供 分析 别看这是普及模拟赛,其实基本上是提高难度...像这题做NOIpT1的话也说的过去 有个很显然的暴力思路就是枚举c,a,b,时间复杂度\(O(N^3)\), 然后正解 ...

  8. js基本对象

    1.介绍js的基本数据类型 Undefined.Null.Boolean.Number.String 2.js有哪些内置对象? 数据封装类对象:Object.Array.Boolean.Number ...

  9. js之split拆分字符串

    js之split拆分字符串 1.单字符拆分 let arr = str.split(',') 2.多字符拆分 let arr = str.split(/[(),]/)

  10. 【Hibernate】一级缓存

    一.概述 二.证明Hibernate的一级缓存的存在 三.一级缓存中快照区 四.管理一级缓存 五.Hibernate一级缓存的刷出时机 六.操作持久化对象的方法 一.概述 什么是缓存: 缓存将数据库/ ...