概述
需要注意一下,LDA有两种缩写:
- 一种是线性判别分析(Linear Discriminant Analysis)
- 一种是概率主题模型——隐含狄利克雷分布(Latent Dirichlet Allocation)
本文讲的是前者。
线性判别分析(Linear Discriminant Analysis,LDA)的思想是:
- 训练时:设法将训练样本投影到一条直线上,使得同类样本的投影点尽可能地接近,异类样本的投影点尽可能地远离。要学习的就是这样的一条直线。
- 预测时:将待预测样本投影到学到的直线上,根据它的投影点的位置来判定它的类别。
推导过程
首先考虑二分类问题。
给定数据集T,其中共有m个样本,n个特征。即:
其中, yi={0,1},i=1,2,...,m
设类别为0的样本的均值向量为:
u0=(u10,u20,...,un0)T
,这些样本的特征之间的协方差矩阵为
∑0
。
设类别为1的样本的均值向量为:
u1=(u11,u21,...,un1)T
,这些样本的特征之间的协方差矩阵为
∑1
。
假设直线为
y=θTx
,将数据投影到直线上,则:
两类样本的中心在直线上的投影分别为
θTu0
和
θTu1
。
两类样本投影的方差分别为
θT∑0θ
和
θT∑1θ
。
我们的目标是:同类样本的投影点尽可能地接近,异类样本的投影点尽可能地远离。那么可以使同类样例投影点的方差尽可能地小,即
θT∑0θ+θT∑1θ
尽可能地小;可以使异类样例的中心投影点尽可能地远离,即
∥θTu0−θTu1∥2
尽可能地大。
于是得到最大化的目标:
定义类内散度矩阵:
定义类间散度矩阵:
则LDA最大化的目标为:
求解最优化问题:
分子分母都是关于 θ 的二次项,因此上式的解与 θ 的长度无关。令 θTSwθ=1 ,则最优化问题改写为:
应用拉格朗日乘子法:
令 (u0−u1)Tθ=λθ ,其中 λθ 为实数。则 Sbθ=(u0−u1)(u0−u1)Tθ=λθ(u0−u1)=λSwθ 。由于与 θ 的长度无关,可以令 λθ=λ ,则有:
上面讨论的是二分类LDA算法。可以将它扩展到多分类任务中。由于多分类任务不止有两个中心点,因此不能简单地套用二类LDA的做法(即两个中心点的距离)。这里用每一类样本和的中心点距离总的中心点的距离作为度量。同时考虑到每一类样本集的大小可能不同(密度分布不均),所以我们对这个距离加以权重,因此定义类间散度矩阵 Sb=∑Mi=1mi(ui−u)(ui−u)T 。
经推导可以得到最大化的目标:
其中, tr(.) 表示矩阵的迹。一个矩阵的迹是矩阵对角线的元素之和,它是一个矩阵不变量,也等于所有特征值之和。
多类LDA将样本投影到n-1维空间,因此它是一种经典的监督降维技术。
参考文献:
- 华校专,王正林《Python大战机器学习》