原理:

     线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的监督学习的数据降维方法,也叫做Fisher线性判别(Fisher Linear Discriminant,FLD),是模式识别的经典算法 ,它是在1996年由Belhumeur引入模式识别和人工智能领域的。LDA的主要思想是将一个高维空间中的数据投影到一个较低维的空间中,且投影后要保证各个类别的类内方差小而类间均值差别大,这意味着同一类的高维数据投影到低维空间后相同类别的聚在一起,而不同类别之间相距较远。如下图将二维数据投影到一维直线上

 LDA降维的目标:将带有标签的数据降维,投影到低维空间同时满足三个条件:

尽可能多的保留数据样本的信息(即选择最大的特征是对应的特征向量所代表的方向)。
寻找使样本尽可能好分的最佳投影方向。
投影后使得同类样本尽可能近,不同类样本尽可能远。

案例

论证过程

sklearn实现(鸢尾花为例)
         在scikit-learn中, LDA类是sklearn.discriminant_analysis.LinearDiscriminantAnalysis。既可以用于分类又可以用于降维。当然,应用场景最多的还是降维。和PCA类似,LDA降维基本也不用调参,只需要指定降维到的维数即可 

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

iris = datasets.load_iris()
X = iris.data
Y = iris.target
target_names = iris.target_names
lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, Y).transform(X)
colors = ['navy', 'turquoise', 'darkorange']

for color, i, target_name in zip(colors, [0, 1, 2], target_names):
    plt.scatter(X_r2[Y == i, 0], X_r2[Y == i, 1], alpha=.8, color=color,
                label=target_name)
plt.legend(loc='best', shadow=False, scatterpoints=1)
plt.title('LDA of IRIS dataset by sklearn')

plt.show()

PCA降维

理解实例

 

PCA定义

 

 重点

 

理解方差,以及协方差相关性 的作用

 

基于标准化的主成分分析

 

 

标准化主成分分析要点

主成分的选择

 

 

 主成分应用总结(重点)

 

 

 LDA vs PCA
        LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。

 

     LDA最多将数据降维至 k − 1 (k为数据的种类) 维,也就是说如果有两类数据,最终降维只能到1维,也就是说投影到一个直线上。这在很多情况下无法对数据进行很好的投影,例如下图中的几种情况。也就是说,LDA不适合对非高斯分布的样本进行降维。

    若训练样本集两类的均值有明显的差异,LDA降维的效果较优

   若训练样本集两类的均值无明显的差异,但协方差差异很大,PCA降维的效果较优
 

 

 

 

 

 

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