公告
周五BI飞起来,每周一个主题,一场跟数据有关的行业、工具、技术的交流盛宴,锁定在每周五晚20:30,不见不散!
未来几期的微信直播活动分享主题将包括谈谈BI在生产企业的应用、数据科学家应用 、SPSS数据挖掘、数据挖掘经典案例赏析等,具体日期安排请关注天善智能问答社区活动版块https://www.hellobi.com/events
本期分享内容:
1、R语言的介绍与R语言数据读取
2、大数据处理与建模
3、R语言数据分析平台搭建
本期嘉宾介绍
谢佳标 多届中国R语言大会演讲嘉宾,目前在创梦天地担任高级数据分析师一职,作为创梦天地数据挖掘组的负责人,带领团队对游戏数据进行深度挖掘,主要利用R语言进行大数据的挖掘和可视化工作。本人从事数据挖掘建模工作已有9年,曾经从事过咨询、电商、电购、电力、游戏等行业,了解不同领域的数据特点。有丰富的利用R语言进行数据挖掘实战经验。攥写了《R语言与数据挖掘》及《R语言游戏数据分析》等书籍。
主持人:大家好,我是微信直播活动的主持人咖啡,每周一个主题,一场跟数据有关的行业、工具、技术的交流盛宴。我们的口号是“Friday BI Fly 周五BI飞起来”。周四晚上谢老师的分享反响特别好,趁热打铁,今晚谢老师又为大家带来了R语言相关的分享,快有请老师登场,为大家分享基于R语言的大数据处理与建模技术!
基于R语言的大数据处理与建模技术
大家晚上好,很高兴今晚继续跟大家分享R语言的一些知识。昨晚直播完,有学员反映没有R语言基础的听的一头雾水,今晚我们先来了解下R语言以及R语言的安装。
R语言介绍
R语言的前身是S语言,S语言是有AT &T Bell实验室的Rick Becker,John Chambers和Allan Wilks开发的一种用来进行数据探索、统计分析、作图的解释型语言。最初S语言的实现版本主要是S-PLUS,S-PLUS是一个商业软件。
R语言最初是由来自新西兰大学的Ross Ihaka和Robert Gentleman开发(由于他们的名字都是以R开头,所有该软件被命名为R)。
R语言是一套开源的数据分析解决方案,几乎可以独立完成数据处理、数据可视化、数据建模及模型评估等工作,而且可以完美配合其他工具进行数据交互。
具体来说,R语言具有以下优势:
R语言作为一种GNU项目,开放了全部源代码,用户可以免费下载使用和修改。
R语言可以运行在多种平台上,包括Windows、UNIX和MacOS。
R语言可以轻松地从各种类型的数据源导入数据
R语言内置多种统计学及数据分析功能
R语言拥有顶尖的制图功能。不仅有 lattcie包、ggplot2包对复杂数据进行可视化,更有rCharts包、recharts包、plotly包实现数据交互可视化,甚至可以利用功能强大的shiny包实现R与web整合部署,构建网页应用,帮助不懂CSS,HTML的用户能利用R快速搭建自己的数据分析APP。
由于以上一些优点,使得R语言越来越受到学生和数据分析从业者的青睐。从每年的中国R语言大会的参会人员和规模就可以验证这一点,很多高校现在也开设了R语言相关的课程。
了解了一些R语言的优点,接下来让我们一起来学习下如何安装R。
R语言的安装
我们可以在CRAN(Comprehensice R Archive Network)获取最新版本。打开https://www.r-project.org/, 页面点击download R,可以进入CRAN镜像站地址https://cran.r-project.org/mirrors.html,其中包含中国大陆地区的5个镜像地址,你可以选择距离你的地址进入其镜像的详细页面,通过该页面可以下载Linux、MacOS和Windows操作系统的安装包。
从官网上下载的是R语言的最新版本,有些人可能需要下载旧版本的R,可以到https://cran.r-project.org/bin/ 下载对应的版本。
下载后,点击下一步就能完成安装了。
如果大家用的是64位系统,安装过程都是用默认设置的话,安装完成后会有两个版本的R出现在你桌面
如下截图所示:
与传统的数据挖掘工具SAS、SPSS和IBM SPSS Modeler等软件相比,R的缺点在于没有友好的操作菜单,这会使很多熟悉其他工具的用户起初会觉得很困难。
R的GUI工具-RStudio
这边给大家介绍一款非常好用的GUI工具:RStuido。RStudio可以从其官网https://www.rstudio.com/ 免费下载安装。一般情况下,下载安装桌面版即可。安装完启动RStudio的基本界面如下:
左上方的窗口是文本编辑器,具有强大的功能,我们可以在文本编辑器写好脚本,点击run按钮(或者利用Ctrl+R快捷键)批量运行代码。
右上方的窗口包括当前环境下的信息、历史命令。
左下方的窗口是R控制台,被当作是标准的R控制台。
右下方的窗口包括文件路径、绘图窗口、已经在本地安装的包信息、帮助文档以及交互绘图时的浏览界面。
昨晚在最后给大家提到一个R语言的数据挖掘可视化工具:Rattle,今晚再跟大家介绍一下。
R的数据挖掘可视化工具-Rattle
Rattle是一个用于数据挖掘的R的图形交互界面(GUI),可用于快捷的处理常见的数据挖掘问题。从数据的整理到模型的评价,Rattle给出了完整的解决方案。
Rattle和R平台良好的交互性,又为用户使用R语言解决复杂问题开启了方便之门。Rattle易学易用,不要求很多的R语言基础,被广泛的应用于数据挖掘实践和教学之中。
ok,接下来我们一起来学习Rattle的安装:
以WINDOWS系统中的安装为例说明,安装步骤如下所示。在R控制台键入:
install.packages(“RGtk2”)
install.packages(“rattle”)
第一次安装完成后,我们可以输入以下命令启动rattle:
> library(rattle)
Rattle: A free graphical interface for data mining with R.
XXXX 3.4.1 Copyright (c) 2006-2014 Togaware Pty Ltd.
键入'rattle()'去轻摇、晃动、翻滚你的数据。
> rattle()
如果有提示缺少什么包之类的,大家只需要点确认安装即可。调出的Rattle界面如下:
Rattle的标签栏已经集成数据导入、数据探索、数据检验、数据转化、数据建模及模型评估功能,我们可以通过鼠标点击的方式完成一整套的数据挖掘工作,并且可以利用Log日志查看每个操作的R脚本实现,借此来学习R语言的代码规范及编写能力。
以上就是关于R语言的简单介绍与安装。
接下来,让我们一起来学习下如何利用R语言做大数据的处理及建模。
基于R语言的大数据处理及建模
由于昨晚直播已经分享了关于数据质量的分析和建模这块,今天我再跟大家分享几个小的知识点,关于数据的类失衡问题及哑变量处理。
在很多小概率事件、稀有事件的预测建模过程中,比如游戏用户付费事件,在全部注册用户中,能转化成付费用户的只占10%甚至更少,这种情况属于类失衡问题,即在数据中可能会存在某个或某些类别下的样本数远大于另一些类别下的样本数目。
如果不对数据进行处理就进行建模,此时建立的分类器会倾向于预测数据较多的一类,显然该分类器是无效的,并且这种无效是由于训练集中类别不均衡而导致的。
有多种抽样方法用于改变数据集中类的失衡,常用的有以下两种:
有一个系统的构造人工数据样本的方法叫SMOTE(Synthetic Minority Over-sampling Technique)。
在R中,DMwR包中的SMOTE( )函数可以实现SMOTE方法。主要参数有如下三个:perc.over:过采样时,生成少数类的样本个数;k:过采样中使用K近邻算法生成少数类样本时的K值,默认是5;perc.under:欠采样时,对应每个生成的少数类样本,选择原始数据多数类样本的个数。
关于这个函数的例子,大家可以查看帮助文档,里面有利用鸢尾花数据集进行演示,我们重点来讲讲哑变量处理这块,这方面的资料网上比较少。
哑变量(Dummy Variable)也叫虚拟变量,引入哑变量的目的是将不能够定量处理的变量量化,如性别、年龄、职业等。这种“量化”通常是通过引入“哑变量”来完成的。根据这些因素的属性类型,构建只取“0”或“1”的人工变量,通常称为哑变量。
举一个例子,假如变量“性别”的取值为:男性、女性。我们可以增加2个哑变量来代替“性别”这个变量,分别为性别.男性(1=男性/0=女性)、性别.女性(1=女性/0=男性)。
在研究变量间关系或者建模时可能都需要引入哑变量,例如在线性回归分析中引入哑变量的目的是可以考察定性因素对因变量的影响。
R语言中有一个个专门进行哑变量处理的函数,它就是caret包中的dummyVars( )函数。其基本表达形式为:dummyVars(formula, data, sep = ".", levelsOnly = FALSE, fullRank = FALSE, ...),其中,formula表示模型公式,data是需要处理的数据集。
假如有一份customers数据集,包括id、gender、mood和outcome变量,其中gender和mood都是因子型变量,我们需要将它们进行哑变量处理。
构建数据的脚本如下:
# 构建customers数据集
customers<-data.frame(id=c(10,20,30,40,50),
gender=c("male","female","female","male","female"),
mood=c("happy","sad","happy","sad","happy"),
outcome=c(1,1,0,0,0))
customers
此时我们从截图中可以看到gender和mood变量是因子型变量。
接下来,我们利用dummyVars函数对其进行哑变量处理。执行代码如下:
# 加载caret包到内存
library(caret)
# 利用dummyVars函数对customers数据进行哑变量处理
dmy<-dummyVars(~.,data=customers)
# 对自身变量进行预测,并转换成data.frame格式
trsf<-data.frame(predict(dmy,newdata=customers))
# 查看转换结果
trsf
运行完代码得到的结果如下:
可以看到gender和mood变量都分别拆分为两列,值都是1或者0。
好了,以上就是关于哑变量处理的一个简单例子演示。大家如果在实际工作中有遇到需要这样处理数据的需求,可尝试用dummyVars函数试试。
最后,进入我们今天最后一个话题:R语言数据分析平台搭建
R语言数据分析平台搭建
很多时候,我们作为数据分析师,自己做出来的东西如果叫开发同学做二次开发,开发周期长,且出来的东西跟需求又可能不一样。此时,就想先自己搭建一套完整的数据分析平台原型,进行数据交互及展示。所以,shiny包的出现可以很好地满足那些只会R语言,不会css、html这些前端技术的同学,可以快速搭建自己的web网页。
Shiny是R中的一种Web开发框架,使得R的使用者不必太了解css、js只需要了解一些html的知识就可以快速完成web开发,且shiny包集成了bootstrap、jquery、ajax等特性,极大解放了作为统计语言的R的生产力,使得非传统程序员的R使用者不必依赖于前端、后端工程师就可以自己依照业务完成一些简单的数据可视化工作,快速验证想法的可靠性。
Shiny应用包含两个基本的组成部分:一个是用户界面脚本(a user-interface script),另一个是服务器脚本(a server script)。应用结构如下图所示:
用户界面(ui)脚本控制应用的布局与外表,服务器(server)脚本包含构建应用所需要的一些重要指示。
你可以在一个目录中保存一个ui.R文件和server.R文件来创建一个Shiny应用,每一个应用都需要自己独特的存放位置,运行应用的方法是在函数runApp中置入目录名称。
执行以下命令:
library(shiny)
runApp("D:/myapp")
运行完成后自动生成一个网页展示结果。
另外,有一个专业BI框架的扩展包:shinydashboard包。
shinydashboard扩展包为shiny框架提供了BI框架,一个dashboard由三部分组成:标题栏、侧边栏、主面板。通过install.packages(“shinydashboard”)完成安装。
其基本框架如下截图所示:
学习完了框架,接下来,让我们一起来看看如何利用shiny将一些绘图、模型可视化的结果搭建成数据分析原型。
对于lattice包和ggplot2绘制的图形,我们在server.R中用renderPlot( )函数将图形赋予输出对象mygraph,并在ui.R中用plotOutput(“mygraph” )将图形输出到web中。我们在网页上输出了lattice函数绘制的散点图矩阵和三维曲面图。结果如下所示:
对于模型结果可视化,我们也可以使用这种方式把可视化结果在网页上输出。我们对关联规则和kmeans聚类结果进行了可视化,并增加了选择栏和数字输入选项来调整关联规则可视化的方法和聚类的K值。结果如下所示:
调整里面的选项,可以在网页立刻得到重新建模后的结果。例如,如果我们method选择”matrix3D”,K值取4时,结果如下:
对于非常强大的交互包rCharts,shiny也可以实现完美结合。
对于rCharts包绘制的图形,我们在server.R中用renderChart( )函数将图形赋予输出对象mygraph,并在ui.R中用showOutput(“mygraph” )将图形输出到web中。我们在网页上输出了nPlot函数绘制的交互柱状图。结果如下所示:
好了,关于快速搭建数据分析原型的内容也简单给大家介绍到这里。
这些平台的demo脚本会在我的新书《R语言与数据挖掘》里一起给到大家,今天的分享就是这些,谢谢大家!
主持人:好的,感谢谢老师给大家带来的精彩分享,老师从R的安装,到案例讲解,到基于R语言的的数据分析平台建设,让我们对R语言又有了更深的理解,让我们学习R语言的思路更清晰,动力更足了对不对,下面进入自由提问时间了,有疑问的赶紧把问题抛出来吧
自由讨论
问题1:老师,游戏那本书,啥时可买到?
春天在心里:现在京东,当当都有。
Daniel-谢佳标 :已经可以买了,不过大家可以期待我下一本《R语言游戏数据分析》,里面讲的数据处理也有写进去。
问题2:关于shiny,能不能多介绍一下,该怎么学习?
关于shiny,如果大家感兴趣,大家可以上RStuido官网,这个是shiny的学习网站:http://shiny.rstudio.com/tutorial/
可以给不熟悉R语言的人快速上手的机会
这里有很多例子,都可以看他们的代码是怎么写的。
春天在心里:全英文的这是
Daniel-谢佳标:是的,陈堰平翻译过一部分,不过太旧了,不建议大家读。
问题3:library(rattle) 出现错误,一直关不了这个错误,怎么解决?
Daniel-谢佳标:rattle这个安装,经常会有这有那的问题,大家需要去百度看看怎么解决。如果能翻墙,翻墙安装就没有这么多的小问题。
问题4:已经安装了Rattle,老师能否解释一下基本的用法?
Daniel-谢佳标:好的,那老师接下来给大家用一个案例讲讲rattle的用法。
假如导入一个csv格式的文件,你点文件夹的按钮,选中文件,点执行,然后的界面如下所示:
黄春波:就是会默认读取变量类型?
Daniel-谢佳标:对,根据你的数据源,读取你的变量类型,就是变量名,右边显示了变量类型,还有target变量
现在是对数据探索:描述性统计分析。按照红框操作出来的结果如图所示
现在的截图是进行数据可视化的操作,结果如下所示:
刚才的截图是构建了随机森林模型,查看变量重要性如下:
500颗树的误差率,如下
模型评估如下:
黄春波:那等于是说rattle就是为我们的数据探索、建模等等提供一个可视化、窗口的形式? 更方便操作,是么?
Daniel-谢佳标:是的。
问题5:来自15群:加载rattle包,总会失败这样提示的
Daniel-谢佳标:要选第一个,可以先在你电脑装上libatk.dll,然后再进行安装rattle。
问题6:来自15群:R访问Oracle数据库的话用什么方法,是每个数据库都有特别的包吗?
Daniel-谢佳标:RODBC包,这个包比较好,可以连接oracle、mysql、sql这些数据库。
问题7:来自15群:关于数据可视化方面,想请教一下。自动出日报这类常规报表,只变数据,其它结构不变的,用R实现。要用到哪些包?
Daniel-谢佳标:R有很多扩展包,需要自己在用到的时候去找
春天在心里:如果要做到类似excel中的高级动态表,有那种控件的,实现这样的功能需要什么包啊
Daniel-谢佳标:shiny包里面有很多控件,就像我模型可视化的那里例子,就是增加了一个下拉框
这些都是比较常用的控件。
春天在心里:好的,这些控件都集中在一个包么?
Daniel-谢佳标:恩 就在shiny包里面
还可以自己写css html去增加很多定制化的内容。
问题8:R一般适合处理多少个G的数据?
Daniel-谢佳标:单机版的话,需要看你电脑的性能。不用并行包,数据量也不会太大。R是一个实验室工具,快速做一整套数据挖掘解决发方案,适合探索性研究。
问题9:有没有学r语言比较好的书籍或者论坛?
Daniel-谢佳标:《R语言实战》、《R语言编程艺术》是非常经典的书籍,论坛肯定是首选天善智能,还有统计之都也是非常专业的。
主持人:感谢老师耐心细致的回答,由于时间关系,咱们今天的活动要接近尾声了,大家还有疑问的,直接提问到社区R语言板块https://ask.hellobi.com/category/46,老师会在社区上面给予回答。谢老师为大家精心准备的课程,R 语言与数据挖掘实战 让你从入门到“绝不放弃”, https://major.hellobi.com/data_mining 想快速提升的朋友们看这里,可以与老师深入交流哦!
下期预告:
2016年07月29日晚8点半微信直播腾讯大数据分析与挖掘交流会第26场
https://www.hellobi.com/event/72
今天的微信直播活动到这里就结束了,喜欢天善智能的朋友们请继续关注我们,每周五晚8:30,我们不见不散哦!
参与方式
每周 Friday BI Fly 微信直播参加方式,加个人微信:fridaybifly,并发送微信:公司+行业+姓名,即可参加天善智能微信直播活动。
天善智能介绍
天善智能 www.hellobi.com 是一个专注于商业智能BI、数据分析、数据挖掘和大数据技术的垂直社区平台。
问答社区和在线学院是国内最大的商业智能BI 和大数据领域的技术社区和在线学习平台,技术版块与在线课程已经覆盖 商业智能、数据分析、数据挖掘、大数据、数据仓库、Microsoft BI、Oracle BIEE、IBM Cognos、SAP BO、Kettle、Informatica、DataStage、Halo BI、QlikView、Tableau、Hadoop 等国外主流产品和技术。
线上活动:Friday BI Fly 每周五晚 20:30,技术和行业交流,30余个微信直播群互动交流。
线下活动:Saturday BI Fly 在全国各大城市巡回举办200人-500人规模的大数据沙龙交流活动,每月1-2次。
天善智能积极地推动国产商业智能 BI 和大数据产品与技术在国内的普及与发展