gpt4 book ai didi

machine-learning - 我应该考虑哪些学习算法来训练对数线性回归模型?

转载 作者:行者123 更新时间:2023-11-30 08:26:38 24 4
gpt4 key购买 nike

我需要通过大量训练来训练回归模型示例,有可能合并任意特征。什么我应该考虑学习算法,为什么?

问题的快速总结:

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

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

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

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

我还应该研究哪些其他选择? SVM 可能会提供卓越的准确性,但二次训练时间是 Not Acceptable 。如果可以使用线性时间 SVM 算法,那么效果会很好。

潜在优势:

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

感谢您的意见。

最佳答案

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

实用选项(现成的):

LIBLINEAR - 如果您可以进行线性 SVM,则有一些算法可以利用线性内核来提供比二次训练时间更好的时间。查看 LIBLINEAR,它与 libsvm 来自同一研究小组。他们刚刚在昨天发布的 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 扩展到已在研究论文中发表的大型数据集,但代码不一定像上面的示例那样可用、可用或维护。他们声称效果很好,但每个都有自己的缺点。许多涉及进行某种程度的数据选择。例如,一些研究论文使用线性时间聚类算法对数据进行聚类,并基于聚类训练连续的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,但它们是尝试缩小适合您的算法范围的有用工具。

关于machine-learning - 我应该考虑哪些学习算法来训练对数线性回归模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com