机器学习任务:使用什么工具?

6
我目前正在尝试进行监督训练分类模型的机器学习任务。到目前为止,我有大约5M个训练样本和5M个交叉验证样本。每个样本目前有46个特征,但是我可能会在不久的将来生成10个以上的特征,因此任何解决方案都应该留出改进的余地。
我的问题是:我应该使用什么工具来解决这个问题?我想使用随机森林或SVM,但我担心后者在我的情况下速度太慢。我考虑过Mahout,但因为它需要一定量的配置并涉及命令行脚本而放弃了。我宁愿直接针对某个(文档良好的!)库编写代码或使用GUI定义我的模型。
我还应该说明的是,我正在寻找适用于Windows的解决方案(不需要像cygwin这样的东西),并且与.NET兼容的解决方案非常受欢迎。
你可以想象,当时间到来时,代码将在Amazon EC2Cluster Compute Eight Extra Large Instance上运行,因此任何广泛使用RAM和多核CPU的内容都是受欢迎的。
最后但并非最不重要的一点是,我需要指出我的数据集是密集型的(即没有缺失值/每个向量的所有列都有一个值)。

1
有无数的工具可用(作为一个开始,可以查看KDnuggets上的软件列表:http://www.kdnuggets.com/software/index.html)虽然你的问题描述消除了其中一些,但还有很多可以满足你的需求。我不确定你所说的“与.NET兼容性好”是什么意思,但任何值得使用的工具都应该提供模型的报告或源代码,这些代码可以轻松地转换成.NET代码。 - Predictor
谢谢提供链接,我写完这个之后会立刻查看。关于与.NET的兼容性良好,这意味着具有可编程接口来启动任务或者是一个.NET库(或可用的包装器)比不具备这些功能的更可取。 - em70
2个回答

3
我经常在EC2上使用R运行类似的行/特征计数数据集(你提到的16核/60 Gb实例类型特别适用于使用可以利用多个CPU的方法,如包caret)。正如你所提到的,不是所有学习方法(如SVM)都能在这样的数据集上表现良好。
在切换到完整数据集之前,您可能需要考虑使用10%左右的样本进行快速原型设计/性能基准测试。
如果您想要极高的性能,则Vowpal Wabbit更适合(但它仅支持广义线性学习器,因此没有gbmRandom Forest)。此外,VW在Windows上并不友好。

2
我建议您查看随机梯度下降算法来解决这个规模的问题。一个好的工具是VowpalWabbit。在这个规模下,您可能可以在配置合理的台式机上运行实验。我认为唯一的缺点是它不是Windows专用的,但是虽然我没有检查过,但应该可以在cygwin上运行。
编辑:开发人员对让VowpalWabbit在Windows上运行产生了极大的兴趣。截至2013年3月,VowpalWabbit(版本7.2)可以直接在Windows上运行。有几个高级/可选功能在Windows上尚未实现,其中之一是将VowpalWabbit作为守护程序运行,但似乎这将在短期内得到解决。

1
为什么选择这个特定的工具?有数十个候选者:是什么让它脱颖而出? - Predictor
1
@Predictor,那是我使用的工具,也是我有经验并取得良好结果的工具。此外,就个人而言,我是第一个提到他需要的技术工具(随机梯度下降法)。同时,我也是第一个提到他可以在自己的笔记本电脑上处理那么大规模的数据,不需要使用 EC2 集群。 - carlosdc
我看到这个答案已经大约1.5年了。vowpal wabbit已经被移植到Windows上,版本7.x在Windows上应该可以很好地构建。 - arielf
@arielf:我稍微编辑了一下答案。据我所知,那是目前的状态。 - carlosdc

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