6

我需要在大量训练示例上训练回归模型,并有可能包含任意特征。我应该考虑哪些学习算法,为什么?

问题的快速总结:

  • 大约 500 万个训练示例
  • 以每年 2-4 百万的速度添加训练示例
  • 训练示例目前每个包含 10 个特征
  • 大约 400k 填充特征(在更大的总特征空间中)
  • 随着时间的推移添加的其他功能
  • 每天(至少)重新训练或调整模型以合并新示例
  • 优化标准:最小平方百分比误差
  • 输出:单个实数值

我有一些在类似大小的分类问题上训练对数线性模型的经验(使用 SVM、平均和投票感知器等)。添加任意特征的能力很重要,但在这种情况下,训练时间也很宝贵。

例如,到目前为止,我使用 SVMLight 进行的一项实验需要数周时间才能收敛到这些数据的一个子集。我们可以跨多核机器或(可能)集群并行化,但我们需要在几分钟内训练模型。在线培训会更好。

我成功(并且很快)训练了一个平均感知器模型。但是,据我所知,AP 通常不适用于回归。AP 是否为回归模型提供任何收敛保证?还有其他不应该适用的正式理由吗?或者这是否符合我的要求?

我应该研究哪些其他选择?SVM 可能会提供更高的准确性,但二次训练时间是不可接受的。如果可以访问线性时间 SVM 算法,那可能会很好用。

潜在优势:

  • 在线培训
  • 可用的开源实现(最好是在 Java 中)。如有必要,我们可以推出自己的实现,但如果可能的话,我会避免这样做。

感谢您的输入。

4

1 回答 1

7

这是大规模 SVM 的经典问题。如果添加了新功能,则需要重新训练 SVM 模型,如果您不使用在线 svm,则如果添加了新数据。一些选项:

实用选项(现成的):

LIBLINEAR - 如果你可以做线性 SVM,那么有一些算法可以利用线性内核来提供比二次训练时间更好的时间。查看与 libsvm 来自同一研究组的 LIBLINEAR。他们刚刚在昨天发布的 1.91 版本中添加了回归。http://www.csie.ntu.edu.tw/~cjlin/liblinear/

Oracle ODM - Oracle 在其 ODM 包中提供了 SVM。他们采用实用的方法基本上提供“足够好”的 SVM,而无需支付寻找真正最佳解决方案的计算成本。他们使用了一些采样和模型选择技术 - 您可以在此处找到相关信息:http ://www.oracle.com/technetwork/database/options/advanced-analytics/odm/overview/support-vector-machines-paper-1205 -129825.pdf

SHOGUN - SHOGUN 机器学习工具箱专为大规模学习而设计,它们与许多 SVM 实现以及其他方法交互。我从未使用过它,但它可能值得一看:http ://www.shogun-toolbox.org

Kernel-machines.org有一个软件包列表:http: //www.kernel-machines.org/software

其他支持向量机研究

如果你想自己动手,有许多技术可以尝试将 SVM 扩展到已在研究论文中发表的大型数据集,但代码不一定像上述示例那样可用、可用或维护。他们声称效果很好,但每个都有自己的缺点。许多涉及进行某种程度的数据选择。例如,一些研究论文使用线性时间聚类算法对数据进行聚类,并基于聚类训练连续的 SVM 模型,以便在不使用所有数据的情况下构建模型。核心向量机声称训练时间是线性的,但对于它们的准确度是否像他们声称的那样高存在一些批评。许多论文使用不同的启发式算法来尝试选择最有可能的支持向量候选者。其中很多是为了分类,但可能会适应回归。如果您想了解有关其中一些研究的更多信息,我可以添加一些参考资料。

探索算法的工具

你可能已经熟悉这些了,但我想我会把它放在这里以防万一:

还有其他算法在大型数据集上具有良好的运行时间,但很难说它们是否能正常工作,这取决于数据的构成。由于运行时很重要,我会从更简单的模型开始,然后再到更复杂的模型。ANN、决策树回归、贝叶斯方法、局部加权线性回归或混合方法,例如模型树,它是一种叶节点为线性模型的决策树,在大型数据集上都可以比 SVM 更快地完成,并且可能产生好结果。

WEKA - Weka 是探索您的选择的好工具。我会使用 WEKA 在不同的算法中尝试您的数据子集。源代码是开放的,并且在 java 中,如果您选择了可以根据您的需要进行调整的东西。http://www.cs.waikato.ac.nz/ml/weka/

R - R 编程语言也实现了许多算法,类似于 Matlab 中的编程。http://www.r-project.org/

我不建议使用非大规模数据集的 WEKA 或 R,但它们是有用的工具,可以尝试缩小哪些算法可能对您有效。

于 2012-04-27T15:02:21.593 回答