博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线性判别分析(Linear Discriminant Analysis,LDA) 简单分析
阅读量:4089 次
发布时间:2019-05-25

本文共 1853 字,大约阅读时间需要 6 分钟。

LDA全称Linear Discriminant Analysis,类似PCA,是一种降维方法,但是其目标不同于PCA保留最多的数据点信息,而是尽可能使得不同类别样本间的距离大,同类别的样本间距离小。

首先介绍一下LDA到底是什么?LDA是一种降维的方法,一提到降维,大家应该很熟悉PCA。那么PCA和LDA的区别是什么呢?我们简单的理解可以理解为PCA是获取那些数据能量集中的子空间,用《模式分类》中的例子:手写字母识别中,Q和O利用PCA能够发现两个字母的相似之处,却很可能把区分字母Q和O的那撇特征去掉。而LDA却不同,它也是是获取一个子空间,在这个子空间中:同类的数据会集中,不同类的数据则分散开来,所以从这个角度来看LDA更适合于分类的任务。那么上面大家对LDA有了一个整体的了解,下面我开始讲解LDA,这里会参照《模式分类》这本书,不过会穿插我的理解,方便大家一步步跟进,那么我们开始。

 

假设我们有n个d维度的样本:x1,x2,....xn,他们分别属于两个不同的类别,即其中大小为那n1的样本属于类别1,大小为n2 的样本属于类别2【假设我们只有两大类】.如果对x中的各个成分做线性组合,就会得到一个点积,结果就是一个标量:

 

那么全部的n个样本x1,x2,....xn就产生n个结果y1,y2,....yn。这些结果不是属于类别1就是属于类别2。从几何上说,当||w||=1的时候,那么每个yi就是把xi向着方向w的直线进行投影的结果【为什么这么说,大家可以查一下投影矩阵,看他的公式和意义】。那么根据我们上面讲过的LDA的思想,我们希望w有着以下这种功效:我们希望x经过w的映射后形成两个显著分开的聚类【这句话意味着不同类分散开,同类聚集在一起】。当我们把此LDA用作分类的时候,其实也就是需要两步:1. 确定w 2. 确定一个阀值,当低于阀值属于类别1,当高于阀值属于类别2.

 

那我们首先就来确定最佳的直线方向w,以达到最好的分类效果。以下是思路过程:

 

【PS:请你们自动忽略字体,我用的是草体,这绝不是乱,嗯~】

那么我们继续,把w变量引入:

 

这其实是一个广义特征值分解的问题,使得J最大的w必须满足:

 

我们左乘Sw^-1,得到:

 

 

因为我们只有两类,所以没有必要把Sw^-1*SB的特征值真的分解,SB*W的总是位于m1-m2的方向上,w的模的大小我们并不关心,只关心其方向,所以:

 

以上就是关于LDA在二分类情况下求解w的过程,关于阀值的判断我们不进行讨论。那么下面引入了新的问题:如何处理多分类的情况?

 

最后我把我的实现放在我的git上,并不难,主要是一个公式转代码的思想,这个很重要:

 

 

 LDA算法概述:

线性判别式分析(, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD),是模式识别的经典算法,它是在1996年由Belhumeur引入模式识别和人工智能领域的。性鉴别分析的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。因此,它是一种有效的特征抽取方法。使用这种方法能够使投影后模式样本的类间散布矩阵最大,并且同时类内散布矩阵最小。就是说,它能够保证投影后模式样本在新的空间中有最小的类内距离和最大的类间距离,即模式在该空间中有最佳的可分离性。

线性判别式分析,又称为Fisher线性判别~(Linear discriminant analysis)(Fisher linear discriminant)

最大化类间均值,最小化类内方差

通过调整权重向量组件,可选择一个投影方向,最大化地类别分离性~

两个类的均值向量:

对样本进行投影时,使得类别最简单的分离,是投影的类别均值的分离~

最大化类间均值

   其中约束

 

 

最小化类内方差

,其中

 

Fisher 判别准则:

等价于:

其中:

对权重W求微分,使得J(W)最大化,当:

化简之~

 

参考文献:Pattern recognition and machine learning (Christopher M. Bishop) pp: 186-189

 PDF 版本可以这里下 (推荐浙江大学蔡登教授编写的关于LDA的代码:http://www.cad.zju.edu.cn/home/dengcai/Data/code/LDA.m)

 

 

转载地址:http://tgkii.baihongyu.com/

你可能感兴趣的文章
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
Linux常用统计命令之wc
查看>>
fastcgi_param 详解
查看>>
搞定Java面试中的数据结构问题
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
Winform多线程
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
《计算机网络》第五章 运输层 ——TCP和UDP 可靠传输原理 TCP流量控制 拥塞控制 连接管理
查看>>
《PostgreSQL技术内幕:查询优化深度探索》养成记
查看>>
剑指_复杂链表的复制
查看>>
FTP 常见问题
查看>>
Python学习笔记之数据类型
查看>>
shell 快捷键
查看>>
VIM滚屏操作
查看>>
将file文件内容转成字符串
查看>>
MODULE_DEVICE_TABLE的理解
查看>>
.net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法
查看>>
c# 如何调用win8自带的屏幕键盘(非osk.exe)
查看>>