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


LDA :  linear discriminant analysis,线性判别分析

nLDA :  neighborhood linear discriminant analysis,邻域线性判别分析

本文所使用的图片均来自《Neighborhood linear discriminant analysis》

论文来自

https://doi.org/10.1016/j.patcog.2021.108422


一.摘要

1.进行线性判别的前提假设是同一类别的所有样本都是独立且有着相同的分布(i.i.d),因此假设不成立的时候,无法进行线性判别

2.本文提出了一种邻域线性判别分析,来缓解这个问题

3.在本文的方法中,邻域被视为最小的子类,不需要借助任何聚类算法就可以比子类更容易获得。

4.投射方向的寻求是为了使邻域内的散点近可能的小,邻域间的散点尽可能的大。


二.简介

1.线性判别是一种广泛使用的监督降维方法,它都是在类的层面上进行定义的(是类内的散点最小化,类间的散点最大化)。因此它需要假设同一类别的样本遵循同样的分布。

2.而在现实世界的数据中,有一些类是由几个分离的子类或聚类组成的多模态。

(图片来自论文《Neighborhood linear discriminant analysis》)

3.上图是一个多模态人工合成的例子,其中第一类用星星表示,第二类用加号表示。一个黑色竖直的虚线是线性判别分析得出来的投影子空间,而黄色水平的虚线可以由考虑类内多模态的判别器获得。很容易可以看出,在线性判别分析的投影子空间中,第一类和第二类是混在一起的,所以说它的分析没有成功。

4.线性判别分析可能无法在包含任何多模态的数据集上工作。因为它的散点矩阵是在类的水平上确定的,没有考虑类的内部结构。

5.一种直接的解决方法就是使用聚类算法,在聚类或子类层面上来确定散点矩阵。(如果没有对类内部的多模态进行预先了解,确定聚类或子类的数量是很困难的。)

6.因此本文提出了使用领域信息来定义散点矩阵。使用邻域间散点和邻域内散点来代替类间散点和类内散点。从而可以将邻域作为做小的子类,它不需要任何关于一个类的内部结构的先验知识。

7.本文方法得到的判别器被称为邻域线性判别分析(nLDA)。它继承了Fisher判别,可以作为一个广义的特征向量问题来解决。

   8.邻域通过Parzen窗口、K近邻、反向最近邻来获得。

9.本文使用了反向最近邻的方法,它是一种先进的无监督群点检测方法,可以排除训练集中的一些“孤点”。本文想要的效果是属于同一类别的样本应尽可能地接近,不同类别的样本应尽可能地远离。

10.基于反向最近邻的散点没有直接考虑完整的类,因此可以解决数据集中包含多模态类的问题。


三.相关工作

1.线性判别分析在很多领域已经被广泛使用。  但是它有一些缺点,比如:

a.对噪声敏感

b.类内分散矩阵可能是不可逆

c.多模态数据集无法使用线性判别

2.经典的线性判别使用的是第二范数 

   3.后面讲的都是一些改进方法,暂时先不看了。。。。直接看本文的方法


四.邻域线性判别分析

1.回顾线性判别的过程

a.作为训练集,由组成(i=1,...,n,), 是属于j类所有的样本,表示的尺寸大小。

b.线性判别分析的目标就是通过最大化来找出最优的投影方向

其中分别是类间和类内的散点矩阵。

其中中样本的平均值,是整个训练集样本的平均值

c.当类j中包含一个以上的聚类时,平均数就变得不再具有信息性。

d.为了解决这个问题,本文使用反向k-近邻集。

   2.本文的方法

定义1(反向k-最近邻居)

给定一个数据集D,是数据集D的一个点,这个点的反向k最近邻居集可以表示为:

是数据集D中的k最近邻居的集合

k最近邻居集合的数量可以会大于k、等于k或小于k。在一些极端情况下(孤点的k最近邻居集合),可能很少或者可能为空。因为这个最近邻居集合与数据分布中样本的位置有关。

如下图:

在这个图中,不同的圆都代表不同的点最接近的三个点的集合(即k值为3)

定义2(邻域内散点矩阵)

        给定一个数据集X,与之相关的标签集为Y。

包含j类的所有样本。邻域内散点矩阵可以定义为:

mi是xi反向最近邻集中所有样本的平均值,mi的计算如下:

定义3(邻域间散点矩阵)

给定一个数据集X,与之相关的标签集为Y。

包含j类的所有样本。邻域间散点矩阵可以定义为:

3.在定义2中,是邻域的散点。

4.在定义3中,邻域间的散点矩阵描述了不同类别之间的相邻样本的差异

5.如果去掉条件,每个领域都被看做一个独立的类,邻域间散点矩阵就是一个类间散点矩阵

6.通常来说,孤点会有比较少的反向最近邻居。为了排除孤点,在定义2和定义3中,本文考虑一个样本的反向近邻集要大于一个阈值t,即

7.在投影空间中,同一领域的样本应该尽可能的接近,不同邻域应该尽可能的远离。

8.领域线性判别分析的目标是最大化下面的目标。

最大化上述式子是一个广义的特征向量问题

