当速度不是主要问题时,什么是高维数据的最佳 ML 算法?

数据挖掘 机器学习
2021-09-30 10:29:35

我们正在尝试使用机器学习算法建立一个预测模型。

我有一个用例,其中输入数据的维度非常高。每个样本点有 20000 个特征。

我们有一个不错的训练样本集,大约有 100 万个训练样本,如果有必要,我们可以获取更多,比如 2 或 300 万个。

我们对速度不是很敏感,它不像推荐系统需要在一秒钟内做出响应。该应用程序允许我们花几分钟时间进行一次预测。尽管如此,我们希望该算法在未来能够以并行模式运行。

鉴于上述描述,你会建议什么样的算法?

我们最担心的是过度拟合,有这么多的特征,似乎我们注定要过度拟合。

我们试图单独做最近邻线的事情,但是有这么多特征,计算距离听起来像是一项不可能完成的任务。也许我们应该先做 PCA 来做降维?

欢迎任何评论!

2个回答

没有万能的

此外,数据维度在任何地方都不相同。本质上是稀疏的文本数据具有与例如随机高斯非常不同的内在维度。

对于文本数据,众所周知,线性 SVM 可以很好地工作。

RBF 内核不适用于高维数据,因为它们的核心是基于距离的,选择 sigma 参数几乎是不可能的。

如果你可以“折叠”维度,你也会得到非常不同的行为。我是图像识别,通常有数千个像素。但是,您永远不会同时查看所有这些内容相反,您使用在数据空间上移动的卷积核,它们可能只有 32x32 像素。那仍然是 1024 维,但不再是数百万。

你没有说你是在构建回归模型还是分类模型,但无论如何都是这样。

与以往一样,这取决于……尽管几种神经网络方法,例如深度学习或 RBF 网络,已经显示出对高维数据的前景。

可以使用使用代表点(作为聚类中心或类边界)的 KNN 方法来减少计算负担。

作为测试,我尝试计算单个向量和 20,000、20,000 个特征向量之间的欧几里得距离。在使用 Mathematica 的台式机的单核上,这大约需要 7 秒。如果您有 RAM 和多个内核,KNN 在您的时间范围内应该是可行的。

特征工程可能会为您带来速度优势,但您可能希望将其与预测/分类准确性相协调。

如果您怀疑自己过度拟合,有几种方法可以实现正则化,如果您遵循神经网络路径,您可能想要探索 Ridge Regression/Tikhonov 正则化或提前停止。

祝你好运。