实践中的机器学习:自己编写算法还是使用 Weka?
Posted
技术标签:
【中文标题】实践中的机器学习:自己编写算法还是使用 Weka?【英文标题】:Machine Learning in practice: Writing algorithms yourself or using Weka? 【发布时间】:2013-08-13 09:30:07 【问题描述】:我问自己一个问题,大多数人是否通常自己编写机器学习算法,或者他们是否可能使用现有的解决方案,如 Weka 或 R 包。
当然,这取决于问题 - 但假设我想使用像神经网络这样的通用解决方案。还有理由自己编码吗?更好地理解机制并适应它?还是标准化解决方案的想法更重要?
【问题讨论】:
这个问题可能太离题了,无法回答。我的建议是问问自己,你是想构建一些东西还是想学习一些东西。如果更多是后者,请自己编写代码。 @DuckMaestro2:我会在这两件事上学到一些东西。我将使用这两种技术构建一些东西。两者都涉及到编写代码,当然自己实现一个算法需要更多的编码。关于哪个话题是题外话? 【参考方案1】:这对 *** 来说不是一个好问题。这是一个意见问题,而不是编程问题。
不过,这是我的看法:
这取决于你想做什么。
如果您想找出最适合您手头数据问题的算法,请尝试 ELKI、Weka、R、Matlab、SciPy 等。尝试所有你能找到的算法,并花更多的时间来预处理你的数据。
如果您知道自己需要哪种算法并且需要将其投入生产,那么其中许多工具的性能将不够好或不够容易集成。相反,请检查您是否可以找到提供所需功能的低级库,例如 libSVM。如果这些不存在,请滚动您自己的优化代码。
如果您想在该领域进行研究,最好扩展现有工具。 ELKI 和 Weka 具有 API,您可以插入这些 API 以提供扩展。 R 并没有真正的 API(CRAN 它是一团糟......),但人们只是将他们的代码转储到某个地方并(希望)添加一个手册如何使用它。扩展这些框架可以为您节省大量工作:您可以使用比较方法,并且可以重用它们的大量代码。例如,ELKI 有很多索引结构来加速算法。大多数时候,索引加速比实际算法更难编写。因此,如果您可以重用现有索引,这也将使您的算法更快(并且您还将受益于这些框架的未来增强功能)。
如果您想了解现有算法,您最好自己实现它们。您会惊讶地发现,优化某些算法比课堂上教的要多得多。例如。先验的。基本思想非常简单。但是把所有的修剪细节都做好了,我说 20 个学生中有 1 个得到了这些细节。如果您实现 APRIORI,然后将其与已知的良好实现进行基准比较,并尝试了解为什么您的实现要慢得多,那么您实际上会发现算法的微妙细节。看到 ELKI、R、Weka 等之间存在 100 倍的性能差异,请不要感到惊讶——它仍然可以是相同的算法,只是在实际使用的数据结构、内存布局等方面或多或少地有效实现。
【讨论】:
感谢您指出这一点,尽管 *** 并不是 100% 的。我自己很难开始机器学习,因此很有帮助。 有一些hints in the help section on good and bad questions. 总的来说,投票、聊天和意见问题对 QA 网站不起作用,但应该去聊天或讨论论坛。涉及具有特定问题的小代码摘录的问题通常很好。以上是关于实践中的机器学习:自己编写算法还是使用 Weka?的主要内容,如果未能解决你的问题,请参考以下文章