线性判别分析(Linear discriminant analysis),简称为 LDA,是统计大拿罗纳德·艾尔默·费希尔爵士(英语:Sir Ronald Aylmer Fisher)在1936年提出的。
关于 LDA 网上介绍的很多,也写得很不错,本文尝试用一个新的视角来解读该算法,集思广益。
费希尔设计了方差分析,可通过“组间方差大、组内方差小”来进行分类,比如可以分辨出下图中
这种思想运用到机器学习中就是本课要介绍的 LDA,下面来看看细节。
假设有六个二维的样本点
通过感知机(这篇文章有介绍)进行分类的话,由于感知机算法具有一些不确定性(比如迭代次数不同、样本点输入的顺序不同),所以可能会得到像下面这样不同的决策边界
这些决策边界哪一条更好?不知道,除非可以获得更多的样本点。比如增加新的样本点
增加样本点是机器学习的万能方法,但如果没有办法增加样本点该怎么办呢?
没有办法增加样本点时,可尝试提出一些先验假设,也就是提出一些对样本点的知识,举个具体的例子来进行说明吧。
比如有两类人,其中一类容易感染新冠病毒,另一类不容易感染。在这里就可以提出先验假设,假设这两类人分别服从各自的一维正态分布(正态分布比较常见,这么假设也算合理):
前者产生了 3 个正类
这两类人实际上是要通过“体重”和“年龄”这两种特征来描述,也就是说这 6 个样本点所在坐标向量是“体重”和“年龄”的线性组合,或者说该坐标向量是“体重”和“年龄”组成的二维平面中的向量:
由于测量误差、记录错误甚至某人今天吃得有点撑等原因,所以我们采集到的样本点会在该坐标向量附近,最终得到了文章开头提到的 6 个样本点:
上面的坐标向量、正态分布都是假设,所以在图中应该用虚线来表示。真正已知的只有 6 个样本点:
如果可以根据手上的 6 个样本点,复原出未知的坐标向量和正态分布,那么就可以判断哪一条决策边界是更好的。下面让我们一步步来,看看是怎么做的。
首先是找坐标向量,其实也就是将这 6 个样本点放置到一条直线上去。这一步很容易做,通过投影就可以完成:
很显然,可以投影的直线有无数条:
哪一条是更好的呢?其实不同的投影对应了不同的正态分布:
所以找哪一条直线更好的问题就转为了哪一种正态分布更好。
先来思考下,我们理想的两个正态分布应该是什么样子的。下面的三种情况中,肯定情况 2 是最理想的,因为此时的两种正态分布没什么重叠,容易区分开来:
假设正类服从的正态分布为
(1)情况 1,两个正态分布离得还是比较远的,但都太胖了,所以重叠较多。或者说虽然
(2)情况 2,两个正态分布离得较远,同时都比较瘦,所以分离度比较好。或者说
(3)情况 3,两个正态分布离得比较近,所以两者都较瘦,但依然重叠较多。或者说
如果定义如下的代数式,将上述三种情况的
所以可以利用上述代数式来找出理想的两个正态分布。其中
根据上面的分析,可以知道在之前的问题中,左边的正态分布是更好的,也就是左边的直线更好:
但是在具体的计算时,因为不知道
然后算出投影点的样本均值:
准确的说,上面算出
然后计算投影点的样本方差:
然后用样本均值
最后将样本点投影到所有可能的直线上,计算上述代数式,使得该代数式最大的直线,或者说正态分布就是我们要求的:
找到想要的直线后,就可以给出决策边界了。该决策边界就是此时
最后总结下整个求解过程:
这里其实还有很多代数细节,以后会在别的文章中深入探讨。
感知机是机器学习中最基本的算法,纯粹靠样本点来进行分类。如果增加关于样本点的知识,比如像本文一样就可以得到 LDA 算法。当然,如果增加不一样的知识,就会得到诸如逻辑回归、支持向量机等算法,这里就不再赘述了。