Mahout 与 Weka 的对比

  • 孙镜涛

2014 年 11 月 26 日

话题:语言 & 开发架构机器学习

随着机器学习热度的不断提高,与其相关的软件和工具也慢慢进入大家的视野,而 Weka 和 Mahout 无疑是这些工具中较为流行的两个。作为一款知名的老牌机器学习软件,Weka 支持经典的数据挖掘任务,同时还有大量的扩展包,可以支持文本挖掘、可视化和网格计算等功能。Mahout 则是 Apache 软件基金会旗下的一个开源项目,它提供了一些机器学习领域中的经典算法实现,支持 Apache Hadoop,能够高效地运行在云计算环境中。那么它们之间的最大不同在哪,我们该如何选择呢?最近 algorithmia 的团队发表了一篇《机器学习对决:Apache Mahout vs Weka》的文章,对这两者做了比较。

功能层面,Weka 包含大量经过良好优化的机器学习和数据分析算法,可以处理与格式化、数据转换相关的各种任务,唯一的不足就是它对内存敏感的大数据处理的不好。而 Mahout 则为大数据而生,作为一个新生的数据挖掘工具,它所支持的算法与 Weka 相比依然很少,相关文档的质量也良莠不齐,但是它的优势在于不仅支持单机环境,还支持 MapReduce 分布式计算,能够应对 Weka 无法处理的大数据。

性能方面,algorithmia 通过使用两个工具都支持的算法(随机森林)对同一个数据集进行分类做了对比。结果显示,Weka 的最优准确率为 99.39%(250 棵树),而 Mahout 为 95.89%(100 棵树),同时该实验也显示树的数量对 Mahout 的分类准确率影响很小。

algorithmia 上的这篇文章在 Hacker News 上引发了广泛的讨论jackhammer说:

“现在,大部分数据科学家都在使用 scikit-learn 或者 R。Weka 真的已经过时了。Mahout 和 MLlib 使用起来比较难。通常,我们最好只是采样,或者租用一个内存充足的 EC2 实例。”

discardorama则认为:

“Mahout 的力量在于它对大数据的并行处理能力,Weka 则是为了处理较小的问题或者是在实验中使用,但是无论如何现在已经很少用了。Mahout 和 Weka 都不是主流,对于大规模的分类,人们现在使用VW,对于小规模的实验,使用 Scikit 或者 R。”

akbar501回复说:

“对于机器学习而言,Spark MLlib 是一个必然的选择。对于大规模、分布式的数据,我会使用 SparkR。”


感谢郭蕾对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

语言 & 开发架构机器学习