1 功能描述
数量关系可以说是事物之间的基本关系。例如光照与农作物产量之间的关系,吸烟和健康之间的关系,运动和减肥之间的关系等等。
2 预处理
2.1 数据处理
我们这里将采用“ships.sav”数据文件,分析船的建造时间和运营周期与船的故障率之间的关系。
首先需要将数据读取到SPSS Modeler软件中。将“源”选项卡下面的Statistics节点添加到流编辑区域。
双击打开Statistics节点;选择“ships.sav”文件的存放路径,点击确定。
将“输出”选项卡下面的表节点添加到数据流中,点击运行,可以发现数据已经导入到SPSS Modeler软件中。上面标出了变量的中文含义。
2.2 变量处理
其中construction变量表示船的建造年代,该变量是有序变量(有序变量如:“不及格、合格、良好、优秀”),60代表“1960-64”,65代表“1965-69”,...。
operation变量代表船的营运周期,该变量也是有序变量,60代表“1960-74”,75代表“1975-79”
log_months_service是months_service变量取对数后的值,所以需要将months_service变量过滤掉。
将“字段选项”选项卡下面的过滤节点添加到数据流中,并与Statistics节点连接。
双击打开过滤节点,点击months_service的过滤箭头,将其过滤掉。
将“字段选项”选项卡下面的类型节点添加到数据流中,并与过滤节点连接。
双击打开类型节点,将damage_incidence变量的角色设为目标,其他变量角色设为输入。
3 线性模型
“ships.sav”数据文件中的目标变量为事故发生次数,其属于数值型变量,所以不属于分类问题。我们首先采用线性模型来分析事故发生率。
将“建模”选项卡下面的“线性”节点添加到数据流,并与类型节点连接。
双击打开“线性”节点,在字段页面,目标中输入“damage_incidents”,预测变量输入“type、construction、operation、log_months_service”,其他保持默认,点击运行。
模型训练好后,将自动添加到数据流中。
双击打开训练好的“线性”模型,模型结果页面给出了对预测事故发生次数十分重要的两个变量。
模型结果页面同时给出了自变量对事故发生次数变量的回归系数和显著性。
回到数据流编辑区域,将“输出”选项卡下面的“表”节点添加到数据流,并与模型节点连接。
双击打开表节点,可以发现数据最后一列给出了预测的事故发生次数。
可以观察到,第2个样本的实际事故次数为0,但是预测的事故次数为负数,也明显不符合逻辑。由于线性模型的取值为负无穷到正无穷,该案例中预测变量的取值范围是正数,所以线性模型不是最好的选择。我们接下来再讨论几种数值关系分析模型。
4 Logistic模型
Logistic模型的特点是目标变量只能取0和1,“ships.sav”数据文件中目标变量为正数,为了演示logistic模型,我们将damage_incidents变量按照是否大于10进行转化,如果事故数大于10次则为1,否则为0。
仍然采用前面例子的数据,前面的处理步骤相同,这里不再演示。
将“字段选项”选项卡下面的“导出”节点添加到数据流,并与类型节点连接。
双击打开导出节点,导出字段输入“incidents10”,导出为选择“标志”,真值为T,假值为F;以下情况时为真输入“damage_incidents>=10”,其他保持默认,点击确定。
将“输出”选项卡下面的“表”节点添加到数据流,并与导出节点连接。
双击打开表节点,已经生成了二分类变量incidents10
将“建模”选项卡下面的“Logistic”节点添加到数据流,并与导出节点连接。
双击打开“Logistic”节点。在模型参数设置页面,选择“使用定制设置”,目标选择“incidents10”,输入中输入“type、construction、operation、log_months_service”,其他保持模型,点击运行。
模型训练好后,将自动添加到数据流中。
双击打开训练好的Logistic模型,其中模型页面给出了logistic模型的估计方程。
在高级页面中给出了具体的回归系数和显著性。
回到数据流编辑区域,将“输出”选项卡下面的“表”节点添加到数据流,并与模型节点连接。
双击打开表节点,可以发现数据倒数第二列给出了incidents10变量的预测值。
5 广义线性回归模型
logistic模型仅适用于目标变量为二分类的情况。而广义线性回归模型可以通过选择适合的分布来将目标变量的取值进行固定,这里进一步采用广义线性的泊松分布来分析船的事故发生率。泊松分布可以保证目标变量的取值为正。
仍然采用前面例子的数据,前面的处理步骤相同,这里不再演示。
将“建模”选项卡下面的“GenLin”节点添加到数据流,并与类型节点连接。
双击打开“GenLin”节点,在模型页面中偏移量字段选择“log_months_service”。
注意:SPSS Modeler中偏移量表示对变量增加回归系数为1的限制。其含义是log_months_service变量对damage_incidents变量变动的解释度非常高。
在专家页面,选择专家,分布选择“泊松”,连接函数选择“对数”,尺度参数计算方法选择“Pearson卡方”,分类输入值的顺序选择降序。其他保持默认,点击运行。
注意:广义线性回归模型的形式十分多,应熟悉广义线性回归的理论知识再来设置具体的参数。
模型训练好后,将自动添加到数据流中。
双击打开训练好的“GenLin”模型,结果页面给出了广义线性回归的回归系数和显著性等。
将“输出”选项卡下面的“表”节点添加到数据流,并与模型节点连接。
双击打开表节点,倒数第2列给出了事故发生数的预测值,可以发现,此时所有的预测值均为正数。预测效果比直接采用线性模型更好。
6 自动数值模型
SPSS Modeler给我们提供了可以自动进行数值关系分析的功能——自动数值。
仍然采用前面例子的数据,前面的处理步骤相同,这里不再演示。
将“建模”选项卡下面的“自动数值”节点添加到数据流,并与类型节点连接。
双击打开自动数值节点,在专家页面中勾选回归、广义线性、线性三个模型(虽然SVM、神经网络模型也可以进行数值分析,但是更多用于分类问题,故这里没有选择)。其他保持模型,点击运行。
模型训练好后,将自动添加到数据流中。
双击训练好的自动数值模型,模型页面包含了三个模型,其中广义线性模型相关性最高,其次是线性,回归模型最低。
在图形页面,散点图不同的颜色表示不同的样本部分采用了不同的模型来预测。
将“输出”选项卡下面的“表”节点添加到数据流,并与模型节点连接。
双击打开表节点,倒数第2列给出了事故发生数的预测值,可以发现,前两个样本的预测值为负数。这是因为自动数值采用了组合模型,而第一个样本和第二个样本是采用线性或回归模型来预测的,所以出现了负数。因而自动数值的使用应十分谨慎,如果我们对研究的问题和数据挖掘模型十分熟悉,建议自己构建模型,不要采用自动数值。如果我们对数据挖掘模型不太熟悉,对数值分析的精度要求不高,则可以使用自动数值节点来建模。