工具是机器学习的重要组成部分,选择合适的工具与选择最佳算法一样重要。
在这篇文章中,您将仔细研究机器学习工具。了解它们为何重要,以及您可以选择的工具类型。

机器学习工具
图片由 Lachlan Donald 提供,保留部分权利。
为何使用工具
机器学习工具使应用机器学习更快、更容易、更有趣。
- 更快:好的工具可以自动化应用机器学习过程中的每个步骤。这意味着从想法到结果的时间大大缩短。另一种选择是您必须自己从头开始实现每项功能。这可能比选择现成的工具花费更长的时间。
- 更容易:您可以花时间选择好的工具,而不是研究和实现技术。另一种选择是您必须成为过程中每个步骤的专家才能实现它。这需要研究、更深入的练习以理解技术,以及更高水平的工程以确保高效实现。
- 有趣:初学者获得好结果的门槛更低。您可以利用额外的时间获得更好的结果或从事更多项目。另一种选择是您将大部分时间花在构建工具上,而不是获取结果上。
有目的的工具
您不应为了学习和使用机器学习工具而学习和使用它们。它们必须服务于一个强大的目的。
机器学习工具提供您可以在机器学习项目中用于交付结果的功能。当您试图决定是否学习新工具或工具上的新功能时,您可以将其作为筛选条件。您可以提出以下问题:
这如何帮助我在机器学习项目中交付结果?
机器学习工具不仅仅是机器学习算法的实现。它们可以是,但它们也可以提供您在处理机器学习问题的任何步骤中可以使用的功能。
好的工具与优秀的工具
您希望为正在处理的问题使用最好的工具。如何区分好的机器学习工具和优秀的机器学习工具?
- 直观的界面:优秀的机器学习工具为应用机器学习过程的子任务提供直观的界面。界面与任务之间有良好的映射和适用性。
- 最佳实践:优秀的机器学习工具体现了流程、配置和实现方面的最佳实践。例如,机器学习算法的自动配置和内置于工具结构中的良好流程。
- 值得信赖的资源:优秀的机器学习工具维护良好,更新频繁,并拥有一个围绕它的社区。寻找工具周围的活动作为其正在被使用的标志。
何时使用机器学习工具
机器学习工具可以节省您的时间,并帮助您持续在各个项目中交付良好的结果。以下是一些您可以从使用机器学习工具中获得最大好处的示例:
- 入门:当您刚开始时,机器学习工具会引导您快速交付良好的结果,并让您有信心继续进行下一个项目。
- 日常工作:当您需要快速获得问题的良好结果时,机器学习工具可以让您专注于问题的具体细节,而不是您需要用来获得答案的技术深度。
- 项目工作:当您正在处理一个大型项目时,机器学习工具可以帮助您原型化解决方案、找出需求,并为您可能想要实现的系统提供模板。
平台与库
机器学习工具很多。多到一次谷歌搜索可能会让您感到不知所措。
思考机器学习工具的一个有用方法是将它们分为平台和库。平台提供运行项目所需的一切,而库只提供完成项目所需的离散功能或部分。
这并不是一个完美的区分,因为一些机器学习平台也是库,或者一些库提供图形用户界面。然而,这提供了一个很好的比较点,可以区分通用目的工具和特定目的工具。
机器学习平台
机器学习平台提供从头到尾完成机器学习项目的功能。即,一些数据分析、数据准备、建模和算法评估与选择。
机器学习平台的特点是:
- 它们提供机器学习项目中每个步骤所需的功能。
- 界面可以是图形化的、命令行式的、编程式的,或这些的某种组合。
- 它们提供松散耦合的功能,需要您将各个部分整合到您的特定项目中。
- 它们适用于通用用途和探索,而非速度、可伸缩性或准确性。
机器学习平台的例子有:
- WEKA 机器学习工作台.
- R 平台.
- Python SciPy 的子集(例如 Pandas 和 scikit-learn)。
机器学习库
机器学习库提供完成机器学习项目部分功能的能力。例如,一个库可能提供一组建模算法。
机器学习库的特点是
- 它们为机器学习项目中的一个或多个步骤提供特定功能。
- 界面通常是需要编程的应用编程接口。
- 它们专为特定用例、问题类型或环境而设计。
机器学习库的例子有:
- Python 中的 scikit-learn。
- Java 中的 JSAT。
- .NET 中的 Accord Framework
机器学习工具接口
另一种思考机器学习工具的有用方法是根据它们提供的接口。
这可能会令人困惑,因为有些工具提供多种接口。然而,它提供了一个起点,也许是一个区分点,帮助您选择机器学习工具。
以下是一些常见接口的示例。
图形用户界面
机器学习工具提供图形用户界面,包括窗口、点击操作和可视化重点。图形用户界面的优点是:
- 允许技术水平较低的用户进行机器学习操作。
- 侧重于过程以及如何从机器学习技术中获得最大收益。
- 界面对用户施加结构化的流程。
- 更侧重于信息的图形化呈现,例如可视化。
一些具有图形界面的机器学习工具示例包括:
命令行界面
机器学习工具提供命令行界面,包括命令行程序、命令行参数化以及对输入和输出的关注。命令行用户界面的优点是:
- 允许非程序员的技术用户进行机器学习项目。
- 为机器学习项目的特定子任务提供了许多小型、专注的程序或程序模式。
- 以所需的输入和生成的输出的形式框定机器学习任务。
- 通过记录或脚本化命令和命令行参数来促进可重现的结果。
一些带有命令行界面的机器学习工具包括:
如果您喜欢在命令行下工作,请查看这本关于如何在命令行下解决机器学习问题的好书,名为“命令行数据科学:用久经考验的工具面对未来”。
应用程序编程接口
机器学习工具可以提供应用程序编程接口,让您灵活决定使用哪些元素以及如何在自己的程序中精确使用它们。应用程序编程接口的优点是:
- 您可以将机器学习整合到您自己的软件项目中。
- 您可以创建自己的机器学习工具。
- 让您可以在机器学习项目中使用自己的流程和自动化。
- 允许您将自己的方法与库提供的方法结合,并扩展所提供的方法。
一些具有应用程序编程接口的机器学习工具包括:
- Python 的 Pylearn2
- Java 的 Deeplearning4j
- C 语言的 LIBSVM
本地与远程机器学习工具
比较机器学习工具的最后一种方法是考虑工具是本地的还是远程的。
本地工具是您下载、安装并在本地使用的工具,而远程工具则在第三方服务器上运行。
这种区别也可能模糊不清,因为有些工具可以以本地或远程方式运行。此外,如果您是一名优秀的工程师,您可以将几乎任何工具配置为在您自己的服务器上托管的解决方案。
然而,这可能是一个有用的区别,可以帮助您理解和选择机器学习工具。
本地工具
本地工具是在您的本地环境中下载、安装和运行的工具。
- 专为内存数据和算法定制。
- 控制运行配置和参数化。
- 集成到您自己的系统中以满足您的需求。
本地工具的例子包括:
远程工具
远程工具托管在服务器上,并从您的本地环境调用。这些工具通常被称为机器学习即服务 (MLaaS)。
- 专为在更大的数据集上运行而设计。
- 跨多个系统、多个核心和共享内存运行。
- 由于大规模运行所需的修改,算法数量较少。
- 更简单的接口,对运行配置和算法参数化的控制较少。
- 通过远程过程调用集成到您的本地环境中。
远程工具示例
有一些工具可以用来设置您自己的远程解决方案并作为服务集成到您的环境中。示例包括:
- Hadoop 的 Apache Mahout
- Spark 的 MLlib
- PredictionIO
总结
在这篇文章中,您发现了工具在应用机器学习中为何如此重要。
您了解到,如果没有好的机器学习工具,您将不得不从头开始实现所有技术,这需要对技术和高效工程实践的专业知识。
您学习了三种结构化的方式来思考机器学习工具:
- 平台与库
- 图形用户界面与命令行界面与应用程序编程接口
- 本地与远程
您正在使用哪些机器学习工具?
发表评论并分享您目前正在使用的机器工具。
谢谢你!
很高兴能了解有哪些类型的工具可用。
没问题,费萨尔。
工具正在帮助我们进行机器学习
感谢您 mugo 的支持!祝您在机器学习之旅中一切顺利!
一篇写得非常好的综述。谢谢。Ashi
听到这个消息我很高兴,Ashi。谢谢。
感谢这篇非常有趣的帖子。根据您的看法,SQL Server 数据挖掘属于哪个类别?
抱歉,我对 SQL Server 及其数据挖掘功能了解不多。
您好,我是一名计算机科学专业的本科生,刚开始学习机器学习。我应该从哪里开始,应该选择哪些平台?我有一些 Python 基础,并且正在学习机器学习课程。
我最好的入门建议在这里:
https://machinelearning.org.cn/start-here/#getstarted
我认为对于机器学习预测建模入门来说,最适合初学者的平台是 Weka。
https://machinelearning.org.cn/start-here/#weka
这里有大量关于使用 Python 进行机器学习入门的信息:
https://machinelearning.org.cn/start-here/#python
希望这能有所帮助。
请问我在哪里可以获取 Microsoft Word 文档(良性和恶意)数据集?我正在做一个机器学习项目,以确定它是良性还是恶性。
我不知道,抱歉 Vicky。
嗨,Jason,
恭喜,一篇非常好的文章。我想开始学习机器学习,但我不太清楚哪个平台最适合(我能用 Matlab 编程,水平很高,因为我在数学学位期间做了调查研究,所以我想 R 可能最适合我)。
提前感谢🙂
我建议选择一个并加倍努力。
你好,
业界有哪些不同的模型文件类型可用?例如 SAS、SPSS、PMML。
我不知道。CSV 很常见。
嗨 Jason,感谢您撰写关于机器学习的文章,以及您的时间。我看到这篇文章写于2015年,3年后的2018年,许多工具/库已经过时,许多新工具/库出现。希望这些文章也能有 GitHub 版本 :-)。
这篇文章过时了吗?
谢谢,这些建议仍然普遍适用。
你具体想做什么?
嗨,Jason,
我是一名编程语言初学者,但对学习机器语言非常感兴趣。那么我应该从哪里开始呢?有没有可用于构建新想法的静态工具?
你可以从 Weka 开始,因为它不需要编程。
https://machinelearning.org.cn/start-here/#weka
嗨,Jason,
很棒的网站,很高兴我找到了它。我开始尝试使用一些工具(主要是 Orange 和 Weka)。起初我卡在后者上,但多亏了您的一篇文章,我学到了基础知识,我不得不承认我发现它非常有用,并且我愿意探索您提供的所有关于这个工具的教程。您专注于这个平台是否有特殊原因(除了路径依赖)?
除此之外,我快速搜索了一下,没有找到关于机器学习硬件/计算机/操作系统平台的文章。尽管有很多文章涉及这个主题,但我认为让您的读者了解您的看法会很有帮助。
再次感谢!
也许这会有帮助
https://machinelearning.org.cn/computer-hardware-for-machine-learning/
嗨,Jason,
首先恭喜您创作了数千篇博客,感谢您提供了如此清晰的解释。每次我搜索问题时,您的博客都会出现在前 5 条推荐中。您写得非常好。
这篇文章很有意义。但我想问些别的问题。我已开始在 Azure 机器学习上工作,我使用分类数据集创建了多标签决策森林分类器模型,它确实很好,但现在我正在寻找一些技巧或预定义模块,可以为每个测试数据的目标值提供“特征重要性”。“置换特征重要性”确实给出了完整测试数据集的特征重要性值,但我想要针对单个测试数据行的。
这样做的原因是,我想向用户展示他的每次输入,哪些字段的输入对预测结果贡献最大。
我在很多地方都提出了这个问题,但没有得到任何积极的回复,希望我能在这里得到答案。
谢谢
谢谢!
也许你可以测试特征选择方法
https://machinelearning.org.cn/an-introduction-to-feature-selection/
Jason,
您的网站/博客非常棒。解释得非常清晰直观。恭喜。
谢谢!