9.邻域间的散点矩阵等级大于C-1,因此,保留的投影数量不再受到类别数量的限制

10.,其中是来自的广义特征向量

11.测试集之间的距离可以表示为,这样也可以排除那些反向邻域小于阈值的样本。

12.计算需要次的向量外积,如果数据集太大,这个计算就需要花费大量时间。

13.因此本文在的定义中加一个约束,把它作为一个近似的邻域间散点矩阵

定义4(近似邻域间散点矩阵)

给定一个数据集X,与之相关的标签集为Y。

包含j类的所有样本。邻域间散点矩阵可以定义为:

14.约束表示带有不同标签的数据集中样本xi k个最近的邻域。

15.如果一个样本的反向最近邻远离具有不同标签的该样本的最近邻的反向最近邻居,那么它也远离具有不同标记的其他样本的反向近邻。

16.使用近似的方法,只需计算次两个平均向量外积

17.进一步得到:

18.相比于之前的式子,上式更容易计算


nLDA的成本包括两部分:

1.找出反向最近邻域。如果使用原生方法并且不考虑任何的加速策略,两个样本之间需要计算O(n²)次距离,

2.计算散点矩阵和解决广义特征向量问题,解决一个广义特征向量问题的复杂度与LDA中是一样的。邻域内散点矩阵需要计算O(kn)次外积。领域间散点矩阵需要计算O(n²)次外积。

不用约束的计算成本是O(n²)次距离和O(kn)+O(n²)次外积

使用约束的计算成本是O(n²)次距离和O(kn)次外积


五.与其他判别器(多模态)之间的关系

        第一种是局部费希尔判别分析(LFDA),它利用流形来描述局部结构。第二种是非参数判别分析(NDA),它利用k个最近邻居来重新确定散点矩阵

 1LFDA

2.NDA


六、实验和模拟

       这一部分,本文将与一些判别器(LDA,LFDA,LM-NNDA,ccLDA和-RLDA)进行比较.

首先,我们使用两个手写数字识别数据集。为了评估包含多模态类的问题的nLDA,将数字识别的目标转换为识别数字是奇数还是偶数。然后,我们在22个公共基准数据集上评估nLDA,我们不知道它是否包含多模态类。

1.在手写数字识别数据集中的实验

两个数据集分别是USPS、MNIST.具体细节如下表。

                                ​​​​​​​        

在每个数据集中,我们尝试去识别数字是奇数还是偶数。因此手写识别就变成了对两个类进行分类的问题。每个类中包含五个子类。一些数字图片如下所示。

​​​​​​​        

LFDA and LM-NNDA中的近邻数范围是10到40之间,以10 为单位逐级递增。

在ccLDA中有四个参数:两个正则化参数、一个聚类数量和一个聚类算法的次数,这些参数已经设置好。(论文的参考文献[31])

在nLDA中,近邻数范围是10到40之间,以10为单位逐级递增;参数t(也就是阈值)在{1,2,3,4}中进行选择。投影方向的数量设置为保留95%的特征值能量。

其他判别器的参数与相关参考文献是一样的。

在USPS中,参数是通过整个训练集调整的。而在MNIST中,训练集有60000个样本,再直接通过训练集调整的话是非常耗费时间的。因此我们在一个小的子集上进行调整,调整后的参数用于整个训练集。我们在MNIST数据集中没有将nLDA与LFDA和 -RLDA进行比较,因为它的训练集太大了,两个比较方法的代码无法加载至内存中。

首先,我们使用USPS和MNIST的原始特征来验证判别器。实验结果如下图:

从上图可以看出,本文的nLDA方法在两个数据集中的准确度分别达到了97.21%和87.51%。可以看出,nLDA方法优于其他方法。

此外,我们将本文的判别器与深度特征进行了比较。为了公平比较,深度特征只学习了上述两个数据集。采用ResNet-50结构来学习深度特征。USPS和MNIST的训练集用于ResNet-50的训练。两个训练集的所有图片的尺寸要修改为224*224以适应ResNet-50的要求。从倒数第二层提取出2048维的深度特征。提取的深度特征被用来学习判别器。本次实验的结果如下:

本文的方法的准确度分别达到了99.21%和99.10%,,可以看出,nLDA方法由于其他方法。

2.UCI基准数据集的实验

在这一节中,我们选择了加州大学欧文分校(UCI)的机器学习资料库中选择了 22个基准数据集来评估本文的判别器。22个数据集的详细情况如下:

类别的数量是从2到7。第三列是每个类别的大小。特征的数量是从4-166。每个数据集被平等划分为两部分,一部分用于训练,一部分用于测试。参数调整的范围与第一个实验是一样的。实验的结果如下:

黑色加粗的数字是最好的结果。倒数第三行的connect 4没有使用LFDA和  -RLDA方法也是因为内存不够。倒数第二行是21个数据集的平均精确度,为了公平,我们没有选择connect 4。最后一行是win-lose-tie的结果。在W-L-T中,nLDA被用作基线方法。可以看出nLDA的平均精确度比其他的判别器要高。nLDA在大多数的数据集中的性能都优于其他方法。

