使用R进行机器学习

Jason Brownlee

[http://machinelearningmastery.com/use-r-for-machine-learning/]

应该用R做机器学习。

R是最强大的机器学习平台之一,并且被世界上顶级的数据科学家使用。

在这篇文章中你将会学到为什么应该用R做机器学习。

为什么应该关注R

R被世界上最好的数据科学家使用。Kaggle的调查(Kaggle是一个机器学习比赛平台)中,R到目前为止都是最多人使用的机器学习工具。2015年一项对专业机器学习从业人员的调查中,R仍然是最流行的工具。

R的强大来自于它所提供技术的广度。你能想到任何有关数据分析、可视化、抽样、监督性学习和模型评估的方法都可以在R中找到。

由于被学界使用,R是最先进的。R有如此多方法的原因之一是由于开发新算法的科研人员使用R进行开发,并将算法发布为R包。这意味着在R上可以比其他平台更快地接触到新技术,也意味着除非有人将这些算法移植到其他平台,否则只能在R中使用它们。

R是免费的开源软件。你现在就可以免费下载它,并且在任何平台上运行。

被说服了吗?

那么R是什么?

R是一种语言,一个解释器和平台。

R是一种计算机语言。它学习起来有些困难,但是如果用过Python,Ruby或BASH这样的脚本语言,你很快就能理解R,因为它们很相似。

R是一个解释器。你可以写脚本并保存为文件。就像其他脚本语言,然后在任何时候都可以使用解释器运行脚本。R也提供一个REPL环境,可以输入命令并立刻看到结果。

R也是一个平台。你可以使用它创建并显示图形,保存和加载状态以及同其他系统交互。如果愿意,也可以在REPL环境中完成所有探索和开发工作。

力量在包中

R的强大在于它的包。

R本身很简单,它提供内建命令,用于基础统计和数据处理。R的机器学习功能来自第三方包。包是R平台的插件。可以在R环境中搜索、下载和安装它们。

由于包是第三方创建的,它们的质量参差不齐,最好能找到提供你所需特定方法的最佳包组合。包以函数帮助的形式提供文档,通常也会在vignette中简要演示使用方法。

在写下一行代码之前,总是搜索看看是否有一个包能够完成你所需要的。

可以在CRAN上搜索R包。

如何用R做机器学习?

R平台并不适合所有类型的机器学习项目,它最好被用在探索和构建一次性模型上。

交互式探索环境

R交互式环境对探索和学习如何使用包与函数非常有用。在动手开始时应该在交互式环境中花费较多时间。

该环境在探索一个新问题时同样很好用。不是对问题的系统化处理,而更多是what-if场景。

如果想要使用一个系统化过程,或者无需完整繁琐工作快速得出一个原型模型时,R也表现的很棒。

R-Interactive-Environment-e1451606068492

可以通过在命令行输入R启动交互式环境。输入help(function_name)可以获取任何函数的帮助。调用退出函数q()可以关闭交互式环境。

为一次性模型使用脚本

我推荐在遇到机器学习项目时开发脚本。

项目中的每个人物可以用一个新脚本描述,脚本能够在版本控制中记录、更新和追踪。

R脚本能够从命令行运行,在shell脚本和(我个人最爱的)Makefile中的目标调用。

例如,这里是如何从命令行、shell脚本或make文件中调用可执行R从而运行脚本的:

R CMD BATCH your_script.R your_script.log

这行命令使用batch模式的R(非交互的)运行your_script.R,并将脚本的任何结果保存在your_script.log文件中。

并非为了生产

R或许不是构建生产模型的最佳解决方案。

这些方法可能是最先进的,但是并没有使用最佳软件工程原则,也没有经过测试,对你可能需要处理的不同大小数据集来说不够弹性化。

这也是说,R或许是找到生产中实际使用哪个模型的最佳解决方案。

形势正在变化,人们也写用于业务运行的R脚本,并且支持更大数据集的服务正在出现。

使用R的基本技巧

下面是为大多数R机器学习准备的技巧:

  • 坚持基本的R。不要编写函数和重要的代码,直到你已经熟悉了环境。坚持调用包中的函数。
  • 从帮助和vignette中学习。包带有函数文档和vignette形式的帮助,为你提供了使用信息。如果有疑问,用你最喜欢的搜索引擎搜索包,找到它在CRAN上的主页,运行vignette中的示例可以教会你函数的预期用法。
  • 表格数据。因为R由统计学家为统计学家构建,它适合表格数据,例如工作表中可以看到的数据矩阵。
  • 小数据。R更适合较小的数据集,例如数万或数十万行,而不是数百万。
  • 不要编程。关注包和函数以及如何更好的使用它们。我不推荐学习“如何用R编程”,除非你想要创建自己的包。

你可以为机器学习使用R

你不需要成为一名R程序员。如果你了解如何用另一种编程语言,例如Java,C#,JavaScript或Python,那么可以使用R。你将会快速上手语法。

你不需要成为一名优秀的程序员。擅长使用R并不意味着成为一名好程序员,而意味着了解使用哪个包和如何更好使用它们。阅读包并实践使用。不要学习如何在R中更好地编程,那是浪费时间。

你不需要成为一名机器学习专家。这里有数百个机器学习包和数千种方法可以使用。用一些时间阅读文档和实践。

总结

在这篇文章中,你会发现应当用R进行机器学习。

它是被全世界专业人士和优秀数据科学家最广泛使用的机器学习平台之一。

你也会发现R的最佳点:

  • 在交互式环境中将R用于探索和原型
  • 通过写脚本将R用于开发一次性模型

下一步

你想用R进行机器学习吗?

现在就开始!

  • 下载R
  • 安装R
  • 在R中构建你的第一个分类器