如何使用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进行机器学习。在当前或下一个项目中使用上面的建议。

继续阅读

20张图片完美捕捉数据科学发展的瞬间

Manish Saraswat

http://www.analyticsvidhya.com/blog/2016/01/20-powerful-images-perfectly-captures-growth-data-science/

概述

数据不会让过去更好,但是,它确实可以创造一个美妙的未来。

近年来,许多公司已经在数据科学领域投资数百万美元。这显示了对数据科学潜力的巨大信仰,相信它可以创造更好的世界、更好的生活和更好的未来。

数学、计算机科学和领域专业知识这强大的三重奏重新定义了做出决策的过程。直觉或本能不再是复杂决策的关键。

几年前的开创性发明现在已经变得过时。数据科学赋予我们超乎想象的可能性。许多东西随着时间腐朽和进化。然而,最好的技术即将到来。我十分兴奋地看到它就在我的眼前!

这些图片显示了什么?

我们都知道图片易于理解,而且传递的信息比文本更多。基本上,这些图片描绘了数据科学作为一个领域的旅程,包括发展、发明、成就以及对我们日常生活产生影响的一切。

你谈论政治、经济、科学、人生、运动,几乎一切都得益于数据科学的服务。我尝试在这些图片中捕捉它们最好的瞬间。

希望你喜欢它们! (更多…)

继续阅读

学习复杂事物的简单方式:三个步骤获得超能力

Per Harald Borgen

[https://medium.com/learning-new-stuff/a-simple-technique-to-learn-hard-stuff-ffaa7879bf7c#.k6gud0wqq]

1-2q1YNBxgiFJd4xeZFKPUtg

在过去几年,我花费了很多时间教自己web开发和机器学习。

虽然主题有所不同——从Javascript,Node和React到Python,Scikit Learn和神经网络——但我的学习方法一直保持不变。

尽管只是一个简单(几乎老套)的三步方法,它是帮助我在5个月内从业余爱好者变成专业web开发人员的关键。

因此我决定写一篇关于它的文章,如果有其他人会觉得很有用。

我写下这篇文章,就像能够把它发给2012年的自己,我希望在开始着手学习时能对这一切有一个更明晰的视图。 (更多…)

继续阅读

Python快速数据处理库CSVkit

借助Python的力量和命令行证明观点,利用数据和一个快速处理库。

Matthew Ritter

http://www.kdnuggets.com/2016/01/csvkit-fast-python-library.html

你是否曾经参与过电子邮件讨论,或者有某个人宣称你确信的“事实”并不是真的?这是不是令人沮丧,不得不停下正在做的,把事情带回正确的轨道?试一下这个轻量级的Python库,你会得到可以更快粘贴到回复的确凿结果,而不是键入“如果运行附件中的代码你会清楚地看到……”。

进入csvkit

这个Python库允许你在命令行中使用Python。顾名思义,它输入csv,并提供单行分析选项的“瑞士军刀”。我将用来自一些列象棋比赛中的真实数据展示这些步骤。 (更多…)

继续阅读

贝叶斯定理:多大点事?

贝叶斯定理,被吹捧为一种生成知识的强大方法,也可能被用于促进迷信和伪科学。

John Horgan

http://blogs.scientificamerican.com/cross-check/bayes-s-theorem-what-s-the-big-deal/

贝叶斯定理已经如此流行,以至于在CBS剧《生活大爆炸》中也出现了它的身影。但是像任何一个工具一样,它也可能被错误应用。

我不确定第一次听到贝叶斯定理是在何时。但是我确实在过去十年才开始注意它,在我的几个不靠谱的学生将其几乎鼓吹为人生神奇导航指南之后。

学生的夸张让我困惑,像这个定理在维基百科和其他地方的解释一样,我发现它们要么太简单化要么太复杂化。我自然觉得贝叶斯只是一股风潮,不值得深入探索。但是现在,贝叶斯已经变得无处不在,不容忽视。 (更多…)

继续阅读

数据科学十大技能

Bob Hayes

http://businessoverbroadway.com/top-10-skills-in-data-science


数据科学的实践需要三个一般领域的技能:商业洞察、计算机技术/编程和统计学/数学。与询问对象有关,具体的重要技能集合总是在变化。Dave Holts描述了得到数据科学家工作所需要的技能,Ferris Jumah通过检查带有“数据科学家”称号的LinkedIn个人资料识别10项技能,BurtchWorks提供了他们的在数据科学领域中获得成功至关重要的技能列表,RJMetrics也使用LinkedIn数据找出了20个重要的数据科学技能。这些列表、重要技能反映了数据专业人员在他们社交媒体资料上列出的频率,或者只是简单地代表了作者认为最好的技能集合。

数据科学技能和熟练程度


幻灯片1

数据科学调查中评估的25种技能

在正在进行的数据科学家研究中,我们要求数据专业人员指出他们在25项不同数据科学技能上的熟练程度。上表中列出了这25项技能,反映了通常与数据科学家相关的技能集合。事实上,这些技能是前述研究中所包含的。 (更多…)

继续阅读