实践中的机器学习:自己编写算法还是使用 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?的主要内容,如果未能解决你的问题,请参考以下文章

数据挖掘与机器学习——weka应用技术与实践

Android学习必备--java工具15个

机器学习中使用的“相对绝对误差”和“根相对平方误差”的公式(由 Weka 计算)

如何使用 libsvm 格式的数据集构建机器学习模型

如何为机器学习和预测构建良好的训练数据集?

weka 中的机器学习分类和预测