机器学习 – 一次预测一个实例 – 大量实例 – 尽量避免使用I/O

我有一个大型数据集,正在尝试为其构建一个DAgger分类器。正如你所知,在训练期间,我需要在训练实例上运行初始学习的分类器(对它们进行预测),每次处理一个实例。

即使是初始学习,Libsvm也太慢了。

我正在使用OLL,但这需要将每个实例写入文件,然后在其上运行测试代码并获取预测,这涉及到许多磁盘I/O操作。

我考虑过使用vowpal_wabbit(但我不确定它是否能帮助减少磁盘I/O),但我没有权限在工作的集群上安装它。

Liblinear也太慢了,而且我认为它也需要磁盘I/O。还有其他可用的替代方案吗?


回答:

我建议尝试使用Vowpal Wabbit (VW)。如果集群上安装了Boost(以及gcc或clang),你可以自己编译VW(参见教程)。如果没有安装Boost,你也可以自己编译它。

VW包含比OLL更现代的算法。此外,它还包含几种结构化预测算法(SEARN, DAgger)以及C++和Python接口。请参见iPython笔记本教程

关于磁盘I/O:对于一次通过学习,你可以将输入数据直接管道到vw(cat data | vw)或运行vw --daemon。对于多次通过学习,你必须使用缓存文件(以二进制快速加载格式存储的输入数据),创建缓存文件需要一些时间(在第一次通过时,除非它已经存在),但由于二进制格式,后续的通过会快得多。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注