将Mahout模型输出导出为Weka输入

3
我希望使用Mahout决策树训练过程的输出模型作为基于Weka的分类器的输入模型。
由于基于数百万个训练记录的复杂决策树的训练对于单节点Weka分类器来说几乎是不切实际的,因此我想使用Mahout构建模型,例如使用Random Forest Partial Implementation
虽然上述算法在训练时可能存在问题,但在单台机器上使用Weka进行预测相当简单。
在Mahout wiki site 上指出导入数据格式包括Weka ARFF格式,但不包括导出格式。
是否可以使用Mahout中的一些现有实现来训练模型,以便在基于简单Weka的系统中用于生产?
1个回答

1

我认为你所要求的是不可能实现的:.arff是一种数据格式,所有导入/导出菜单中的选项都是数据格式。Weka可以保存/加载的分类器实际上是Weka的Java Classifier对象,使用Java的Serializable接口将其写入文件。它们不是可移植的树,而是比创建它们的JVM更持久的Java对象。因此,要做到你想要的,Mahout或Weka必须能够生成/读取彼此的代码,但我找不到任何文档说明这一点。

我的经验是,对于数百万个训练记录(每个记录包含约45个数字特征/列),使用默认选项的Weka随机森林实现非常快(在单个2.26GHz核心上运行几秒钟),因此可能没有必要使用Mahout。不过,你的数据集可能会有不同的结果。


在Weka中,你关于Random Forest的看法可能是正确的,但它的内存需求并不低,并且其他算法情况更糟。我真的很喜欢使用Mahout进行训练的简易性,但不喜欢其预测时间过慢。 - Guy
1
真的。你看过这个吗:链接?你可以在weka中使用它,链接中的图表表明,这种RF实现对CPU时间和内存更加友好。我自己没有测试过,也找不到任何验证其准确性的东西,但你可以很容易地用一些数据在这个实现和默认的RF实现中进行小型测试,并查看结果是否可比。 - kaz
不错的链接,但它只能证明Weka在Java和单机上存在问题。只要数据相对较小,它就可以工作。Mahout的承诺是允许解决更大规模的问题。我们如何将这些马和大象结合起来,共同构建一个真正的大规模应用程序呢? - Guy
@Guy,这个链接可以部分地弥合你的差距:它将利用多个核心,并减少内存和CPU使用。但是,我认为 Mahout 不可能产生 Weka 可理解的模型。Weka 使用的模型本质上是其自己源代码(“序列化对象”)的实例。当您尝试使用此方法或RF的原始weka实现时,是否遇到问题?据我所知,Mahout包括一些算法的非Hadoop实现。也许这会为您提供所需的分类器,同时仍使用Hadoop来构建分类器? - kaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接