大家好,我是一名Python数据分析师,希望通过我的经历,分享如何成功转型成为数据科学家。为此,我编写了一套教程,包括《15天学会Python编程》、《每日十分钟,用Python进行数据分析》、《Python数据可视化实战》以及《33天掌握机器学习》。
在之前的文章中,我们探讨了一些数据降维的方法,并详细介绍了PCA。明天我们将开始介绍LDA,尽量减少公式的使用,并增加图表的展示,以增强实用性和可读性。
注:LDA在机器学习领域既可以作为文档主题生成模型,也可以作为线性判别式分析,后者是一种监督学习的分类和降维方法,主要用于降维。本文主要讨论其降维的应用。
此前我们讨论的PCA是一种无监督降维技术,不考虑样本的类别信息。其主要思想是通过正交变换,将由线性相关变量表示的观测数据转换为少数几个线性无关变量表示的数据。
PCA是无监督的,它只是将整个数据集映射到最能表示该数据集的坐标轴上,映射过程中不使用任何外部的分类信息。因此,在有类别标签的样本上,PCA可能并不适用。
与PCA不同,LDA是一种监督学习的特征提取技术,这意味着数据集中的每个样本都包含类别信息。LDA的核心思想是:给定一个训练集,将其投影到一个低维空间,使得同类样本的投影点尽可能靠近,而不同类样本的投影点尽可能远离。
以二维数据为例,我们可以更好地理解这两种方法的区别。
PCA:它所做的只是将整个数据集映射到最能表示该数据集的坐标轴上,映射过程中不使用任何外部的分类信息。因此,虽然PCA可以简化数据表示(降低维度),但它可能增加分类的难度。
LDA:添加了分类信息后,数据集被映射到另一个坐标轴上,这样不同类别的数据变得更加容易区分,从而减少了大量计算工作。
LDA的基本思想可以用一句话概括:“投影后类内方差最小,类间方差最大”。
这个概念可能有些抽象,但知名博主刘建平曾举过一个例子:假设有两类数据,分别用红色和蓝色表示。这些数据的特征是二维的,我们希望将这些数据投影到一条直线上,使每种类别的数据点尽可能靠近,同时使红色和蓝色数据点中心之间的距离尽可能大。
上图展示了两种不同的投影方式,哪一种更好呢?显然,右图的效果更好,因为右图中各类数据点更为集中,且不同类别间的间隔更加明显。
这就是LDA的主要思想。在实际应用中,数据通常是多类别的,原始数据通常超过二维,投影后的结果也不是直线,而是一个低维的超平面。
国内主流教材中对LDA的解释并不多,但韦仕敦大学Olga Veksler教授的CS434a课程第8节对LDA原理的介绍非常详细,是我见过最易于理解的。有兴趣深入了解的同学可以私信我,我可以提供相关课件。此外,刘建平的博客也有不错的讲解,大家可以参考。
对于LDA的调用、参数、属性和方法,我已经整理成了一份速查表:
python
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)
接下来我们将通过实例讲解LDA的实际应用,并提供完整的代码和数据供您学习。敬请关注!
希望以上内容符合您的要求,如果有任何进一步的修改需求,请随时告知。