在同一个海量数据集上对数百个模型进行评分的最佳实践?

数据挖掘 计分
2022-02-18 19:00:11

我有 500 多个预测各种事物的模型,以及一个包含超过 4 亿个人和大约 5,000 个可能的自变量的庞大数据库。

目前,我的评分过程大约需要 5 天时间,通过将 400m+ 记录分成 100k 人的片段并旋转 n 个线程,每个线程都有 500 多个模型的特定子集,并以这种方式运行直到所有记录对所有模型进行评分。每个线程都是一个提交 R 代码的 Python 进程(即加载一个 R.rds模型和相关的数据集转换逻辑)。

这个过程花费的时间太长,非常容易出错(更多地表明它已经变成了错综复杂的代码网络),昂贵(需要大量云实例),并且只允许在 R 中构建模型(我想基本上与模型来自的语言无关,但主要是我想启用 Python 和 R——这是一个不可协商的要求)。

在类似问题领域有经验的人是否有任何建议:如何将这个过程重新架构为 1)更有效地运行(来自 $ PoV)和 2)同时启用 Python 和 R 模型。

2个回答

由于在您提到的基于训练模型进行预测的评论中,数字数据示例不是一个因素。训练数据可以忽略;您只需要使用经过训练的模型架构和权重即可。

您可能想要使用现有的分布式机器学习框架,例如 Spark 或 H20。该框架将在整个集群中手动分发预测并汇总结果。

您可以使用Python Frameworks for Parallel and Distributed Machine Learning Tasks

例如:Elephas是 Keras 的扩展,它允许您使用 Spark 大规模运行分布式深度学习模型。Elephas 打算保持 Keras 的简单性和高可用性,从而允许对分布式模型进行快速原型设计,这些模型可以在海量数据集上运行。安装:

pip install elephas

如需更多教育,请访问:用于并行和分布式机器学习任务的 10 个 Python 框架