随着机器学习热度的不断提高,与其相关的软件和工具也慢慢进入大家的视野,而 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 )关注我们,并与我们的编辑和其他读者朋友交流。
评论