我有一个包含 5000 个样本和 500,000 个特征的数据集(所有类别的基数为 3)。
我试图解决的两个问题:
- 加载数据集 - 尽管使用了计算集群,但我无法将其加载到内存中,所以我假设我应该使用像 Dask、Spark 或 Vaex 这样的并行化库。这是最好的主意吗?
- 特征选择 - 如何在并行化库中运行特征选择?这可以用 Dask、Spark、Vaex 完成吗?
我有一个包含 5000 个样本和 500,000 个特征的数据集(所有类别的基数为 3)。
我试图解决的两个问题:
5000 个样本和 500,000 个并没有那么大——这完全取决于你有多少内存。还要记住,您可以始终优化您的数据格式。例如,如果他们是 float64 - 他们需要吗?如果它们是分类的,它们是如何编码的?(一个字符还是 20 个字符的单词?)等等。所以是的,如果你可以将数据加载到内存中对你有好处,如果不是这里是建议:
对于第一部分,我猜你的矩阵应该是稀疏的。您可以将矩阵转换为稀疏矩阵,然后将其读入内存。
对于第二部分,这取决于矩阵的稀疏性以及要选择的特征数量。一种方法是获取前 n 个变量特征,运行 PCA 并获取前 m 个 PC。n 和 m 取决于矩阵的稀缺性。n 可以是 5000 到 50000 之间的值,您可以通过绘制每台 PC 的方差并找到拐点来定义 m。