PLS-DA(偏最小二乘判别分析)是一种非常受欢迎的用于化学,食品科学等等领域的分类模型。我本人最近也在做分类方面的项目,需要用到PLS-DA,但是在网上查了一下发现资料很少,matlab也并没有可以直接进行PLS-DA运算的自带函数,那么本渣渣知乎第一篇文章就来说一说PLS-DA吧。
PLS-DA是在PLSR(偏最小二乘回归)的基础上建立的分类模型。其算法包含了PLSR拟合以及类别判定两个关键步骤。PLSR的原理在此就不过多介绍。但与PLSR不同的是,PLS-DA中使用的响应矩阵从回归预测中的数值矩阵变成了分类中的二元矩阵。所谓二元矩阵即矩阵中只包含0或1,我们可以很简单的想到,对于一个二分类模型,其对应的分类标签A由1来代替,B由0来代替。那么这个响应矩阵的大小是
当我们得到拟合后的分类矩阵会发现,其包含的数值并不能完美的等于0或1,而是变得较为杂乱。例如,一个样品拟合后的分类标签可能会是[0.21, -0.13, 0.78],而实际标签是[0, 0, 1]。因为在这一步PLSR只是对二元标签做了回归预测,模型本身并不能进行分类。因此,PLS-DA的核心就在于如何判定拟合得到的数值该被归于1还是0。
一种简单粗暴的方法是设置中间值为阈值(即大于0.5的为1,小于0.5的为0)。但是这种方法对于一些复杂的例子来说明显不够好,比如一个拟合标签[0.22, 0.34, 0.51]其实际属于[0, 0, 0](全为0代表无法被分入当前类别),而基于上述方法则被归于第三类[0, 0, 1];又比如一个标签[0.11, 0.02, 0.48]实际属于[0, 0, 1],而简单的中间值分类则会把这分入[0, 0, 0]。其他的方法包括设定一个interval,如0.4到0.6,低于或高于分别对应分入或不分入当前类别,若拟合值落在这个区间则为无法分类;一些神经网络中用到的激活函数如逻辑函数也可以被用于分类判定。上述的这些方法,有着较为明显的局限性,本文则会介绍一种基于概率密度函数(probability density function)的判定方法。算法的原理由Pérez et al., (2009)提出,我对其做出了一定的改进和总结使之更为简单,感兴趣的同学可以去看看原文。
先写这么多,抽时间继续写完。