工具是机器学习的一个重要部分,选择合适的工具和选择最佳算法一样的重要。
在这篇博文里,你会近距离观察机器学习工具,发现为什么它们是重要的以及你能选择的工具种类。
为什么使用工具
机器学习工具能更快、更容易以及更加有趣的应用机器学习。
- 更快:机器学习分成若干步骤,好的工具使每步自动化操作,意思是从观点到结果实现是极其短的。另外一个方法是你不得不自己从头实现这个功能,需要比使用现成的花费更多的时间。
- 更早:你能花时间选择好的工具,而不是研究实现某种技术。另外一个方法是你不得不是每个步骤中相关技术的专家。但这需要研究以及更深入的训练,目的理解这种技术以及更有效的实现它。
- 更有趣:对于初学者这是一个低难度的并能得到好的结论。你能使用额外的时间获得更好的结果或者参加更多项目。另外的选择是你花费大部分时间建立你的工具而不是得到结果。
带着目的的工具
你不想学习以及使用机器学习工具为了工具本身的目的,它们必须具有强烈的目的性。
机器学习工具提供了一些功能,你能使用这些功能在机器学习项目中展示结果,当你决定是否学习一个新工具时,你能使用这个作为一个滤波器,你能问这样的问题:
在机器学习的项目中,这个工具给我展示怎样的结果?
机器学习工具不只是实现了机器学习算法,他们也提供了某些功能,这些功能可以出现在机器学习过程中任何步骤中。
好工具 VS 极好工具
你想使用最好的工具来解决你手头上的问题,怎样区分好的机器学习工具以及极好的机器学习工具?
- 直观的接口:极好的机器学习工具提供一个直观的接口,这个接口映射到机器学习过程中的一个子任务上。
- 最佳做法:极好的机器学习工具在过程、配置以及实现上具有最佳的做法。包括自动配置机器学习算法以及好的过程内嵌到工具结构中。
- 可信任的资源:极好的机器学习工具应该被维护、经常被更新以及有一个社区来维护它。
什么时候该使用机器学习工具
机器学习工具节省你的时间并稳定地帮助你呈现出好的结果,什么时候你可以从机器学习工具中得到最大的利益,下面是一些例子:
- 开始:刚开始机器学习工具,它引导你整个过程并很快呈现出很好的结果的时候,并给你信心继续进行下个项目。
- 日常:你需要很快得到关于一个问题的结论,机器学习工具能允许你只关注问题的细节,而不是聚焦到你所利用的技术专业上。
- 项目工作:你工作在一个大型项目中,机器学习工具能帮助你标准化一个解决方案,理解需求并给你一个系统化的模板,你可以照着实现。
平台(Platforms) VS 库(Libraries)
有许多机器学习工具,google搜索一下足够让你感觉手足无措。
思考机器学习工具的一个有用的方法是,把机器学习工具分成Platforms和Libraries两类。platforms提供你机器学习过程中所需要的一切,然而libraries只是提供离散的一些功能,或者说你所需要完成项目的部分功能。
这不是完美的区分,因为一些机器学习平台也提供图像化用户接口的库,然而这提供了一个好的点,帮助比较指定目标工具与大类目标工具的不同。
机器学习平台(Machine Learning Platform)
机器学习平台提供给我们完成机器学习项目从开始到结束所有的功能,即一些数据分析、数据预处理、建模、算法评估以及选择。
机器学习平台的特点:
- 它们提供机器学习项目中每个步骤所需的功能。
- 接口可以是图形化的、命令行以及可编程的或者是它们的结合。
- 他们具有解耦合的特点,需要你根据你的项目把一些零件组合起来。
- 它们被创造出来为通用目的,而不是为了速度、可扩展性或者精度。
机器学习平台有:
- WEKA Machine Learning Workbench.
- R Platform.
- Subset of the Python SciPy (e.g. Pandas and scikit-learn)
机器学习库(Machine Learning Library)
机器学习库提供了机器学习项目部分的功能,例如,一个库可以提供建模算法的集合。
机器学习库的特点:
- 为机器学习项目一个或者多个步骤提供一个指定的功能。
- 典型的接口是一个应用编程接口。
- 它们为一个指定使用案例、问题类型或者环境所定制的。
机器学习库有:
- scikit-learn in Python.
- JSAT in Java.
- Accord Framework in .NET.
机器学习工具接口
思考机器学习工具另一个方法是它们所提供的接口。
这个可能产生迷惑,因为一些工具提供多种接口,然而,它提供了一个开启点,这个不同点帮助你选择一个机器学习工具。
下面是一些普遍的接口。
图形化用户接口
机器学习工具提供一个图像化的用户接口,包括窗口、点、点击以及聚焦可视化。图形化用户结果的好处:
- 允许技术差的用户为机器学习项目工作。
- 聚焦过程并且从机器学习技术中怎样得到更多。
- 结构化的过程施加于用户接口上。
- 更强的聚焦于信息的图形化表示,例如,可视化。
图形化的机器学习工具接口有:
命令行接口
机器学习工具提供一个命令行接口,包括命令行程序、命令行参数以及聚焦输入输出,命令行用户接口的好处:
- 允许技术用户但不是程序员为机器学习项目工作。
- 为机器学习项目指定子任务,提供许多小的且集中的程序或者程序模式。
- 通过脚本命令和命令行参数提高可复写的结果。
命令行接口的机器学习工具有:
如果你喜欢使用命令行工作,下面这本书是极好的,“Data Science at the Command Line: Facing the Future with Time-Tested Tools”.
应用编程接口
机器学习工具提供一个应用编程接口,让你灵活决定在你的程序里使用什么元素,怎样使用它们,应用编程接口的好处:
- 你能把机器学习合并到你自己的软件项目中。
- 你能创建你自己的机器学习工具。
- 让你在机器学习项目中灵活使用你自己的处理方式。
- 允许你把自己的方式和所提供的库相结合。
应用编程接口的机器学习工具有:
- Pylearn2 for Python
- Deeplearning4j for Java
- LIBSVM for C
本地机器学习工具 VS 远程机器学习工具
最后一个比较机器学习工具的方法是考虑是否这个工具是本地的还是远程的。
本地工具是你能下载、安装并且在本地使用,而远程工具是在第三方服务器上运行。
这个区别也是模糊的,因为一些工具能运行在本地也能运行在远程的方式,如果你是个好的工程师,你能在服务器上配置几乎任何工具。
然而,这是一个有用的区别,帮助你理解和选择一个机器学习工具。
本地工具
本地工具是要被下载、安装并且运行在你的本地环境中。
- 本地工具为内存数据和算法特别设计。
- 本地工具控制运行配置和参数。
- 为了满足你的需要,本地工具可以整合到你自己的系统中。
本地工具有:
- Shogun Library for C++
- GoLearn for Go
远程工具
远程工具被托管在一个服务器上,并被本地环境所调用,这些工具常被称为as Machine Learning as a Service(MLaaS)。
- 为大型数据集尺度所运行而设计。
- 跨多系统、多核心以及共享内存运行。
- 更少的算法,因为修改需要在大规模数据下运行。
- 更简单的接口,提供更少的控制配置以及算法的参数。
- 通过远程过程调用集成到您的本地环境。
远程工具有:
有一些工具,你可以使用安装自己的远程解决方案,并作为一个服务集成到你的自己的环境中:
- Apache Mahout for Hadoop
- MLlib for Spark
- PredictionIO
总结
在这篇博客中,你发现了为什么工具在机器学习中是那么的重要。
你学到,如果没有好的机器学习工具,你不得不从头实现所有技术,这需要你在这个领域有专业知识以及有效的工程训练。
你学到思考机器学习工具的3个结构化方法:
- 平台 VS 库
- 图像化用户接口 VS 命令行接口 VS 应用程序接口
- 本地 VS 远程
你使用什么机器学习工具?
留下评论并分享你所使用的机器学习工具。