最近接触到一款强大的数据挖掘软件平台RapidMiner,RapidMiner是世界领先的数据挖掘解决方案,通过在图像化界面拖拽建模,轻松实现了数据准备、机器学习和预测模型部署,无需编程,简单易用。下图展示了其工作流程:
其具有如下优势:
运行RapidMiner Studio,界面如下图:
在Design视图中,界面主要分为五个部分:
接下来介绍RapidMiner自带的一些Tutorials。
通过拖拽或者双击可以将Operator添加到Process,每当想看到一个Operator的输出时,必须确保它连接到‘res’端口。当添加连接好Operators后,就构建好一个Process。
在实际应用中,我们首先要从外部导入数据。点击Repository面板下方的Add Data按钮完成数据导入,导入的数据将在Local Repository中显示。记住应该始终将数据导入Repository,特别是当它来自XLS或CSV等文件时。 这将简化分析过程的设计,因为RapidMiner的Repository中存储了元数据和数据。将数据从Repository拖拽到Process中,它会转换为数据加载Operator(eg: Retrieve Operator)。 这时数据实际上并没有加载(或在Operator间传递),直到运行该Process。
RapidMiner提供了多种数据存储方案,可以将数据写入文件、数据库甚至是其他应用软件,Write Operator提供了将数据写入外部设备的操作。RapidMiner也支持将数据存储在Repository中,Store Operator提供了该操作。
数据预处理(Data preprocessing)包括Blending和Cleansing。Blending就是将数据集从一个状态转换到另一个状态或组合多个数据集。 Cleansing则是用来提升数据集质量,以便模型能够提供更好的结果。
Filter Sample Operator用来过滤样本,在Parameters面板中定义过滤器,不符合条件的样本将被过滤掉。
Sort Operator用来对样本进行排序,在Parameters面板中通过‘atttribute name’选择排序的依据,sorting direction决定降序或升序。
Join Opreator用来合并两个数据集,在Parameters面板的‘key attributes’参数中指定合并依据。
Aggrergate Operator用以对数据集进行分组,功能类似数据库的“group by”操作。Parameters面板中‘group by attributes’参数用来指定分组依据,‘aggregate attributes’用来对各个分组中该参数进行操作。
在对样本进行操作时,通常需要去除一些无用属性,也可能需要添加一些额外属性。
Generate Attributes Operator用来定义新的属性,在Parameters面板中,‘function descriptions’参数用来指定新列的名字和取值。
Select Attributes Operator用来筛选属性,在Parameters面板中,将‘attribute filter type’设置为‘subset’。 一般来说,这意味着Operator将仅应用于指定的那些属性(列)。 在这里,可以选择列的一个子集来作为要保存的数据,所有其他没有被选择的列将被删除。
对于一个完整的数据集,在进行预测建模之前,我们首先要指定哪一列是我们想要预测的。在RapidMiner中元数据包含‘type’和‘role’两个属性。‘type’用来指定列的取值类型;‘role’描述了机器学习模型如何使用该列,没有任何role(角色)的属性(也称为“常规”属性)将被用作训练的输入,而id属性通常被建模算法忽略,因为它们仅仅用来唯一标识每一个样本。
Discretize by Binning Operator用来对连续值属性进行离散化。“Binning”是一种将连续数值转换为离散值的常用方法。在Parameters面板中首先设置‘attribute filter type’为‘single’,表示只在该属性上操作。通过‘number of bins’指定将连续值取值划分为多少个区间,属性的取值将被替换为原始数值所属的bin的名称。
Set Role Operator用来对属性的角色进行指定。在RapidMiner中将被预测的属性称为‘label’。
Pivot:将长表格格式的数据(一个属性包含大量样本)转换为宽表格格式(一个样本有很多属性)。机器学习模型通常需要宽表格格式存储的数据,由于Aggregate结果总是以长表格格式存储,所以这种转换在Aggregate后特别有用。
Pivot Operator用来对表格格式进行转换。Parameters面板中‘group attribute’的值将作为行,而‘index attribute’的值将定义新列。新列的名称反映了它们是如何创建的,但并不易读。 可以使用Rename Operator对属性进行重命名。
现实中很多数据集都存在缺失值的情况,缺失值处理是必不可少的一个步骤,根据属性下数据缺失的多少可以分为三种:
数据清洗另一个重要任务是找出异常点(离群点)并将其剔除。常用的异常点检测算法包括:基于距离的算法、基于密度的算法、LOF算法、COF算法等。在采用基于距离的算法时,需要先进行归一化(Normalization)操作,将所有属性的取值范围缩放到同一个范围。Normalization Operator用来完成该操作。
Detect Outlier Operator用来剔除异常点,具体的Detect Outlier (Distance) Operator采用基于距离的算法进行异常点检测,该Operator将识别出与其他所有样本点距离最远的10个样本点,并将其标记为异常值。 并且,它创建一个名为outlier的新列,其取值true表示异常值,false表示所有其他示例。
Macros就像变量一样,可以用来动态存储和加载Process中的值。
Set Macro Operator用来手动直接设置一个Macro;Extract Macro Operator用来从Process的其他部分获取Macro值;Generate Macro Operator采用表达式生成Macro值。
如果想要获取设置的Mrcro值,需要使用表达式%{macro name}。
Sample Operator用来对样本数据采样。
Loop Operator表示循环操作,类似编程语言中的循环语句,观察发现这个Operator堆叠有两个小矩形,表示该Operator的内部可以添加其他Operators。该Operator包含一个预定义的Macro:loop_value,该Macro可以在Operator内部使用,在每次迭代中,Macro值被设置为循环的当前属性值。
Branch Operator是分支语句,类似编程语言中的‘if-then-else’语句,该Operator的内部可以添加其他Operators,分别执行then语句和else语句,if条件可以在Parameters面板中进行设置。
Append Operator可以用来合并多个数据集。注意‘Loop Values’和‘Append’之间是双线连接,表示‘Loop Values’的输出是一个集合。
预测模型是一类机器学习技术,它可以挖掘大数据中的模式,并使用这些模式来对新情况进行预测,预测值可以是类别(这称为Classification)或数值(这称为Regression)。
在RapidMiner中使用模型来生成新样本点的预测称为Scroing。
Apply Model Operator利用模型对新的样本点进行预测,结果将在原始测试样本集添加两个新的属性,分别是prediction,表示模型的预测结果,和confidence,表示置信度。
在训练好预测模型之后,最重要的问题是“这个模型的性能如何”? 模型在将来可能从未遇到过的情况下还能否正常工作? 正确度量模型性能的方式如下:保留一些带标记的数据,不要将其用于模型训练,而是用于模型测试,通常这部分数据被称为验证集(Validation set)。 由于这些数据带有标记,可以将预测结果与实际结果进行比较,并计算模型在这些数据上的准确率。
Split Data Operator可以将数据划分为训练集和验证集,训练集和验证集大小通常是7:3。
Performance Operator用来对模型的性能进行度量,包括准确率-召回率矩阵,AUC曲线等。
仅对数据集进行一次划分然后度量模型的性能,可能会出现一些极端情况而没有说服力,因此常采用Cross Validation(交叉验证)技术。交叉验证将训练集划分为相等的若干部分,每次使用其中一个部分用于验证,其他部分用于训练模型。 最后,所有测试精度的平均值作为模型性能的度量结果。 交叉验证包括训练模型和测试模型两个子过程。Cross Validation Operator实现了检查验证的过程。请注意,模型精度现在有一个额外的数字(在“+/-”之后)表示来自的交叉验证的性能的标准差。 标准差为我们提供了一个模型的鲁棒性的概念:标准差越小,模型性能对测试数据集的依赖性越小。最后,最终模型还是需要在整个训练集上训练得到,交叉验证只是提供了一种评估模型精度的方法,而不是建立最优模型的方法。
RapidMiner主页