学习 LDA 其实我也没觉得它有什么很重要的应用,甚至我还听到了一种说法,觉得 LDA 是一个比较鸡肋的算法(这一点恐怕要打一个大大的问号),但是在学习 LDA 的过程中,可以巩固我们对常见数学工具的应用,因为其中用到的拉格朗日乘子法,定义的协方差矩阵、投影到向量的思想是常见而且基础的。
LDA 的思想
与 PCA 不同,LDA 需要利用类标信息进行降维,是一种监督学习降维技术。
训练时:给定训练样例集,设法将样例投影到一条直线上,使得:
1、同类样本的投影点尽可能地接近;
2、异类样本的投影点尽可能地远离。
要学习的就是这样一条直线:投影到一条直线上,直线是一维的,所以待求的参数是一个向量(特指列向量);那么降维体现在哪里呢?我们求出了这个直线向量 以后,可以归一化,得到一个单位向量,然后去掉这个单位向量中分量比较小的量,只保留比较大的分量,这样就达到了降维的目的。
预测时:将待预测的样本投影到学习到的直线上,根据它的投影点的位置来判断它的类别。
LDA 的核心思想
LDA 的核心思想:投影变换后:
1、类间距离最大;
2、类内方差最小。
定量描述 LDA 的核心思想
类标在 LDA 算法执行过程中就发挥了重要作用:
LDA 公式推导
1、我们将原始的数据矩阵记为 ,对应的类标向量记为 。
2、根据类标 和 将矩阵 和分为两个部分。 对应的均值向量为 , 对应的均值向量为 (这里均值向量是每个行向量加起来以后除以向量的个数);
3、投影以后类间距离最大:即不同类标的均值向量投影以后落在直线上的点间的距离最大。
类标为 的点的均值向量投影到直线上得到的实数:( 是 维, 是 维,因此 是一个实数);类标为 的点的均值向量投影到直线上得到的实数: 。它们之间的距离,即为“投影到直线以后的类内间距”:。整理一下:
4、“投影以后组内的方差之和尽量小”(这里的方差没有除以倍数)用数学表达出来就是:
类标为 的点投影到直线上的方差是:
类标为 的点投影到直线上的方差是:
它们的和是:
写成这样以后,才能够很清晰地看到书上定义的协方差矩阵。
参考资料
1、周志华《机器学习》
2、刘建平:线性判别分析 LDA 原理总结
http://www.cnblogs.com/pinard/p/6244265.html
3、LDA线性判别分析
https://zhuanlan.zhihu.com/p/32658341