机器学习之线性判别分析(LDA)

在上一篇文章中,介绍了主成分分析法(PCA),这里我们介绍另外一种经典的降维方法线性判别分析(LDA)。LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA降维是要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大,用一句话概括,就是“投影后类内方差最小,类间方差最大”。
借用一张图来显示不同的投影方式:
机器学习之线性判别分析(LDA)_第1张图片
直观上,右图相较于左图可以在映射后,更好地将不同类别的样本点分离。LDA的主要的思想就是来寻找这条直线的方向。(是不是和PCA有点类似)
首先给定m个n维特征数据集:
}
(i从1到m),其中N1个样本属于类别w1,N2个样本属于类别w2.
每类样本投影前的均值为:
在这里插入图片描述
每类样本投影后的均值为:
在这里插入图片描述
可以看出,投影后的样本中心点也是样本中心点的投影。
什么是最佳投影向量w呢?上文提到,类间方差尽可能大,定量表示为:
在这里插入图片描述
J(w)越大越好,但是只考虑J(w)出现下图的情况:
机器学习之线性判别分析(LDA)_第2张图片
样本投影到X轴后,J(W)比投影到Y轴的要大,但是虽然投影到Y轴J(W)小,但是能够分离样本点。这里还要考虑投影后类内的方差,也就是上文中提到的类内方差要小。定义散列值:
在这里插入图片描述
从公式可以看出,样本越分散,散列值越大,反之,越集中。我们想要的投影后的样本点是不同类别的样本点越分开越好,同类的越聚集越好,也就是均值点间距离越大越好,散列值越小越好。正好,我们可以使用J(w)和S(w)来度量。定义最终的度量公式:
在这里插入图片描述
展开散列值公式:
在这里插入图片描述
定义:
在这里插入图片描述
该协方差矩阵称为散列矩阵。利用该定义,上式可简写为:
在这里插入图片描述

定义样本集的类内散度矩阵SW:
在这里插入图片描述
使用上面三个等式有:
在这里插入图片描述
展开J(W)的分子:
在这里插入图片描述
SB代表类间离散度矩阵,是两个向量的外积。
那么J(W)最终可以化简为:
在这里插入图片描述

在这里插入图片描述
即目标函数J(W)化简为等于其分子部分,且受上面条件约束。
加入拉格朗日乘子并求导得到:
机器学习之线性判别分析(LDA)_第3张图片
利用矩阵微积分,求导时可以简单的把
在这里插入图片描述
看作

的平方,那么求导后的结果两边同时乘SW的逆矩阵,得到
在这里插入图片描述
从上面可以看出,w就是SW(-1)*SB的特征向量。按照特征值的大小进行排序,选择对应的特征向量。就是我们要找的最佳映射向量。
下面我们这个例子来描述下LDA的求解过程:
机器学习之线性判别分析(LDA)_第4张图片
数据分为2种类别,其中合格的有4个,不合格有3个,求两个类别数据的均值:
mean1=[3.0525, 6.385 ],mean2=[2.67, 4.73333333]
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
根据公式可以计算出SW为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
求其特征值和特征向量:value,vector=np.linalg.eig(sw.I*sb)
Value=[1.5639568e+17, 8.0000000e+00]
Vector=[[0.97421693, -0.22561331],[0.92309826,, 0.38456417]]
这里选择特征值大的对应的向量w=[0.92309826,, 0.38456417]
将原始数据和向量W相乘,得到变换后的数据:
在这里插入图片描述
可以从转换后的数据看出,数据有明显的分层现象。
LDA与PCA的区别:

  1. PCA无需样本标签,属于无监督学习降维,LDA需要样本标签,属于有监督学习降维。PCA选择样本点投影具有最大方差的方向,LDA选择分类性能最好的方向
  2. 原始数据集是d维的,一共有C个类别。PCA降维和数据的特征维度相关,可以从1维一直到d维,而LDA降维与样本类别数C有关,可以从1维到C-1维。
  3. PCA投影后的坐标系都是正交的,LDA根据类别的标注关注分类能力,一般不正交。

你可能感兴趣的:(机器学习,降维,LDA)