降维
在机器学习中,降维技术用于将高维数据映射到低维空间,以减少特征维度并提取数据中的关键信息。这有助于减少计算复杂性、消除冗余特征、可视化数据以及改善模型的训练和推理性能。以下是一些常见的降维技术:
-
主成分分析(Principal Component Analysis,PCA):PCA是一种常用的无监督降维技术。它通过线性变换将原始特征投影到新的正交特征空间,使得投影后的特征具有最大的方差。PCA的目标是找到能够保留数据中最多信息的投影方向。
-
线性判别分析(Linear Discriminant Analysis,LDA):LDA是一种有监督降维技术,常用于分类问题。与PCA不同,LDA不仅考虑特征的方差,还考虑类别之间的区别。它寻找投影,使得同一类别内的样本尽可能接近,不同类别之间的样本尽可能分开。
-
t分布随机邻域嵌入(t-Distributed Stochastic Neighbor Embedding,t-SNE):t-SNE是一种非线性降维技术,常用于数据可视化。它通过保持样本之间的相似性关系,将高维数据映射到低维空间。t-SNE在保留数据的局部结构的同时,更注重保留数据的全局结构。
-
非负矩阵分解(Non-Negative Matrix Factorization,NMF):NMF是一种常用的非负矩阵分解方法,用于从非负数据矩阵中提取特征。它将原始数据矩阵分解为两个非负矩阵的乘积,这些非负矩阵表示样本和特征之间的关系。
-
特征选择(Feature Selection):特征选择是一种通过选择最相关的特征子集来降低维度的方法。它通过评估特征与目标变量之间的相关性或使用统计指标(如信息增益、方差等)来选择重要的特征。
-
特征提取(Feature Extraction):特征提取是一种通过将原始特征转换为更具表达能力的新特征来降低维度的方法。常见的特征提取方法包括主成分分析、独立成分分析(Independent Component Analysis,ICA)和因子分析(Factor Analysis)等。
这些降维技术在不同的应用场景中具有不同的优势和适用性。选择适当的降维技术取决于数据的性质、问题的要求以及对数据特征的理解。
t分布随机邻域嵌入
t分布随机邻域嵌入(t-Distributed Stochastic Neighbor Embedding,t-SNE)是一种非线性降维技术,用于将高维数据映射到低维空间以进行可视化或特征表示。t-SNE的目标是保留高维空间中样本之间的相似性关系,并在低维空间中表达这种相似性关系。
与传统的线性降维方法(如主成分分析)不同,t-SNE在保留局部结构的同时,更注重保留数据的全局结构。它通过在高维空间中使用t分布来计算样本之间的相似度,并在低维空间中使用另一个t分布来计算对应的相似度。这样做的结果是,相似的样本在低维空间中被映射到相邻的位置,而不相似的样本则被映射到较远的位置。
t-SNE的算法步骤如下:
-
计算相似度:使用高斯核函数根据样本之间的欧氏距离计算样本的相似度。相似度通过将距离转换为概率分布来定义。
-
定义条件概率:使用相似度计算每个样本对其他样本的条件概率。这表示在给定样本的相似度下,样本选择其邻居作为邻域的概率。
-
优化KL散度:在低维空间中,计算样本之间的相似度,以使其尽可能接近在高维空间中计算得到的条件概率。这是通过最小化KL散度来实现的。
-
梯度下降:使用梯度下降等优化算法迭代地优化KL散度。在迭代过程中,样本在低维空间中的位置逐渐调整,以使其与高维空间中的相似性关系保持一致。
-
可视化或特征表示:在优化过程结束后,可以使用得到的低维表示进行数据的可视化或特征表示。
t-SNE具有很强的可视化能力,常用于发现数据中的聚类结构、观察样本之间的相似性关系,或者可视化高维数据以便于人类理解。但需要注意的是,t-SNE对于参数的选择比较敏感,不同的参数设置可能会导致不同的结果,因此在使用时需要进行调参和结果的稳定性分析。
Python中plotly库的二维示意图:
Python中plotly库的三维示意图: