1 功能描述
数据读取到SPSS Modeler,并对样本进行一些基本的处理和统计后,接着可以对变量进行变换操作。在SPSS Modeler中关于变量变换操作功能的节点位于“字段选项”选项卡下面!我们通过几个例子来演示主要节点的用法。
2 类型节点
我们以DRUG-imperfect.xls数据集为例来演示,首先将其读取到SPSS Modeler中
首先,将“源”选项卡下面的Excel节点添加到数据流编辑区域。
双击Excel节点将其打开,选择DRUG-imperfect.xls文件的存放路径,其他保持默认,然后点击确定。
将“输出”选项卡下面的表添加到数据流中,并与Excel节点连接。
双击表节点将其打开,点击运行,数据将载入到表中。检查数据发现,Age变量中有一个样本数值为430,明显与现实不符,可能是录入原始数据时手误输错;Sex变量中有F、M,还有男、女,数据不规范;Na和K变量下面均有一些缺失值。
将“字段选项”选项卡下面的类型节点添加到数据流中,并与Excel节点连接。
双击类型节点将其打开。
其中读取值/清除值按钮可以将数据读取到SPSS Modeler软件/或清除数据;
测量列下面可以选择变量的类型,类型节点默认会自动给出每个变量的类型,如果不符合预期,可以手动调整;
角色列可以选择“构建模型时变量的角色”,如果是被预测的变量,则角色选择目标,如果是用于预测的变量,则角色选择输入,如果变量既不用于预测,也不是被预测变量,则选择无。
类型节点中的另一个十分重要的功能是对缺失数据进行处理。
由于Na和K变量中有缺失值,可以通过检查列来控制,选择“丢弃”,则缺失值整行数据将被删除,如果选择“强制”,则SPSS Modeler将会对缺失值用平均数来填充。
对于Age变量,有个样本值为430,SPSS Modeler不会把430当成异常值,需要人为指定。
选择缺失列中的“指定...”选项。
在出现的窗口中,将Age变量的上限值修改为100(一般人的年龄小于100岁,也可根据实际情况来调整),其他保持默认,点击确定。
回到类型设置窗口后,可以发现Age变量值的范围变成[15,100],此时430将被当作异常值来处理,在检查列可以选择“强制/丢弃/无”等来对430的样本进行处理,这里选择的是强制,即430将会用平均年龄来代替。
在Sex变量中,除了用F和M表示性别外,变量中还有男、女的值,不够规范。同理,SPSS Modeler不会把男、女当成异常值,需要人为指定。
选择缺失列中的“指定...”选项。
在出现的窗口中,指定值和标签下面的男、女值删除,只保留F和M;
勾选定义空白,在缺失值中添加“女”(没有添加“男”是为了进行对比),即变量中的“女”是用户指定的缺失值。而“男”是系统缺失值。其他保持默认,点击确定。
回到类型设置窗口,将Sex变量中的缺失列选择“*”,表示不处理用户缺失值;检查列选择“无效”。
注意:只有在指定中选择了定义空白(指定用户缺失值),缺失列中的“*”才有用,否则“*”选项不起作用。
将“输出”选项卡下面的表节点添加到数据流,并于类型节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现,Sex列中,数值女被保留(因为女是用户定义的缺失值,且打开了“*”选项),而数值男变成了“$null”。
回到类型设置窗口,将Sex变量中的缺失列选择空,表示处理用户缺失值;检查列选择“无效”。
双击表节点将其打开,并点击运行按钮读取数据,可以发现,Sex列中,数值“女”和数值“男”变成了“$null”,因为关闭了“*”选项。
说明:类型节点中用户定义缺失值的功能比较绕,但一般情况下不需要使用该功能。
3 重新分类节点
仍然以DRUG-imperfect.xls的数据为例,数据已经读取且添加了类型节点。
注意:由于类型节点能够实例化数据(读取数据进入SPSS Modeler),是很多功能的基础。
双击类型节点将其打开,将缺失列和检查列保持默认(不对缺失值进行处理),点击确定。
将“字段选项”选项卡下面的重新分类节点添加到数据流中
双击重新分类节点将其打开
重新分类字段选择Sex
新字段名输入:性别
点击获取按钮;在新值列对原始值重新分类,F和M依然为F和M;女和男改为F和M;点击确认。
将“输出”选项卡下面的表节点添加到数据流,并于重新分类节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现,数据中新增了性别变量。
4 过滤节点
仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的过滤节点添加到数据流。
双击过滤节点将其打开;
由于生成了性别变量,所以在Sex变量对应的过滤列,将箭头去掉,表示将Sex列过滤掉。
将“输出”选项卡下面的表节点添加到数据流,并于过滤节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现,Sex列已经被过滤。
5 填充节点
仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的填充节点添加到数据流。
双击填充节点将其打开;填入字段中选择“Na”;
条件:中输入“@NULL(@FIELD)”,其中@NULL()函数表示判断数据是否为缺失值,@FIELD表示填入字段中的所有变量,这里只有一个,即Na;
替换为:中输入“@MEAN(Na)”,其中@MEAN()表示计算变量的平均值。
说明:填充的设置可以用平均数来代替变量中的缺失值。
将“输出”选项卡下面的表节点添加到数据流,并于填充节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现Na变量中的缺失值已经被代替。
我们继续来处理Age变量中的异常值,将“字段选项”选项卡下面的填充节点添加到数据流。
双击填充字段将其打开:
填入字段:中输入“Age”
条件:中输入“Age=430”
替换为:中输入“43”
说明:填充的设置可以将Age变量中的430替换为43(原始数据可能是43,不小心多写了一个0)。
将“输出”选项卡下面的表节点添加到数据流,并于填充节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现Age变量中的430已经被替换为43。
6 匿名化节点
有些时候需要对调查对象的关键信息进行脱敏处理,即将关键变量进行变换使其失去原来的实际意义,但是不影响模型估计。
仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的匿名化节点添加到数据流。
双击匿名化节点将其打开,在匿名化值中,将Age变量修改为是,即仅对Age进行匿名化处理。
点击匿名化值,可以看到用于匿名化的计算公式:(Age+39)*6,点击确定。
将“输出”选项卡下面的表节点添加到数据流,并于匿名化节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现Age变量的数值已经做了变换,看不出具体的年龄信息。
7 导出节点
导出节点的功能非常强大,可以采用任意公式来对原始变量进行变换并生成新的变量。这里我们已经知道了年龄匿名化的公式,所以可以采用导出节点将匿名化后的年龄数值还原。
仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的填充节点添加到数据流。
双击填充节点将其打开,
模型选择单个;
导出字段中输入:年龄;
导出为选择“公式”;
公式:中输入“Age/6-39”,点击确定。
将“输出”选项卡下面的表节点添加到数据流,并于导出节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现数据中新增了年龄变量。
我们继续演示导出节点的功能,现在想把Na和K变量的数值同时扩大1000倍。
将“字段选项”选项卡下面的填充节点添加到数据流。
双击填充节点将其打开,
模型选择多个;
导出自:中输入“K、Na”;
字段名扩展:中输入“_扩大”;
添加为:中选择后缀;
导出为选择“公式”;
公式:中输入“@FIELD*1000”,点击确定。
将“输出”选项卡下面的表节点添加到数据流,并于导出节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现数据中新增了K_扩大、Na_扩大两列变量。
8 分箱节点
有些模型只能够处理分类变量,比如决策树模型,这时候需要把连续变量修改为分类变量,此时可以使用分箱节点来处理。
仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的分箱节点添加到数据流。
双击分箱节点将其打开,分箱字段填入年龄;其他保持默认,点击确定。
将“输出”选项卡下面的表节点添加到数据流,并于分箱节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现,新增了年龄_BIN变量,且该变量为分类变量。
9 自动数据准备
自动数据准备节点可以对数据中的变量进行筛选和变换,达到加速模型估计速度的效果。
仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的自动数据准备节点添加到数据流。
双击自动准备节点将其打开,选择“平衡速度和精度”,点击确定。
将“输出”选项卡下面的表节点添加到数据流,并于自动数据准备节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现,Age、Na、K三列变量进行了变换(标准化处理,可以加速模型估计效果),同时删除了一些存在多重共线性的变量。
10 分区节点
数据挖掘模型中,样本数据一般要分为训练数据和测验数据,这样可以增加数据挖掘模型的泛化能力。这需要使用分区节点来实现。
仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的分区节点添加到数据流。
双击分区节点将其打开,分区:中选择“训练、测试和验证”选项;
训练分区、测试分区和验证分区大小分别设为50,25,25(加起来等于100就行),点击确定。
将“输出”选项卡下面的表节点添加到数据流,并于类型节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现,数据中新增了分区变量。
11 重新结构化节点
重新结构化节点能够将分类变量分成不同的列来显示。仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的重新结构化节点添加到数据流。
双击重新结构化节点将其打开,可用字段选择性别;
将性别变量中的两个取值,性别_F和性别_M移动到右侧的创建重新构建的字段中;
值字段:中添加Na_transformed和K_transformed两个变量,点击确定。
将“输出”选项卡下面的表节点添加到数据流,并于重新结构化节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现,Na_transformed和K_transformed两列的数据分成了男性和女性列来显示。
12 转置节点
数据的转置即行和列进行对调。我们以“房价和M2.sav”数据为例进行演示。
首先,将“源”选项卡下面的Statistics节点添加到数据流
双击Statistics节点将其打开,选择“房价和M2.sav”数据文件的存放路径。
将“输出”选项卡下面的表节点添加到数据流,并与Statistics节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现,数据呈横向排列。
将“字段选项”选项卡下面的转置节点添加到数据流。
双击转置节点将其打开。选择“从字段读取”并选中“变量名”
点击读取值按钮,将变量名下面的取值读取到新字段名称中;
行ID名称:中输入“时间”,点击确定。
将“输出”选项卡下面的表节点添加到数据流,并于转置节点连接;
双击表节点将其打开,并点击运行按钮读取数据,可以发现此时数据呈纵向排列