最近看论文提到了LDA,这里就对LDA及类似的PCA等降维方法做介绍。
一、PCA
PCA是一种无监督的降维方法,试图找到数据中的主成分,并利用这些主成分表征原始数据(降维一般就是找正交的低维向量来表示高维原始数据)。PCA一般有两种推导方式(似乎都不如SVD更直接),这里采用最大方差法,即使得数据点投影到新的空间中后彼此间的协方差尽量的大:
二、LDA
LDA是一种有监督的降维方法,更多的是考虑了标注,即希望投影后不同类别之间数据点的距离更大,同一类别的数据点更紧凑。假设数据是n维的,则LDA推导过程如下·:
设w为:
w1、w2等是n维的列向量,所以w是个n行k列的矩阵,这里的k其实可以按照需要随意选取,只要能合理表征原数据就好。x在w上的投影可以表示为:
此处的y是k维的列向量。
我们从投影后的类间距离和类内距离来考虑最优的w,μi代表类别i的中心
类内距离Sw定义如下:
其中:
代表类别i的类内距离,它是一个nxn的矩阵。
所有x的中心μ定义为:
类间距离定义为:
代表的是每个类别到μ距离的加和,注意Ni代表类别i内x的个数,也就是某个人的人脸图像个数。
上面的讨论都是投影之间的各种数据,而J(w)的计算实际是依靠投影之后数据分布的,所以有:
分别代表投影后的类别i的中心,所有数据的中心,类内散列矩阵,类间散列矩阵。可以简化如下:
Jw定义如下:
我们试图使类间距离尽量的大,类内距离尽量的小,故我们需要最大化Jw,令其对w求导,使导数为0,
最后可以整理为:
之后还是求解矩阵的特征向量,然后根据需求取前k个特征值最大的特征向量即可。
其中LDA的公式参考的https://blog.csdn.net/smartempire/article/details/23377385