缺失值概述

在数据挖掘的数据准备阶段,通常需要替换数据中的缺失值。缺失值是数据集中未知、未收集或输入不正确的值。通常,这些值不可用于字段中。例如,字段 Sex 应包含值 MF。如果在此字段中发现值 YZ,则完全可以确定此值无效,并且应将其解释为空白值。同样地,年龄字段出现负值也毫无意义,应将其解释为空白值。此类明显错误通常是由于问卷过程中人为输入或保留字段为空以示拒绝回答造成的。有时候,您可能会进一步检查这些空白字段,以弄清拒绝提供本人年龄等行为是否会影响具体预测结果。

某些建模技术在处理缺失值方面具有明显的优势。例如,C5.0 和 Apriori 可以很好地处理在类型节点中明确声明为“缺失”的值。其它建模技术在处理缺失值时比较麻烦,并且需要较长的培训时间,且生成的模型不够精确。

IBM® SPSS® Modeler 可识别的缺失值类型有以下几种:

  • 空值或系统缺失值。这两种类型是数据库或源文件中留空、并且尚未在源节点或类型节点中专门定义为“缺失”的非字符串值。系统缺失值显示为 $null$。请注意,空字符串在 IBM SPSS Modeler 中不被视为空值,但它们可能会被某些数据库视为空值。
  • 空字符串和空白。空字符串值和空白(带有不可见字符的字符串)不被视为空值。对于大多数用途,空字符串都视为相当于空白。例如,如果您选择在源节点或类型节点中将空白视为空白值的选项,则此设置也应用于空字符串。
  • 空白值或用户定义的缺失值。这些是在源节点或类型节点中被明确定义为缺失的值(例如 unknown99–1)。您还可以将空和空白视为空白值,这样将使得它们被标记为进行特殊处理并排除在大多数计算之外。例如,您可以使用 @BLANK 函数将这些值以及其他类型的缺失值处理为空白值。

读取混合数据。注意,当您读取以数字形式(整数、实数、时间、时间戳或日期)存储的字段时,所有非数值型字段都将设置为空值系统缺失值。这是因为 Clementine 与其他应用程序不同,它不允许使用混合存储类型的字段。为避免发生这种情况,可以根据需要更改源节点或外部应用程序中的字段存储类型,以字符串的形式读取包含混合数据的字段。

从 Oracle 中读取字符型空值。在 Oracle 数据库中进行值的读写时,要注意,与 IBM SPSS Modeler 及大多数其他数据库不同,Oracle 将字符型空值等同于空值对待并存储。这表示同样的数据从 Oracle 数据库中提取和从文件或其他数据库中提取其表现可能有所不同,可能会返回不同的结果。