星期三, 十一月 28, 2012

决策树之三国争霸


决策树是一种简洁实用的数据挖掘方法。在R中通常可以用rpart包和party包来实现两种算法的决策树。最近著名的C4.5决策树算法的升级版本C5.0已经可以在官网下载到。对于这三种决策树算法,本文来做一个预测效果的简单对比。

对比用的数据集是C50包中自带的churn数据,它是用来预测顾客流失的数据集,其中样本量为3333个,变量数为20个。为不平衡数据,没有缺失值存在。对比基本步骤是用10重交叉检验,将数据随机分为10份,用9份训练决策树,用1份来检验结果。循环后求出10个预测准确度的均值。然后在外面再套一个100次大循环,产生三个决策树算法各100个准确率。最后绘制为提琴图,从图中可以观察到C5.0的表现最好,而party次之,rpart的效果最差。在本例实验中最大的差距虽然不过0.02,但如果放在kaggle的数据挖掘比赛中,就相当于是一百位名次的差距了。

星期日, 十一月 25, 2012

如何批量处理文本文件

最近数据堂为了弄数据挖掘比赛提供了一批用户行为日志数据。对于以前没玩过的数据,我是特别的好奇。处理这批文本文件确实花了不少时间。数据以不同的日期作文件夹分别存放,每个文件夹中又有近一千个文本文件,每个文件都是一个用户的行为日志。为了分析这些数据,首先需要将这两万个文本文件读入R中,再用字符串函数进行处理成结构化的数据。处理方法如下:

星期三, 十一月 21, 2012

新书推荐:数据之魅


在amazon书店里头,如果将统计类和数据挖掘类书籍除外的话,还真没有一本正经八百讲数据分析的书。不过《Data Analysis with Open Source Tools》倒是填补了这个空白。一般说到数据分析,可能要么是概念和公式推导居多,要么是软件教程和计算代码居多,这本书的写作风格和内容则大不一样,作者是以一种诚恳的态度在和你聊数据分析的事情,而不是以一种教科书的形式讲技术细节。它的重点在于作者的行业经验和心得。该书提出了很多很好的行业见解,而且知识覆盖范围极广,甚至包括了一些数据建模和BI的东西,不然也不会号称是程序员和数据科学家的指南手册了。


星期六, 十一月 17, 2012

三门问题的模拟


有一个著名的蒙提霍尔问题,亦称为三门问题(英文:Monty Hall problem),大致出自美国的电视游戏节目Let's Make a Deal。问题的名字来自该节目的主持人蒙提·霍尔(Monty Hall)。这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,知道门后情形的节目主持人会开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?

这条问题亦被叫做蒙提霍尔悖论:虽然该问题的答案在逻辑上并不自相矛盾,但十分违反直觉。这问题曾引起网络上一阵热烈的讨论。有人认为概率还是1/3,不用换。有人认为概率增大为1/2,可以换。实际上,如果严格按照上述的条件的话,赢得汽车的正确机率是2/3。我们可以用一种极端的方法来考虑,如果有100扇门,主持人打开了998扇空门,你换不换呢?显然是要换的。

还有许多概率推理的方法可以获得正确答案。但我们有计算机和R,让我们来写个小程序模拟一下嘛。

星期一, 十一月 12, 2012

用Shiny包快速搭建基于R的交互网页应用


RStudio是我最喜欢用的R语言IDE,其开发团队最近又推出了一个新的产品,即Shiny包。它的作用是快速搭建基于R的交互网页应用。使得那些对代码不熟悉的人士在工作中也可以应用统计模型。对于R和web的交互,之前已经有一些相关的包,例如:rApache, Rhttpd, Rack, Rook。不过这些工具都需要开发者不仅要熟悉R,还要熟悉网页编程语言(html,CSS,JS)。而Shiny包的特点在于不需要了解网页语言,可以用纯R来搭建。生成的网页应用是动态交互,而且是即时更新的。Shiny还提供了现成组件方便快速在网页上展示数据、图表和模型,的确是非常的炫。本例将用ggplot2包来绘制iris数据集的散点图,并将图形放到网页中。

首先安装Shiny包:
options(repos=c(RStudio='http://rstudio.org/_packages', getOption('repos')))
install.packages('shiny')


星期六, 十一月 03, 2012

参加上海第五届R会议的PPT和代码

上海的这次R会议来了很多知名公司和嘉宾,参与听众反应也非常热烈。感觉比北京的要好一些哦。而我只不过讲了一些业余玩的东东,附上本次演讲的PPT代码

星期四, 十一月 01, 2012

果壳中的R第二版新鲜出炉


《R in Nutshell》是O'REILLY公司出版的果壳系列图书之一。该系列图书的特点是知识覆盖面广,讲解全面细致,索引、参考资料以及进一步阅读都包括在内,是非常难得的桌头参考书籍。 《R in Nutshell》也继承了该系列的特点,从简单的R入门知识、R语法、数据整理和可视化,到统计回归、机器学习均有涉及,还包括了代码优化、生物计算和Hadoop的相关内容。

之前统计之都团队正组织翻译出版此书,不过英文第二版正酝酿出来,所以翻译工作暂时停下来。近日在网上看到英文第二版终于出来了,抽时间翻看一下,发现改进不少。特地搬到网盘上供各位下载

相对于第一版来说,新版本增加了两个完整的章节,即ggplot2绘图和Hadoop。这样使可视化部分终于完整的包括了基本绘图、Lattice包和ggplot2包。而且在大数据背景下,hadoop相关知识的引入也称得上是与时俱进。

新版本还修改完善部分代码,并重新安排了篇章结构。例如原来的第11章high-performance改写后成为了第24章optimizing R progrmas。

此外还增加了一些热门R包的介绍,例如plyrreshape。在回归模型中则增加了弹性网glmnet。这样总页数从原来第一版的636增加到第二版的722。

总而言之,有此书在手则基本不需要其它的R语言资料了。不过对于新人仍建立先选用较薄的入门小册子。例如《R for beginners》和《R导论》,它们都有中文版。