开放源代码与商业机器学习软件的对比

154 阅读6分钟

在任何机器学习项目的开始,你都会面临一个重要的选择。我应该使用哪种语言或软件?

嗯,你有很多选择。

Python、R、SAS、MATLAB......这个名单还在继续。但首先,你实际上需要做出另一个选择:我应该使用开放源码还是商业软件?

开源代码是 "免费提供的,可以重新分发和修改"。社区支持这些代码。另一方面,商业软件是由一家公司开发和维护的。

在本指南中,我们将比较机器学习的开源和商业选项,然后探索混合选项。

开源的优势

Python和R是具有丰富开源生态系统的编程语言。

举例来说。 Python有Scikit Learn,一个强大的通用框架,可以运行分类、回归、聚类和其他开箱即用的任务。Python也有用于深度学习和NLP的专门软件包,如TensorFlow、Theano和Keras。

R剑桥大学也有用于机器学习的成熟软件包。它们包括特定的任务,如randomForest(用于分类和回归的随机森林),以及caret,一个通用的框架,可以与许多其他包对接。

开源软件有几个关键优势。

更多的眼睛=更快的错误修复

在Github上快速浏览这些软件包中的任何一个,都会发现有数以百计的贡献者提交了数以千计的内容。

Scikit-Learn Github

因为它们可以免费使用和定制,开源软件往往会吸引巨大的社区。这意味着有更多的人去改进它,并在它坏了的时候修复它。

常见问题的答案

大型社区对常见的问题有很大的支持。StackOverflow将是你调试应用程序的最宝贵的资源之一。

搜索StackOverflow的一个方法是通过标签,例如通过 "scikit-learn"。

Scikit-Learn Stackoverflow

正如你所看到的,你会找到数百个常见问题的答案。

在调试时,你可以使用的另一种技术将更有帮助,那就是在谷歌上进行简单的搜索 "stackoverflow { paste your error message }",这将帮助你准确地找到解决方案。

Google Stackoverflow

在StackOverflow和Github讨论之间,你应该能够克服你遇到的大多数路障。

更广泛的采用=更容易雇用

开源的另一个很好的理由是用于招聘和雇用。由于它们的普及,通常更容易招募到有经验的团队成员。

商业的优势

MATLAB和SAS是分别由MathWorks和SAS研究所支持的商业软件。

MATLAB猎头公司提供了一个经典ML算法的工具箱,如逻辑回归和SVM,但它也支持高级任务,如深度学习和云计算。

同样,SAS 也提供用于机器学习和数据挖掘的Enterprise Miner工具。Enterprise Miner也是可扩展的,能够部署到云端。

商业软件也有各自的优势。

专门的支持

当StackOverflow不够用时,团队可以直接从软件供应商那里获得支持。项目越是专业,这种支持就越重要,尤其是在最后期限或低误差的情况下。

此外,商业供应商会提供设置支持,并将他们的软件整合到你现有的技术栈中。

MATLAB interface

因此,商业软件包在关键任务的企业应用中很受欢迎。

维护和版本控制

商业解决方案通常提供维护和向后兼容性(代码版本之间的衔接)。

虽然开源软件可以被分叉和定制,但你有责任进行适当的版本控制。对于已经在使用一系列模块和工具的团队来说,这可能是很乏味的。

此外,开源项目是根据用户的建议和补丁不断发展的,这就把更多的维护费用转嫁给了你。

标准化的模块和功能

MATLAB和SAS提供了定义明确且易于实施的标准化模块。

您不需要为了完成您的项目而去寻找、安装和粘连不同的软件包。

相反,你可以期待最新的算法、数据预处理方法和模型部署选项开箱即用。

SAS Interface

对于有许多移动部件和大型代码库的企业级应用来说,有一个商业伙伴可以减轻你肩上的一些负担。

你可以两者兼得吗?

那么,你应该为你的项目选择开放源码还是商业软件?

首先,这取决于你的项目的规模和你的团队的需求。我们稍后会说到我们的建议,但首先,让我们讨论一下第三个选择。

有商业支持的开源软件将开源的可定制性和社区与商业伙伴的专门支持相结合。

这些混合选项适合于那些既想获得开源软件包的灵活性,又需要为关键任务应用提供支持的团队。

RStudio和ActiveState分别是R和Python的绝佳例子。

RStudio 是RStudio集成开发环境背后的公司,但他们也提供支持、服务和工具来保障和扩展R项目。例如,他们的商业许可允许你并排运行多个版本的R,并并行运行多个分析。

活跃状态是ActivePython背后的公司,这是一个商业级的Python发行版。ActiveState提供专门的支持,安全和许可审查,以及版本控制。

ActivePython也有预编译的机器学习包,如Theano、TensorFlow和Keras。自己安装这些包可能会很麻烦(例如,更新你的C++编译器,检查所有的依赖关系等)。

你可以在这里下载ActivePython的免费社区版本

我们的建议

显然,你选择的软件将取决于你的团队的需求。从纯功能的角度来看,你可以在本指南中列出的任何一个选项中找到大多数常见的ML任务。

对于较小的项目,特别是一个人或简单的项目,开源软件是完美的。例如,如果一个副业项目下线几个小时,这并不是世界末日。

对于关键任务的应用--分析团队、产品团队、初创企业等。- 有了专门的支持、版本和法律合规的额外安全网,你可能会睡得更香。

一般来说,对于大多数人来说,从开源软件开始是有意义的,因为它们有庞大而活跃的社区。对于ML,我们推荐Python,因为它也是一种通用的编程语言,可以更容易地与数据管道和终端用户的应用程序集成。

然后,当你的项目开始扩展到更多的数据或用户时,你可以选择收购一个商业合作伙伴。你将能够卸载你的一些支持和维护需求。这种混合方法将使你能够利用一个庞大的开源社区,同时也能获得一对一的专门支持。