机器学习在实践中:自己编写算法还是使用Weka?

时间:2013-08-12 06:27:50

标签: machine-learning data-mining weka data-analysis

我问自己一个问题,大多数人是否通常自己编写机器学习算法,或者他们是否可能使用现有的解决方案,如Weka或R包。

当然这取决于问题 - 但是我想说我想使用像神经网络这样的通用解决方案。还有理由自己编码吗?更好地理解机制并适应它?或者标准化解决方案的思想更重要?

1 个答案:

答案 0 :(得分:10)

这对Stackoverflow来说不是一个好问题。这是一个意见问题,而不是编程问题。

然而,这是我的看法:

这取决于您想要做什么。

  • 如果您想找到哪种算法最适合您的数据,请尝试使用ELKI,Weka,R,Matlab,SciPy等等。尝试所有可以找到的算法,并花费更多时间来预处理数据。

  • 如果您知道需要哪种算法并且需要将其投入生产,那么许多这些工具的性能都不够好或者很容易集成。相反,请检查是否可以找到提供所需功能的低级库,例如libSVM。如果这些不存在,请滚动您自己的优化代码。

  • 如果您想在此域中进行研究,您最好扩展现有工具。 ELKI和Weka拥有可插入的API以提供扩展。 R没有真正的API(CRAN它是一团糟......)但人们只是将代码转储到某处(希望)添加手册如何使用它。扩展这些框架可以节省大量的工作:您可以使用比较方法,并且可以重复使用大量代码。例如,ELKI有很多索引结构来加速算法。大多数情况下,索引加速比实际算法更难写。因此,如果您可以重用现有索引,这将使您的算法更快(并且您也将从这些框架的未来增强中受益)。

  • 如果您想了解现有算法,您最好自己实施。你会惊讶地发现,优化某些算法的能力远远超过课堂教学。例如。 APRIORI。基本思路很简单。但是,正确地说明所有的修剪细节,我说20名学生中有1名获得了这些细节。如果你实现APRIORI,那么将它与一个已知良好的实现进行基准测试,并尝试理解为什么你的速度慢得多,那么你实际上会发现算法的微妙细节。并且不要惊讶地看到ELKI,R,Weka等之间的性能差异为100倍 - 它仍然可以是相同的算法,只是在实际使用的数据结构,内存布局等方面或多或少地实现了。