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