各种机器学习(ML)库/工具的比较

时间:2012-01-17 13:22:55

标签: machine-learning statistics data-mining

从最近几天开始,我正在寻找一些优秀的机器学习(ML)库,令我惊讶的是我发现了很多。最初,我只对那些拥有C / C ++支持的库感兴趣,但后来我扩展了我的愿望清单,以包含任何可以具有良好功能集的良好库,并且可以在较长时间内提供良好的数据挖掘(可能有点困难)最初学习,但应该有可以使其值得学习的东西)。

为此,我想评估这些参数上所有可用的好ML库:

  1. 各种数据挖掘算法及其支持的功能

  2. 社区支持(如果有更多用户,我们肯定会在工作时获得更多帮助)

  3. 它的稳定性

  4. 大数据集的效率

  5. 易于学习/易于使用/易于操作

  6. 它支持的语言(C,C ++,Java,P ython)

  7. 开源/闭源

  8. 我请求你们所有人请你们提出你的建议(曾经工作或有过与任何图书馆合作的经验),这样我们就可以对任何类似的问题进行全面的讨论。

4 个答案:

答案 0 :(得分:7)

您可以查看一个位于Machine Learning Open Source Software页面的地方,而不是推荐一个特定的工具箱。在这里你可以:

排序
  • 最后更新
  • 出版日期
  • 项目名称
  • 评分
  • 观看次数
  • 下载次数

过滤
  • 作者
  • 发布者
  • 标签
  • 许可证
  • 编程语言
  • 操作系统
  • 数据格式
  • 在JMLR
  • 中发布

这应该能够回答你的问题1),2)和6),默认情况下7)是肯定的(虽然可能有不同风格的开源许可证)。

问题3),4)和5)比较棘手。对mloss有一个评级方案,但它没有按照这些标准细分(稳定性,效率,易用性)。在某些时候,你将不得不进行一些自己的实验 - 从易用性的角度来看,这肯定会有所帮助。对于效率,在某些情况下,工具箱将由journal articles备份,在这种情况下,他们已经通过了严格的同行评审流程,因此,如果您可以找到我期望的相关期刊文章关于效率的讨论(尽管可能不完全公正!)。最后稳定性,我想你必须对社区有一些信任,即评级最高,下载次数最多的工具箱也是最稳定的,尽管你可能只能通过自己的实验发现这一点。

其他信息来源是论坛和一般在线资源,您可以尝试以下方法之一:

答案 1 :(得分:3)

以下是一些建议:

所有库都是用C(++)编写的。

答案 2 :(得分:1)

说真的,这种比较是如此复杂,结果将是任意的。这就像问“什么是最好的车?”

  • 将其用于
  • 的任务
  • 使用什么数据
  • 多少数据
  • 科学或商业用途

当您进入细节时,您会对这些限制感到惊讶。例如,一个工具包将执行“k-means”,但实际上它只是一个近似k-means,欧几里德距离,仅适用于双值,低维,内存数据。 另一个工具包将带有10种k-means变体,支持任意距离函数(即使k-means对Minkowski规范最有效),支持磁盘操作,但在你的微小测试数据集上会慢得多,因为它支持所有这些选项。例如,在 GNU R 中,您至少有3个k-means变体,但是AFAICT它们都被约束到欧几里德距离。它们可能非常快,因为它们没有在R中实现,而是在低级C中实现;这实际上使得扩展它们更加困难(尽管GNU R具有普遍的可扩展性)。

这是非常主观的。没有答案。您可以做的最好的事情是分别为每个点分配分数。

如果您仍想这样做,请务必将此点添加到您的列表中:可扩展性。速度是一回事,但如果你想将它应用于实际数据,你可能需要自定义距离函数,开始设置,迭代,......

可扩展性也使它们对研究更有用。对诸如GNU R k-means之类的低级C实现进行基准测试与另一种算法的更高级别实现相比是不公平的;您正在对实现进行基准测试而不是算法。因此,为了在科学中使用,它应尽量在算法之间尽可能多地重叠。请参阅:R中的k-means在计算欧几里德距离本身时可能已经比任何JavaScript应用程序都要快得多。

答案 3 :(得分:0)

您可以研究认知架构,它旨在模仿人类大脑的运作方式。在过去,我使用了一种名为ACT-R的架构,这是一种用LISP编写的解释性语言。语法与LISP非常相似,虽然我可能需要许可才能使用该软件,但它很容易上手。

其他常见的认知架构包括Soar,Clarion和EPIC,所有这些都试图模仿人类大脑处理信息的方式。使用这些体系结构在某些方面与编写功能程序有很大不同,但是你很快就会习惯它,并且可以做一些很棒的事情。