线性判别分析(Linear Discriminant Analysis ,简称LDA)是一种经典的线性学习方法,在二分类问题上最早由【Fisher,1936】提出,也称为“Fisher 判别分析”
LDA的思想:给定训练样本例集,设法将例投影在一条直线上,使得同类例的投影点近可能近,异类样例尽可能地远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。如下图所示:

欲使同类例的投影点尽可能近,可以让同类例投影点的协方差尽可能小,而欲使异类样例投影点尽可能远可以让类中心之间的距离尽可能的大,同时考虑可得欲最大化的目标:

定义“类内散度矩阵”

“类间散度矩阵”

则最大化目标可写为:

其中u为数据的均值,这就是LDA欲最大化得目标。

matlab代码如下:

%%%%%%%%%%%%%%%%%%%%%%%%
%LDA线性判别式分析算法
%%%%%%%%%%%%%%%%%%%%%%%
clc;clear;x1=[4,2;2,4;2,3;3,6;4,4];x2=[9,10;6,8;9,5;8,7;10,8];figure(1)
plot(x1(:,1),x1(:,2),'b*');
hold on;
plot(x2(:,1),x2(:,2),'ro');
title('数据分布');u1=mean(x1)';%均值
u2=mean(x2)';%均值
s1=cov(x1);%协方差矩阵
s2=cov(x2);%协方差矩阵
%类内散度矩阵
sw=s1+s2;
%类间散度矩阵
sb=(u1-u2)*(u1-u2)';
invSw=inv(sw);
invSw_by_SB=invSw*sb;
%求最大特征值和特征向量
[V,D]=eig(invSw_by_SB);
[a,b]=max(max(D));
W=V(:,b);
k=W(2)/W(1);
%%%%%%%%训练后的数据
new_x1=x1*W;
new_x2=x2*W;figure(2)
X1=0:0.1:10;
Y1=k.*X1;
plot(x1(:,1),x1(:,2),'b*');
hold on;
plot(x2(:,1),x2(:,2),'ro');
plot(X1,Y1);
%%%画投影
Xt1=(x1(:,1)+k.*x1(:,2))/(k*k+1);
Yt1=k.*Xt1;
Xt2=(x2(:,1)+k.*x2(:,2))/(k*k+1);
Yt2=k.*Xt2;
plot(Xt1,Yt1,'vc');
plot(Xt2,Yt2,'vc');
hold off;
grid on;prediction=[7 3.46];
result=prediction*W;
T=new_x1-result;
T1=new_x2-result;
if(min(abs(T1))>min(abs(T)))disp('1');
elsedisp('2');
end

线性判别分析(Linear Discriminant Analysis ,简称LDA)相关推荐

  1. R语言分类算法之线性判别分析(Linear Discriminant Analysis)

    1.线性判别原理解析 基本思想是"投影",即高纬度空间的点向低纬度空间投影,从而简化问题的处理.在原坐标系下,空间中的点可能很难被分开,如图8-1,当类别Ⅰ和类别Ⅱ中的样本点都投影 ...

  2. 线性判别分析(Linear Discriminant Analysis, LDA)(含类内散度矩阵 类间散度矩阵 全局散度矩阵推导

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

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

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

  4. 西瓜书+实战+吴恩达机器学习(五)监督学习之线性判别分析 Linear Discriminant Analysis

    文章目录 0. 前言 1. 线性判别分析参数求解方法 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 线性判别分析LDA的思想非常朴素:给定数据集,设法将样例投影 ...

  5. 线性判别分析(Linear Dicriminant Analysis)参数推导记录备忘

    线性判别分析(LDA)投影降维的思想,以类内小.类间大(类似于软件工程中高内聚低耦合思想)的目标实现了对数据集进行分类的效果. LDA的原始思想非常简单,在数据集平面(假如二维数据)上,找到一条直线, ...

  6. python判别分析_二次判别分析Quadratic Discriminant Analysis(QDA)

    与线性判别分析类似,二次判别分析是另外一种线性判别分析算法,二者拥有类似的算法特征,区别仅在于:当不同分类样本的协方差矩阵相同时,使用线性判别分析:当不同分类样本的协方差矩阵不同时,则应该使用二次判别 ...

  7. 机器学习算法系列(十)-线性判别分析算法(一)(Linear Discriminant Analysis Algorithm)

    阅读本文需要的背景知识点:拉格朗日乘数法.一丢丢编程知识 一.引言   前面学习了一种用回归的方式来做分类的算法--对数几率回归算法,下面再来学习另一种分类算法--线性判别分析算法1(Linear D ...

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

     线性判别分析(Linear Discriminant Analysis)(一) 1. 问题 之前我们讨论的PCA.ICA也好,对样本数据来言,可以是没有类别标签y的.回想我们做回归时,如果特征太 ...

  9. 邻域线性判别《Neighborhood linear discriminant analysis》

    模式识别与机器学习老师留了作业说是让找一篇线性判别的论文,所以就记录一下论文(<Neighborhood linear discriminant analysis>)吧,虽然只是一些翻译. ...

  10. 机器学习降维算法二:LDA(Linear Discriminant Analysis)

    Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一种有监督的(supervised)线性降维算法.与PCA保持数据信息不同, ...

最新文章

  1. Linux服务配置:Vsftp的基本配置[转]
  2. Unity Game Starter Kit for Windows Store and Windows Phone Store games
  3. 读取文本节点_总结语录|Part1:Dynamo节点介绍
  4. C++中初始化列表的使用
  5. tomcat使用说明
  6. 如何处理Maven build错误 Non-Resolvable parent POM
  7. .NET基础 (03)生成、部署和管理
  8. Java EE6 CDI,命名组件和限定符
  9. 个人材料(上报公司)
  10. 32位JDK和64位JDK
  11. Java中装箱与拆箱
  12. Log4j 入门总结
  13. Spring学习总结(19)——Spring概念详解
  14. 富文本转换字符串 php,php 如何将一个富文本字符串生成word文档?
  15. mac安装gcc10
  16. C++ static、const和static const类型成员变量声明及其初始化
  17. java暂停脚本_用Rhino解析Java中的JavaScript:暂停/恢复脚本
  18. php在web服务器中的工作原理
  19. 在python不同版本下导入libvirt模块
  20. win10计算机管理字体糊,完美解决:Win10系统字体模糊解决教程

热门文章

  1. 八 理解各种不同含义的new和delete
  2. 如何调整标题字体大小_如何将「双代号网络图」调整清晰美观
  3. 笔记本安装linux
  4. MapReduce job任务源码提交流程
  5. java.io.serializable_java.io.Serializable浅析 | 学步园
  6. linux装python环境_第一章 linux安装及python环境搭建
  7. python多态_python 多继承及多态
  8. 检测空指针 静态检测_Parasoft为G3提供专注于安全性和整体软件质量的静态分析解决方案...
  9. PS使用:解决图片使用PS打开提示无法完成请求,因为找到不知名的或无效的JPEG标志符类型
  10. JavaScript:对象转换为字符串、字符串转换为对象