机器学习 - 一次预测一个实例 - 很多实例 - 尽量不使用 I/O

machine learning - predicting one instance at a time - lots of instances - trying not to use I/O

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

Libsvm 即使对于初始学习来说也太慢了。

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

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

Liblinear 太慢,我相信又需要磁盘 I/O。 我可以使用哪些其他替代方案?

我推荐尝试 Vowpal Wabbit (VW)。如果集群上安装了 Boost(和 gcc 或 clang),您可以自己简单地编译 VW(参见 Tutorial)。如果没有安装Boost,也可以自己编译。

VW 包含比 OLL. Moreover, it contains several structured prediction algorithms (SEARN, DAgger) and also a C++ and Python interface to it. See an iPython notebook tutorial 更多的现代算法。

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