星期日, 七月 31, 2011

R语言、Rattle以及ggobi协同进行数据可视工作

数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息。但是,这并不就意味着,数据可视化就一定因为要实现其功能用途而令人感到枯燥乏味,或者是为了看上去绚丽多彩而显得极端复杂。为了有效地传达思想概念,美学形式与功能需要齐头并进,通过直观地传达关键的方面与特征,从而实现对于相当稀疏而又复杂的数据集的深入洞察。然而,设计人员往往并不能很好地把握设计与功能之间的平衡,从而创造出华而不实的数据可视化形式,无法达到其主要目的,也就是传达与沟通信息。

R语言有众多的绘图工具包,例如ggplot2,lattice。而在动态绘图方面则可以利用rggobi与ggobi软件进行协同工作。对懒得敲命令的同学来说,还可以利用rattle工具包的图形界面进行数据挖掘和可视化工作。在R程序内运行如下命令即可安装rattle

聚类分析在R语言中的实现

聚类分析和判别分析有相似的作用,都是起到分类的作用。但是,判别分析是已知分类然后总结出判别规则,是一种有指导的学习;而聚类分析则是有了一批样本,不知道它们的分类,甚至连分成几类也不知道,希望用某种方法把观测进行合理的分类,使得同一类的观测比较接近,不同类的观测相差较多,这是无指导的学习。所以,聚类分析依赖于对观测间的接近程度(距离)或相似程度的理解,定义不同的距离量度和相似性量度就可以产生不同的聚类结果。

静态和动态三维散点图的绘制

静态三维散点图需使用scatterplot3d扩展包

library(scatterplot3d)
scatterplot3d(iris$Petal.Width,iris$Sepal.Length,iris$Sepal.Width,pch=16,color=as.numeric(iris$Species))

星期六, 七月 30, 2011

BP神经网络和支持向量机在R语言中的实现

BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。

下面用R语言中的nnet程序包进行分类算例和回归算例,第一个例子是对河流的化学属性对其中的藻类进行回归预测,第二个例子是著名的鸢尾花算例。

星期四, 七月 28, 2011

在R语言中对回归树模型、装袋算法与随机森林之间的简单比较

回归树模型在之前的博客文章中已有介绍。而装袋算法与随机森林相对而言会生成多个树模型,再进行组合预测,其效果远大于单个树模型。装袋算法(bagging)采取自助法的思路,从样本中随机抽样,形成多个训练样本,生成多个树模型。然后以多数投票的方式来预测结果。随机森林则(randomForest)更进一步,不仅对样本进行抽样,还对变量进行抽样。下面来横向对比一下各算法。

首先读入必要的程序包
library(DMwR)
library(rpart)
library(ipred)
library(randomForest)

前二种算法可以计算缺失数据,但随机森林不行,所以还需将数据进行清洗整理