- 减少数据集维度的主要动机是什么?主要缺点是什么?
动机和缺点:
减少维数的主要动机是:
- 为了加速后续的训练算法(在某些情况下,它甚至可以去除噪声和冗余特征,使训练算法表现更好)。
- 可视化数据并深入了解最重要的特征。
- 仅仅为了节省空间(压缩)。
主要缺点是:
- 某些信息丢失,可能会降低后续训练算法的性能。
- 它可能是计算密集型的。
- 它为你的机器学习管道增加了一些复杂性。
- 转换后的特征通常难以解释。
- 什么是维度的诅咒?
维度的诅咒指的是低维空间中不存在的许多问题出现在高维空间中。在机器学习中,一个常见的表现是随机抽样的高维向量通常非常稀疏,增加了过拟合的风险
并且在没有足够的训练数据的情况下很难识别数据中的模式。
- 数据集的维数减少后,是否有可能扭转操作? 如果是这样,怎么做? 如果没有,为什么?
一旦使用我们的算法之一减少了数据集的维数,几乎总是不可能完全扭转操作,
因为在减少维数时会丢失一些信息。此外,虽然一些算法(例如PCA)具有可以重建与原始数据相对类似的数据集的简单反向变换过程,但是其他算法(例如T-SNE)则不然。 - PCA可用于降低高度非线性数据集的维数吗?
PCA可用于显着降低大多数数据集的维度,即使它们是高度非线性的,因为它至少可以摆脱无用的维数。但是,如果是有用的维数 ——例如,瑞士卷 -——·然后降低PCA的维数将失去太多的信息。你想要展开瑞士卷,而不是挤压它。
-
假设你在1,000维数据集上执行PCA,设置解释方差比为95%。 生成的数据集有多少维度?
这是一个棘手的问题:它取决于数据集。让我们看看两个极端的例子。- 首先,假设数据集由几乎完全对齐的点组成。在这种情况下,PCA可以将数据集减少到一维,同时仍然保留95%的方差。
- 现在想象一下,数据集由完全随机的点组成,分散在1000个维度周围。在这种情况下,需要所有1,000个维度来保持95%的方差。
所以答案是,它取决于数据集,它可以是1到1,000之间的任何数字。将解释方差绘制为维数的函数是一种粗略了解数据集内在维度的方法。
-
在什么情况下你会使用 vanilla PCA, Incremental PCA, Randomized PCA, or Kernel PCA?
- 常规PCA(vanilla PCA)是默认值,但仅当数据集适合内存时才有效。
- 增量PCA对于不适合内存的大型数据集很有用,但速度比普通的PCA慢,所以如果数据集适合内存,你应该更喜欢普通的PCA。当你需要在每次新实例到达时动态应用PCA时,增量PCA对于在线任务也很有用。
- 当你想要显着降低维度并且数据集适合内存时,随机PCA非常有用;在这种情况下,它比普通PCA快得多。
- 最后,Kernel PCA对非线性数据集非常有用。
- 如何评估数据集上降维算法的性能?
- 直观地说,如果从数据集中消除了大量维度而不会丢失太多信息,则降维算法表现良好。
- 衡量这一点的一种方法是应用逆向变换并测量重建错误。
- 但是,并非所有降维算法都提供逆向变换。
- 或者,如果你在另一个机器学习算法之前使用降维作为预处理步骤(例如,随机森林分类器),那么你可以简单地测量第二种算法的性能;
- 如果维数减少没有丢失太多信息,那么算法应该与使用原始数据集时一样好。
- 链接两个不同的降维算法是否有意义?
链接两个不同的降维算法绝对有意义。一个常见的例子是
- 先使用PCA快速摆脱大量无用的维度,
- 然后应用另一个慢得多的降维算法,如LLE。
这种两步法可能会产生与仅使用LLE相同的性能,但只需要很短的时间。
网友评论