机器学习专家在现实世界中使用什么工具?

机器算法验证 机器学习 matlab 大数据 软件
2022-04-20 21:25:58

我目前正在上一门涵盖机器学习一些主题的课程。到目前为止,该课程是在 MATLAB 中使用 Liblinear 教授的。我很好奇人们在现实世界中使用什么样的工具来解决这些问题。正如我现在所学的那样,MATLAB 非常适合让你上手,但它在性能、可扩展性和可维护性方面严重不足。它主要是商业软件吗?人们是否每次都从头开始重写他们的 SVM(怀疑)?

另外,人们使用什么语言?MATLAB 似乎在研究界很受欢迎,但 Python 的支持似乎也在增长。人们在说谷歌或 Facebook 使用什么?都是高度优化的封闭源代码吗?

3个回答

MATLAB 主要是为工程问题中的优化和数学模拟而开发的。但是,在定制能力方面,它在机器学习、优化等方面存在性能问题。

随着时间的推移,大多数统计分析/机器学习已经转移到 R 和 Python,因为社区活跃,几乎可以开发任何复杂的算法。您不必从头开始为 SVM 或神经网络编写代码,除非您真的想更改算法本身,这也是可能的,这也是 Google 和 Facebook 内部所做的。

因此,如果您想出于学习目的尝试机器学习,WEKA、R 和 Python 可以胜任。但是如果你真的想开发一些基于这些算法的数据分析产品,Python 和 R 是你要走的路。不过,R 有一个陡峭的学习曲线。

WEKA 之所以流行是因为在行业早期,因为大多数分析从业者都来自 IT(信息技术)背景,因此对 JAVA 很满意,但随着时间的推移,数学家和计算机科学家已经转向 R 和 Python。

如果规模不是问题,那么您可能已经知道的任何解决方案都可以。这更多是个人和公司选择的问题(成本/遗留问题)。因此,使用 R 或 MATLAB、Python 或 Java、Weka 或 Rapidminer、开源工具或专有代码并不重要。然而,像你提到的那些大玩家必须处理规模问题。

如果规模是问题,那么显然您不能部署任何复杂度高于的花哨算法,例如对偶或 kNN 中的 SVM 或许多其他算法。更重要的是,您必须使用在分布式环境中工作的算法和实现:数据分散在多台机器上,机器之间允许有限的通信。显而易见的选择是基于随机梯度下降的算法,例如 Vowpal Wabbit(在 Yahoo! 实验室创建)。您还拥有在 Hadoop(Google 开发的 Map/Reduce 框架的免费版本)之上运行的库,例如 Mahout。O(n)

大数据环境中的问题和挑战是无限的。例如,一个常见的假设是您尝试学习的模型将存在于一台机器中,这很好,直到您开始让数百台服务器在生产环境中读取和更新相同的模型。您可以查找来自 Yahoo!、Google、Facebook 和其他公司的 NIPS 和 ICML 的论文和视频讲座,他们在其中讨论他们处理的类似问题和他们部署的解决方案(搜索可伸缩性)。w

MATLAB 是一个很棒的工具。然而,对于机器学习模拟,人们对 R 越来越感兴趣。R 正在成为机器学习、数据挖掘、统计建模(等)任务的绝佳平台。R 拥有丰富的统计建模软件包。

随着大数据的出现,R 获得了积极的优势。如果您需要对大型和分布式数据集执行计算,那么 R 是一个很好的工具。R 已经为 Hadoop 和 Spark 提供了集成 API。

谈论生产系统和现实生活中的智能软件产品可以使用 R 创建。在此类产品中,您可以使用多种技术。就像如果您需要创建一个企业分析应用程序,那么您可以在 JAVA 中编写应用程序的核心逻辑,并使用 R 进行统计和建模方面。以下文章很好地解释了如何将 R 与 Java 集成:

R 教程:如何使用 Rserve 将 R 与 Java 集成

R 教程:如何使用 rJava 将 R 与 Java 集成

所以其他环境也很棒,但 R 正在与它们相提并论。

我希望这会有所帮助。