nLDA有一个附加的参数用来控制孤点。为了去阐明nLDA性能的改善并不取决于这个参数,我们在下图列出了固定阈值的nLDA的结果:

在上图的第2列到第5列,我们展示了带有一个范围在{10,20,30,40}的最优参数k和一个固定阈值t的nLDA的精确度。因此,只有k值是经过微调的。在最后一列,我们在nLDA中调整了两个参数,一个是参数k,一个是参数t。与Table 6相比,我们可以发现,即使只对k进行微调,nLDA的性能依然比其他的方法要好。

另外,我们选择Friedman Aligned Ranks作为统计学测试方法。Friedman Aligned Ranks是一个非参数化统计推断方法,用于比较两种以上的算法。把K作为数据集的数量,n作为算法(方法)的数量。然后,这些结果将从1到Kn进行排名。Friedman Aligned Ranks的计算如下:        ​​​​​​​        ​​​​​​​        

 表示第i个数据集的总排名,表示第j个方法的总排名。

下图是table 6的Friedman Aligned Ranks的结果:

根据5自由度的卡方分布,Aligned Friedman统计量是21.195657,而Aligned Friedman的测试为0.000743924632。无效假设在很高的显著性水平拒绝了算法没有显著性差异的说法。既然拒绝了等价的无效假设,就应该执行事后的程序。在本文中,我们使用finner测试作为事后检验。nLDA作为控制方法。下图报告了对Friedman排列组合检验结果采用事后方法的p值。

调整后的p值如下图:

p值是用来表示统计假设检验是否有意义或结果的显著性。较小的p值意味着更有力的证据反对等价的无效假设。当未调整p值≤ 0.05时,我们拒绝等价的无效假设。根据表9和表10,我们拒绝了等价的无效假设。nLDA的性能明显优于其他方法。

  也就是说这个实验证明了nLDA性能的改善并不取决于这个控制孤点的参数


七.结论

        基本上就是对上述内容又进行了一遍概括,就不细说了

邻域线性判别《Neighborhood linear discriminant analysis》相关推荐

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

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

  2. 线性判别分析LDA(linear discriminant analysis)与二次判别分析QDA(quadratic discriminant analysis)

    文章目录 什么是LDA LDA与PCA 相同 不同 LDA python实现 使用sklearn实现LDA 再进一步QDA QDA数学原理 QDA与LDA比较 Source: Python Machi ...

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

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

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

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

  5. 机器学习:Linear Discriminant Analysis(过程详解+实例代码MATLAB实现

    目录 LDA概念 线性判别分析(LDA)-二分类 LDA二分类过程 举个例子 线性判别分析-多分类 LDA多分类过程 Experiment 3: Linear Discriminant Analysi ...

  6. 机器学习(三十一)——Linear Discriminant Analysis

    Linear Discriminant Analysis 在<机器学习(十六)>中,我们已经讨论了一个LDA,这里我们来看看另一个LDA. Linear Discriminant Anal ...

  7. 【Learning Notes】PLDA(Probabilistic Linear Discriminant Analysis)

    PLDA 是一个概率生成模型,最初是为解决人脸识别和验证问题而被提出[3,5],之后也被广泛应用到声纹识别等模式识别任务中.学者从不同的动机出发,提出了多种 PLDA 算法,文献[2] 在统一的框架下 ...

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

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

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

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

最新文章

  1. 电脑温度测试软件_网购电脑够便宜?坑连着坑真的不好躲
  2. android 数字证书具体应用机制
  3. Kotlin reduce、fold
  4. 我的Google Adsense帐户被关
  5. C++读取文本文件中以TAB作为分隔符,且中间字段有为空的情况的方法?
  6. WebStorm 快捷键整理
  7. 【HTML】建站成功默认页面
  8. MongoDB模糊查询-查询某月的数据
  9. word页面顺序倒过来_Word里的表格,行之间的顺序如何颠倒过来?
  10. 【leetcode】给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff数对。
  11. 课时13—横屏竖屏事件
  12. nginx安装nginx-vts实现监控并打包镜像
  13. RSA js 加密解密
  14. ardl模型stata命令_计量经济学《手把手教你EViews软件操作教程与案例分析》
  15. HTML课程导航作业,北大青年课程导航.html
  16. amd cpu排行_最新intel和amd处理器性能排行cpu天梯图2019
  17. 体脂手环、体脂秤等产品的体脂测量原理及技术方案分析
  18. 一步搞定无法审查元素
  19. java将内容写入文件,纯干货
  20. CentOS7定时任务配置与使用

热门文章

  1. 【Ubuntu 篇】关于Ubuntu启动报错“hdaudio hdaudioC0D2: unable to bind codec”
  2. 自然语言处理之朴素贝叶斯
  3. python getostime_Python os.utime() 方法
  4. 热力学与统计物理全揽(未完待续)
  5. 淘宝地区下拉菜单制作
  6. 数据标注:图像标注是什么
  7. Java项目使用Druid数据库连接断线后自动重连
  8. 从一个APK调用另一个APK的方法
  9. bitlocker加密好慢_如何加密磁盘?(适用于全平台)
  10. matlab 创建彩色图像,用matlabd在Python中创建彩色图像