RapidMiner原名Yale,它是用于数据挖掘、机器学习、商业预测分析的开源计算环境。根据KDnuggets在2011年的一次 投票显示,从使用率来看该软件比之R语言还要略胜一筹。因为其具备GUI特性,所以很适合于数据挖掘的初学者入门。
RapidMiner提供的数据挖掘和机器学习程序包括:数据加载和转换(ETL),数据预处理和可视化,建模,评估和部署。数据挖掘的流程是以XML文件加以描述,并通过一个图形用户界面显示出来。RapidMiner是由Java编程语言编写的,其中还集成了WEKA的学习器和评估方法,并可以与R语言进行协同工作。
2 学习资源
软件的帮助菜单中自带了26个tutorial,可以帮助用户进行基本入门。另外在sample有也有不错的案例数据和流程可供参考学习。从官方网站可以下载到一份简单的用户手册,另外还有相应的 资源站提供了很好的视频教程。
3 基本概念
rapidminer中的功能均是通过连接各类算子(operataor)形成流程(process)来实现的,整个流程可以看做是工厂车间的生产线,输入原始数据,输入出模型结果。算子可以看做是执行某种具体功能的函数,不同算子有不同的输入输出特性。
大体上有这样几类算子:
- 流程控制类,是为了实现循环和条件功能。
- 数据输入和输出类,是为了实现数据交换。
- 数据转换类,包括各种数据抽取、清洗整理功能;
- 建模类,包括分类回归建模,关联分析、聚类分析、集成学习等功能。
- 评估类,包括多重交叉检验,自助法检验等功能
将算子拖入主流程工作区后,它会以一个方箱形式呈现,不同的颜色暗示着不同的函数功能。箱体左侧是输入接口,对应着输入类型的缩写。右侧对应输出接口和相应缩写。左下角会有三种颜色的状态灯,红灯表示关于该算子的设置错误,黄灯表示设置正常但还未进行过执行操作,绿灯表示设置正常且已经进行过执行操作。
在建模时,变量(attributes)会分为两个大类,普通变量称为regular,而目标变量称为label。这在有监督学习时需要特别留意。从数据特征来分,又可分为数值变量numeric,分类变量nominal,其中又有两值分类变量binominal,多值分类变量polynominal。不同的算子对于输入数据的类型有着不同的要求,这点需要在算子帮助中仔细阅读。
4 建模一般流程
- 新建一个库(Repository)
- 选择需要的算子(operator)放入主流程(main process)中
- 设置算子相关参数 (parameter)
- 进行算子连接
- 执行流程以得到结果
rapidminer数据挖掘入门之二:数据导入、预处理和绘图
1 基本概念
当安装软件时rapidminer会问你新建库文件在所在地,也就是Repositories,它相当于是用户的所有资料存放地。库中主要存放两种资料:一种是建模需要的数据(Data),另一种是建模用到的模型,或称为流程(Processes)。在安装完软件后,用户可以从Repositories下面看到sample文件,里面提供了用来练习用的数据和模型。
2 数据导入
数据导入有两种方式:
第一种是在Repositories菜单中点击import,可以读取CSV等五种格式数据,导入后以data形式存在库中,可随时拖拽到主流程图中调用,将会显示为Retrieve。
第二种是以算子(Operators)形式导入,从算子中的import类中可以选择十几种导入算子拖拽到主流程图中,然后在设置窗口确定资料来源。
3 数据预处理
数据预处理主要通过Data Transformation算子实现中,其中包括了这样几个大类:
绘图是在result overview窗口中实现,我们以著名的鸢尾花数据为例。首先将库中sample下的iris拖入Main Process,然后将其进行标准化,再点击大三角符号进行运算。软件会自动转到结果窗口,在该窗口选择plot view就可以选择多种绘图方式,下图就是所绘制的三维散点图:
当安装软件时rapidminer会问你新建库文件在所在地,也就是Repositories,它相当于是用户的所有资料存放地。库中主要存放两种资料:一种是建模需要的数据(Data),另一种是建模用到的模型,或称为流程(Processes)。在安装完软件后,用户可以从Repositories下面看到sample文件,里面提供了用来练习用的数据和模型。
2 数据导入
数据导入有两种方式:
第一种是在Repositories菜单中点击import,可以读取CSV等五种格式数据,导入后以data形式存在库中,可随时拖拽到主流程图中调用,将会显示为Retrieve。
第二种是以算子(Operators)形式导入,从算子中的import类中可以选择十几种导入算子拖拽到主流程图中,然后在设置窗口确定资料来源。
3 数据预处理
数据预处理主要通过Data Transformation算子实现中,其中包括了这样几个大类:
- 重定义,在数据导入时软件会让你定义哪些属于预测变量,哪些属于响应变量,如果在导入阶段没有定义,则可以在预处理阶段用(Set Role)算子进行再定义,否则会无法进行分类建模。
- 数据类型转换,数据大致上可分为数值(numerical)、两类(Binomial)、多类(Polynomial)数据,有时候希望相互转换,这就要用到Type Conversion类的算子来处理。
- 数据标准化,标准化数据和还原是经常用到的功能,分别对应Normalize和De-Normalize算子,
- 数据的清理,有这样几种数据可能是需要清理的,一是离群点,通过Detect Outier进行检测;二是缺失数据,通过Replace Missing Values进行处理;三是近似于常数的变量,通过Remove Useless Attribute算子来处理;四是相关度很高的变量,用Remove Correlated Atributes算子处理。
- 数据抽样,通过sample算子实现。
绘图是在result overview窗口中实现,我们以著名的鸢尾花数据为例。首先将库中sample下的iris拖入Main Process,然后将其进行标准化,再点击大三角符号进行运算。软件会自动转到结果窗口,在该窗口选择plot view就可以选择多种绘图方式,下图就是所绘制的三维散点图:
rapidminer数据挖掘入门之三:特征选择
在一般数据分析条件下,样本集合就类似一个Excel表格,每个样本数据排为一行,而纵列则代表了样本不同的特征或属性。有时候样本数据的特征过多,甚至特征数超过样本数就形成所谓的“维灾难”。
维数过高对于大多数回归分类模型来说是难以忍受的,而且这么高维特征可能会大大干扰训练效果、降低分类性能,因此有必要采取措施进一步地降低特征空间的维数。降维过程包括两类方法:一种是特征选择又称为子集选择,即从最初的N个特征中选取n个特征,而这n个特征可以更简洁、更有效地表示样本的信息。另一种是数据变换,即把N个原始特征变换为n个新的特征,例如主成分分析、投影寻踪方法。
特征选择的一般思路是:构造一个评估函数,对特征子集中的每一个特征进行独立的评估,使每一个特征得到一个评估分,然后对所有特征按照其评估分大小进行排序,选取满足阀值的预定数目个特征形成特征子集。
从使用方法上,特征选择又分为过滤器(Filter)方法和嵌入(Wrapper)方法,Filter是独立于分类器训练的,而Wrapper是结合分类器的效果进行选择的。Filter处理速度快,而Wrapper比较准确,但丧失了数据的一般性。rapidminer就采用Wrapper方法。
我们首先在Repositories中选择sample->processes->04_Attributes->10_ForwardSelect。该例子中用的方法是以前向搜索为选择顺序,以回归均方误为评估指标进行特征选择。
点击运行,然后观察结果窗口,在ProcessLog标签下观察散点图,纵轴选performance,横轴选generation,可以观察到在选择3个变量时,均方误达到最低,从ExampleSet标签可以看到最终选择了a1,a2,a3,这三个变量。
维数过高对于大多数回归分类模型来说是难以忍受的,而且这么高维特征可能会大大干扰训练效果、降低分类性能,因此有必要采取措施进一步地降低特征空间的维数。降维过程包括两类方法:一种是特征选择又称为子集选择,即从最初的N个特征中选取n个特征,而这n个特征可以更简洁、更有效地表示样本的信息。另一种是数据变换,即把N个原始特征变换为n个新的特征,例如主成分分析、投影寻踪方法。
特征选择的一般思路是:构造一个评估函数,对特征子集中的每一个特征进行独立的评估,使每一个特征得到一个评估分,然后对所有特征按照其评估分大小进行排序,选取满足阀值的预定数目个特征形成特征子集。
从使用方法上,特征选择又分为过滤器(Filter)方法和嵌入(Wrapper)方法,Filter是独立于分类器训练的,而Wrapper是结合分类器的效果进行选择的。Filter处理速度快,而Wrapper比较准确,但丧失了数据的一般性。rapidminer就采用Wrapper方法。
我们首先在Repositories中选择sample->processes->04_Attributes->10_ForwardSelect。该例子中用的方法是以前向搜索为选择顺序,以回归均方误为评估指标进行特征选择。
点击运行,然后观察结果窗口,在ProcessLog标签下观察散点图,纵轴选performance,横轴选generation,可以观察到在选择3个变量时,均方误达到最低,从ExampleSet标签可以看到最终选择了a1,a2,a3,这三个变量。
rapidminer数据挖掘入门之四:建模和评价(完)
rapidminer中提供了大量的建模方法或学习器,可用于不同情况下的回归和分类问题。从常见的线性回归、决策树到神经网络和支持向量机。此外还提供了集成学习器,即将多个学习器组合使用以提高预测能力,例如Bagging和Boosting,以及Stacking。
这些学习器都可以看做是一个黑箱,输入数据,输出模型和预测结果。在使用这些学习器时要注意的一点就是:不同的学习器需输入的数据类型不同。以Decision Tree学习器为例,它可以输入numerical attributes(数值数据自变量)、binominal attributes(两分类数据自变量)、polynomial attributes(多分类数据自变量),以及polynominal label(多分类数据因变量) binominal label(两分类数据因变量),但它不能处理numerical label(数值数据因变量)。这些信息都可以在学习器上通过帮助信息了解。
在建模时,我们通常会将样本数据分为两个部分,一半做为训练样本,另一半做为检验样本,那么这如何来进行呢?首先还是将iris数据拖入,在后面加上split data算子,该算子将数据分为两个等份,一部分数据连接到decision tree用于建模,另一部分连接到apply model算子用于模型检验。还需要将decision tree算子的输出连接到apply model算子的输入,将apply model的lab输出连接到performance进行检验评价,最后将mod输出和per输出都连接到右边墙上即可。然后点击运行三角键就可以得到最终的结果输出。整个连接图应该如下图所示:
另一种常用的检验方法是cross-validation(交叉检验),以十重交叉检验为例,也就是将全部数据随机地分为等量的十份,选择其中的9份作为训练数据,剩下1份作为检测数据来评价模型。然后更换其中的1份数据,重复实验。这样得到10组不同的评价指标,最后综合评判模型的表现。在rapidminer中需要用X-Validation算子来实现这一功能。流程图如下所示,
这些学习器都可以看做是一个黑箱,输入数据,输出模型和预测结果。在使用这些学习器时要注意的一点就是:不同的学习器需输入的数据类型不同。以Decision Tree学习器为例,它可以输入numerical attributes(数值数据自变量)、binominal attributes(两分类数据自变量)、polynomial attributes(多分类数据自变量),以及polynominal label(多分类数据因变量) binominal label(两分类数据因变量),但它不能处理numerical label(数值数据因变量)。这些信息都可以在学习器上通过帮助信息了解。
在建模时,我们通常会将样本数据分为两个部分,一半做为训练样本,另一半做为检验样本,那么这如何来进行呢?首先还是将iris数据拖入,在后面加上split data算子,该算子将数据分为两个等份,一部分数据连接到decision tree用于建模,另一部分连接到apply model算子用于模型检验。还需要将decision tree算子的输出连接到apply model算子的输入,将apply model的lab输出连接到performance进行检验评价,最后将mod输出和per输出都连接到右边墙上即可。然后点击运行三角键就可以得到最终的结果输出。整个连接图应该如下图所示:
另一种常用的检验方法是cross-validation(交叉检验),以十重交叉检验为例,也就是将全部数据随机地分为等量的十份,选择其中的9份作为训练数据,剩下1份作为检测数据来评价模型。然后更换其中的1份数据,重复实验。这样得到10组不同的评价指标,最后综合评判模型的表现。在rapidminer中需要用X-Validation算子来实现这一功能。流程图如下所示,
需要注意validation是一个嵌套算子,双击进入后需要设置学习器等子模块。