降维是将高维数据集转换为可比较的低维空间的过程,真实的数据集通常有很多冗余特征,降维技术可用于去除这些冗余特征或将n维数据集转换为2维或3维进行可视化。
在本文中,我们将讨论8种降维技术,它们可以用于各种用例来降低数据集的维度。
1. 缺失值
真实的数据集通常包含大量缺失记录,这可能是由于记录数据时数据损坏或保存失败造成的。我们可以尝试各种数据插补技术来填补缺失的记录,但这仅在特征缺失数量有限时有效。
如果缺失特征值的数量大于指定的阈值,则最好从训练数据中删除该特征。我们可以删除所有缺失特征记录大于阈值(比如50%)的特征,从而降低数据的维度。
缺失值的可视化:白线表示存在缺失值
上述缺失值解释图像是使用themissingno包为titanic数据生成的。特征“Age”和“Cabin”有大量缺失记录,最终,它们可以从训练样本中去除。
2.相关性滤波器
一个或多个特征的相关性较高说明其具有相似的变化趋势且可能包含相似的信息,它会破坏自变量的统计显著性,我们可以删除与其他独立特征相关的特征,还可以删除与目标类标签不相关的特征。
有多种技术可以计算独立特征之间的相关性,包括 Pearson、Spearman、Kendall、卡方检验等。
相关矩阵的热图
上述相关矩阵热图(针对titanic数据集)是使用df.corr()函数计算的。
3.方差滤波器
只有一个特征类别的分类特征或方差很小的数值特征变量,这些特征不会对我们的模型有一定的提升,可以从训练样本中删除。
函数DataFrame.var()可以计算 Pandas 数据帧的所有特征的方差。DataFrame.value_counts()函数可以计算每个特征的分布。
4.前向/后向特征选择
前向特征选择技术是一种选择最佳特征集的包装技术。这是一个循序渐进的过程,特征是根据上一步的推断来选择的。前向特征选择技术的步骤是:
1.使用每个特征分别训练机器学习模型,并测量每个模型的性能。
2.获取性能最佳的特征并使用其余特征重新训练单个模型。
3.重复这个过程并一次添加一个特征,产生性能最佳的特征被保留。
4.重复步骤 2 和 3,直到模型的性能没有明显的改善。
前向特征选择
后向特征选择技术类似于前向特征选择,但工作方式正好相反,最初选择所有特征,并在每一步中删除最冗余的特征。
5.主成分分析
主成分分析 (PCA) 是一种非常古老的降维技术。PCA 通过保留特征的方差将特征向量投影到低维空间,它找到最大方差的方向以获得最佳特征列表。PCA 可用于将非常高维的数据投影到所需的维度。PCA算法的步骤是:
- 标准化数据集
- 计算标准化数据集的协方差矩阵
- 计算协方差矩阵的特征值和特征向量
- 取特征向量与具有高特征值的特征向量的点积。
6.t-SNE
t-SNE(t-分布式随机邻域嵌入)是一种降维技术,主要用于数据可视化。t-SNE将高维的数据集转换为可以进一步可视化的二维或三维向量。
t-SNE 的性能优于 PCA,因为它保留了数据的局部结构,并通过保留邻域局部结构将每个数据点从较高维度嵌入到较低维度空间。
更多内容可以查看:https://distill.pub/2016/misread-tsne/
7.UMAP
UMAP(Uniform Manifold Approximation)是一种新的降维技术,它是一种非常有效的可视化和可伸缩降维算法,其工作方式与 t-SNE 类似,但是它保留了更多全局结构、具有优越的运行性能、更好的可扩展性。
更多详情:https://umap-learn.readthedocs.io/en/latest/basic_usage.html
8.自动编码器(Auto Encoder )
自动编码器(Auto Encoder )是一种基于单层感知器的降维方法。它有两个组成部分:压缩(编码器)和扩展(解码器)。输入层和输出层的节点数量相同,而中间层的神经元数量少于输入层和输出层。
数据集被传递到自动编码器神经网络模型,并被编码到较低维度的隐藏层。然后它尝试从简化的编码中生成尽可能接近其原始输入的表示。中间层是减少到可比较的较低维度的向量。
总结
在本文中,我们讨论了基于特征选择的降维方法、基于组件的降维技术、基于投影的方法,最后是基于神经网络的自动编码器。ISOMAP 是另一种基于投影的降维方法,其工作方式类似于 UMAP 和 t-SNE。SVD 和 ISO 是其他一些基于组件的降维技术。