如何使用R进行机器学习

Jason Brownlee

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

R有很多包,哪个最适合用于你的机器学习项目?

在这篇文章中你将会找到为机器学习旅程中每个子任务推荐的R函数和包。

这很有用,保存这篇文章,我保证你会再次查看它。

如果你是R用户并且知道更好的方法,在评论中分享吧。

R有超过6000个第三方包。大量可用软件包是R平台的好处之一,但也是个挫败之处。

你应该用哪个包?

有一些特定的任务是需要作为机器学习项目的一部分执行的,例如加载数据、评估算法和改善准确性。每个任务都可以使用多种方法,并且可能有多个包都提供了这些方法。

考虑到有这么多不同方法完成同一个子任务,你需要从这些函数和包中找到最符合需求的。

把同类最佳的包映射到项目任务

解决这个问题的方法是创建一个机器学习项目工作中可能遇到的所有子任务到可以使用的最佳包和函数的映射。

从列出机器学习项目中所有子任务开始。可以仔细读一下process of applied machine learningmachine learning project checklist两篇文章。

由于R是一种统计语言,它提供了许多用于数据分析及预测模型的工具,可以用来训练并生成预测。

使用最喜欢的搜索引擎,你可以找到完成每个任务的所有包与其中的函数。这样详尽无遗,你也可以在不同候选解决方案处结束。

你需要把每个选项列表削减到完成某个任务最好的一个。可以实验每一个,看看它们如何工作;也可以仔细检查搜索结果,梳理出在其他人中最流行的函数。

下面是一个从R包和函数到机器学习项目任务的映射,有了它,你今天就可以开始使用R进行机器学习。

如何在机器学习项目中使用R

这一节列出了通用机器学习项目中很多主要的子任务。每个人物列出了R中可以完成任务的特定函数和父包。

选中函数的一些特性如下:

  • 最低限度:该列表是最低限度的,只有项目中的机器学习任务和可以使用的函数名与包名。实际使用列出的每个函数都需要更多的功课。
  • 简单:函数出于简单性被选择,传递任务的直接结果。单个函数优于多个函数调用。
  • 偏好:函数选择基于我的偏好和最佳估计,其他人可能有不同的选项。

任务被分成三个宽泛的组:

  1. 为建模进行的数据准备任务
  2. 为比较和评估预测模型算法的评估算法任务
  3. 为得到更多更好执行的算法的改进结果任务

1.数据准备任务

数据加载

从文件中加载一个数据集:

  • CSV:read.csv函数,来自utils包

数据清洗

清洗一个数据集以确保数据的合理和一致性,为分析和建模做准备。

  • 填充:impute,来自Hmisc包
  • 离群值:来自outliers包的各种函数
  • 重新平衡:SMOTE函数,来自DMwR包

数据汇总

使用描述性统计汇总一个数据集。

  • 汇总分布:summary,来自base包
  • 汇总相关系数:cor函数,来自stats包

数据可视化

可视地汇总一个数据集。

  • 散点图矩阵:pairs函数,来自graphics包
  • 直方图:hist函数,来自graphics包
  • 密度图:densityplot函数,来自lattice包
  • 箱线图:boxplot函数,来自graphics包

荣誉提名:

  • ggpairs函数,来自GGally包,可以在一个图中完成所有的一切。
  • ggplot2和lattice包,在绘图方面通常非常棒。

特征选择

选择数据集里与构建预测模型最相关的那些特征。

  • RFE:rfe函数,来自caret包
  • 相关:findCorrelation函数,来自caret包

caret包提供了一整套特征选择方法,参见评估算法任务。

荣誉提名:

  • FSelector包

数据转换

创建数据集转换以得到最适合学习算法问题的结构。

  • 规范化:自定义函数
  • 标准化:scale函数,来自base包

caret包提供了数据转换,作为测试工具的一部分,参见下一节。

2.评估算法任务

caret包中的函数被用于评估模型。

carpet包支持多种表现度量和测试选项,例如数据切分和交叉验证。预处理也可以作为测试工具的一部分被配置。

模型评估

  • 模型评估:train函数,来自caret包
  • 测试选项:trainControl函数,来自caret包
  • 预处理选项:preProcess函数,来自caret包

注意许多现代预测模型(例如高级决策树的某些种类)提供了一些形式的内建特征选择、参数调整和集成。

预测模型

caret包提供了所有最好的预测建模算法。

3.改进结果任务

为了得到最好表现模型从而做出更准确预测的方法。

算法调整

caret包提供了作为测试工具的算法调整,并包含类似随机、网格化和自适应搜索的方法。

模型集成

许多现代预测模型算法提供内建集成。caret包也提供了一套bagging和boosting函数。

  • Blend:caretEnsemble,来自caretEnsemble包
  • Stacking:caretStack,来自caretEnsemble包
  • Bagging:bagging函数,来自ipred包

总结

在本篇文章中,你发现用R做机器学习的最佳方式是映射具体的R函数和包到机器学习计划的任务。

你找到了用于大多数机器学习项目共同任务的特定包与函数。

下一步

开始用R进行机器学习。在当前或下一个项目中使用上面的建议。