データ・マイニングのデータの前処理フェーズでは、データの欠損値の置換が必要な場合がしばしばあります。
欠損値 は、不明、収集されていない、または誤って入力されたデータ・セット内の値です。 通常、こうした値は、フィールドにとって無効な値になります。 例えば、フィールド Sex
には、 M
と F
の値が含まれている必要があります。 フィールドで Y
または Z
を検出した場合は、そのような値は有効ではないと推測し、空白として解釈できます。 同様に、フィールド Age
の負の値は無意味であり、ブランクとしても解釈する必要があります。 多くの場合、このような明らかに誤った値が意図的に入力されるか、回答がないことを示す質問表の間はフィールドがブランクのままになります。 時には、年齢を入力していないなどの未回答が、特定の結果を予測するための因子であるかかどうかを判断するために、空白の意味を詳しく調べる必要があることもあります。
一部のモデル作成手法では、欠損値がより効果的に処理されます。 例えば、 C5.0 ノード および Apriori ノード は、 データ型ノードで明示的に「欠損値」として宣言された値を適切に処理します。 他のモデル作成技法では、欠損値を処理できないため、学習に時間がかかったり、モデルの精度が低下してしまいます。
- Null またはシステム欠損値。 これらは、データベースまたはソース・ファイルでブランクのままになっていて、 インポート ・ノードまたはデータ型ノードで「欠落」として明確に定義されていない文字列以外の値です。 システム欠損値は
$null$
値として表示されます。 空ストリングは、特定のデータベースではヌルとして扱われますが、ヌルとは見なされないことに注意してください。 - 空の文字列および空白。 空の文字列値および空白 ( 表示できる文字のない文字列) は、 NULL 値とは異なるものとして扱われます。 空白の文字列は、ほとんどの目的に対してホワイト スペースとして扱われます。 例えば、インポート・ノードやデータ型ノードで空白文字を空白として処理するためのオプションを選択すると、そのオプションの設定が空の文字列にも適用されます。
- 空欄またはユーザー定義の欠損値。 これらは、
unknown
、99
、–1
のように、インポート・ノードやタイプ・ノードで欠落していると明示的に定義されている値である。 オプションでヌルと空白文字を「空白」として処理することもできます。そうすることによって、特別な処理のためにフラグを付けたり、ほとんどの計算から除外することができるようになります。 例えば、@BLANK
関数を使用して、これらの値を、その他のタイプの欠損値とともに空欄として処理することができます。
混合データを読み取っています。 数値ストレージ (整数、実数、時刻、タイム・スタンプ、または日付のいずれか) を使用してフィールドを読み込む場合、非数値は null
または system missing
に設定されることに注意してください。 これは、一部のアプリケーションとは異なり、1 つのフィールド内でストレージ・タイプを混在させることができないためです。 これを回避するには、必要に応じてインポート・ノードまたは外部アプリケーションでストレージ・タイプを変更して、データが混在しているフィールドを文字列として読み込む必要があります。
Oracleから空の文字列を読み取っています。 Oracle データベースとの間で読み取りまたは書き込みを行う場合、他のほとんどのデータベースとは異なり、 Oracle は空ストリング値を NULL 値と同等のものとして扱い、保管することに注意してください。 つまり、Oracle データベースから抽出されたデータは、同じデータがファイルやその他のデータベースから抽出された場合とは異なって動作し、また異なる結果が返ることがあります。