Rattle 与数据挖掘

Author:杜七


一、数据挖掘

大数据很热,就像春节的爆竹声,从除夕早晨就响个不停,一直维持到零点的新年钟声响起。
数据挖掘的步骤,简单汇总如下:

  • 熟悉业务,搞清楚要解决的业务问题
  • 定义业务问题的变量,提取所需的数据
  • 导入数据,并对数据做清理
  • 选择模型,建立模型
  • 评估模型
  • 解决业务问题

二、数据挖掘与R

数据挖掘领域,R语言目前也支持很多,比如Weka是一个非常不错的挖掘包。目前RWeka提供了一个R and Weka的接口,我们可以通过RWeka来做数据挖掘,但是RWeka需要自己coding,对于有些不熟悉R的同学可能有点难度。除此之外,Rattle也是一个不错的选择。Rattle是一个用于数据挖掘的R的图形交互界面(GUI),可用于快捷的处理常见的数据挖掘问题。从数据的整理到模型的评价,Rattle给出了完整的解决方案。

三、Rattle

1,Rattle优势

Rattle的最大优势在于提供一个图形交互界面,使用者就算不熟悉R的很多语法,也可以通过load data,Explore,Model,Test来完成整个数据挖掘的工作,不再纠结与load data (read.table(file,header = TRUE)),summary(data),Logistic or rpart等等coding。另外,Rattle有一个Log 记录,任何在Rattle操作的行为所对应的R Code都很明确的一步一步记录下来。 所以,如果想学习R的命令和函数,可以一边用Rattle来做挖掘,一边通过Log来学习。

2,Rattle常用的操作

1) 导入数据

这个部分,通过GUI来导入数据,即界面中的Tab-Data,否则只能通过read.table等等实现。这部分函数,通过Log就可以很清楚的看到对应的R code。比如,导入Weather dataset,Log中就会提示:
crs$dataset <- read.csv(system.file("csv", "weather.csv", package="rattle"), encoding="UTF-8") set.seed(crv$seed) crs$nobs <- nrow(crs$dataset) # 366 observations crs$sample <- crs$train <- sample(nrow(crs$dataset), 0.7*crs$nobs) # 256 observations crs$validate <- sample(setdiff(seq_len(nrow(crs$dataset)), crs$train), 0.15*crs$nobs) # 54 observations crs$test <- setdiff(setdiff(seq_len(nrow(crs$dataset)), crs$train), crs$validate) # 56 observations

2) 研究数据

在Rattle中,有专门的模块来完成数据的研究——Explore。在这个里面可以完成summary,Distributions,Correlation,Principal components,and Interactive。 同时,对应的data plot也会自动完成,比如,我们想看Rainy days的分布,我们可以通过"Explore"——Distributions" - "Categoric"(choose "RainyToday") —— "Excute",然后图形就完成了。
当然,在Log里面可以很清楚看到对应的命令和函数,如下:
ds <- rbind(summary(na.omit(crs$dataset[crs$sample,]$RainToday)), summary(na.omit(crs$dataset[crs$sample,][crs$dataset[crs$sample,]$RainTomorrow=="No",]$RainToday)), summary(na.omit(crs$dataset[crs$sample,][crs$dataset[crs$sample,]$RainTomorrow=="Yes",]$RainToday))) ord <- order(ds[1,], decreasing=TRUE) bp <- barplot2(ds[,ord], beside=TRUE, ylab="Frequency", xlab="RainToday", ylim=c(0, 254), col=rainbow_hcl(3)) text(bp, ds[,ord]+8, ds[,ord]) legend("topright", bty="n", c("All","No","Yes"), fill=rainbow_hcl(3)) title(main="Distribution of RainToday (sample) by RainTomorrow", sub=paste("Rattle", format(Sys.time(), "%Y-%b-%d %H:%M:%S"), Sys.info()["user"]))

3)建模

类似于explore data,Rattle也提供了建模的模块,请看"Model"。
在这里,已经有“Tree”,“Forest”,“Boost”,“SVM",“linear”,”Neural Net”等模型可以选择,具体大家可以参考Rattle的PDF。
具体的应用也很简单,比如我想对Rainyday做一个分析,想知道满足什么条件会是一个Rainyday,如何来做呢?
很简单,首先,Data里面选择需要的变量,然后在Model里面选择“tree”,然后再“执行”,分类数模型就搞定了!!是不是很赞?
`Summary of the Decision Tree model for XXXX (built using 'rpart'):
n= 256
node), split, n, loss, yval, (yprob)
* denotes terminal node

  1. root 256 41 No (0.83984375 0.16015625)
  2. Pressure3pm>=1011.9 204 16 No (0.92156863 0.07843137)
  3. Cloud3pm< 7.5 195 10 No (0.94871795 0.05128205) *
  4. Cloud3pm>=7.5 9 3 Yes (0.33333333 0.66666667) *
  5. Pressure3pm< 1011.9 52 25 No (0.51923077 0.48076923)
  6. Sunshine>=8.85 25 5 No (0.80000000 0.20000000) *
  7. Sunshine< 8.85 27 7 Yes (0.25925926 0.74074074) * `

当然,过程简单了,但是如何做分类树模型,了解分类树模型的细节也是必要的,否则怎么知道选择模型的结果和意义呢?

4)模型评估

建模固然重要,最重要的还是建模之后的模型评估,比如检验是否通过,这对于模型的正确与否,应用与否必不可少。一个检验不通过,即不正确的模型有什么意义呢?
模型的检验,也需要我们了解检验啥,如何检验?F-Test,T-test都代表啥,如何模型就是通过?大家在实际应用中,肯定会关注p-value,看p-value是否经过检验。
这个部分不多少了,不是本次的重点。
更多的内容,大家看“Test”和“Evaluate”的模块内容。

5)模型应用

模型建立并通过检验以后,即可以在业务问题中应用。
具体的应用,要看模型和业务问题具体分析。比如分类树,我们就可以根据分类树的优先级来合理安排哪些客户是我们首先要去维护的,哪些是需要后面再去维护等等;如果是logistic模型,我们就可以根据变量来预测应变量。

先写到这里,后面更多使用以后再来补充和细化。今天2014年大年初一,大家新年快乐,马上有所有!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,478评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,825评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,482评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,726评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,633评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,018评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,168评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,320评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,264评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,288评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,995评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,587评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,909评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,284评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,862评论 2 339

推荐阅读更多精彩内容