RCV1数据集上的采样和特征选择

问题描述 投票:0回答:1

我有兴趣在RCV1数据集上应用KNN、GP、MLP等分类算法进行主题分类。然而,这个数据集非常大,数据的维度为 (804414, 47236),目标的维度为 (804414, 103)。此外,数据的很大一部分包含零。 每次我尝试训练模型时,我都会收到内存错误或异常值和不相关的数据。 我在谷歌colab中使用python。 为了使这些算法更容易运行,我正在考虑采用采样或特征选择等方法。我希望得到关于如何做到这一点的指导,并且女巫技术是否有效?

谢谢!

减少 RCV1 维数的最佳技术。

python machine-learning classification
1个回答
0
投票

47236 的维度确实是一个很大的特征输入,但是,这取决于您的数据预处理方法来确定 RAM 消耗。如果把这47236个维度都直接作为数值输入的话,这个维度就可以了;如果这些特征中的大部分被离散并矢量化到更大的维度,那么对于 RAM 来说可能会更大;等等。所有这些,都取决于您的预处理方法。

有多种方法可以减少深度学习的内存消耗。

第一个是Batch Input,无需将完整数据集加载到内存中,而只是当前批次和接下来的几个批次(用于加快训练速度),可以显着减少内存使用。 Pandas(Pandas dataframe:每批行的操作)和TensorFlow(https://www.tensorflow.org/guide/data#simple_batching)都支持这种数据加载方法。

第二个是特征选择,将数据集加载到更小的模型中,例如随机森林(https://scikit-learn.org/stable/auto_examples/ensemble/plot_forest_importances.html)或SE net(https) ://arxiv.org/abs/1709.01507)用于根据重要性得分进行特征选择。

第三种是使用CPU训练方法,保证更大的RAM可用性,这是推荐系统中的常见做法。

© www.soinside.com 2019 - 2024. All rights reserved.