1 データ欠損の概要

1.1 定義概念整理

データ欠損(missing data)とは、データ収集・保存・処理・利用のいずれかの段階で、対象として想定された値が存在しない、あるいは取得できない状態を指す。欠損は「欠測」「不明値」とも呼ばれ、数値の空欄だけでなく、センサ故障、入力ミス、参照先の不在など、幅広い形で現れる。 欠損の性質は分析の難度や信頼性に直結する。たとえば、欠損が単なる偶然の結果なのか、条件に依存して偏っているのかで、補完や削除の効果が大きく変わる。

1.2 欠損が生じる主な原因

1.2.1 取得・入力時の欠落

取得・入力段階では、観測者の入力忘れ、通信の途切れ、センサのキャリブレーション不良、ユーザー入力の形式エラー、回答拒否などが要因となる。設計時に必ずしも顕在化していない要因が、運用中に顕在化することも多い。 欠損が発生する背景には「物理的に測定できない」「ユーザーが答えない」「システムが受け付けない」といった複数の要素が混在しやすい。

1.2.2 保存・変換・連携時の欠落

保存や変換では、型変換の失敗、文字コード問題、データ形式の不一致、ETL(抽出・変換・投入)処理の不整合、外部連携の参照失敗などが原因になる。さらに、後から新しい項目を追加した場合、既存データでは値が生成されず欠損として扱われることもある。 連携の欠落は、特定のシステムや時点に偏って起きることがあり、欠損パターンの偏りに結びつきやすい。

1.2.3 追跡不能・選別による欠落

追跡不能は、フォローアップの未実施、アカウント停止、追跡期間の終了、転居・退職などにより対象から脱落する状況を指す。選別による欠落は、品質基準や審査条件、配信対象の絞り込みなどによって、結果として観測できない集団が生まれる状態である。 これらは欠損が「理由を持つ」ことが多く、単なる偶然とは異なる振る舞いになりやすい。

1.3 欠損が与える影響

欠損は、利用可能な情報量の低下だけでなく、推定の偏り、分散の増大、誤った相関構造の生成を引き起こす。特に欠損が目的変数や他の説明変数と関連している場合、削除や単純補完は系統的な誤差につながる。 また、欠損処理を学習と検証分割前に行うと、検証データに関する情報学習へ混入し、過大評価になる(リーケージ)リスクがある。さらに、補完により本来不確実だった領域が過度に確定的に扱われる点も注意が必要である。

2 欠損の種類と分類

2.1 欠損メカニズムの考え方

欠損の分類は「なぜ欠けたのか」に基づく。欠損がどの変数に依存し、どの条件下で観測されるかを整理することで、適切な補完・削除方針が定まりやすくなる。

2.1.1 ランダム性に基づく分類

2.1.1.1 欠損が無作為である場合

欠損が無作為(しばしばMCARと呼ばれる)とは、欠損の発生が観測値・未観測値のいずれとも系統的に関連しない状態を指す。たとえば、同一条件での一時的な通信断が完全にランダムに起きる場合が典型例として挙げられる。 この場合、削除しても推定量が一致しやすい一方、情報量の減少による分散増加は避けにくい。

2.1.1.2 欠損が条件付きで生じる場合

欠損が条件付き(しばしばMARと呼ばれる)とは、欠損の発生が観測済みの変数に依存するが、未観測の値そのものとは直接関連しない状態である。たとえば、ある地域における回答率が高いが、同じ地域内では未回答者の値が系統的に特定の方向へ偏るわけではない、といった状況が想定される。 この場合、観測変数を用いた補完や重み付けが有効になりやすい。

2.1.1.3 欠損が完全に偏る場合

欠損が完全に偏る(しばしばMNARと呼ばれる)とは、欠損の発生が未観測の値そのものと関連している状態を指す。たとえば、ある金額が大きいほど申告が抑制され、結果としてその値の欠損が偏って生じるようなケースである。 この場合、単純な補完は誤りを含みやすく、モデル化による工夫や感度分析が重要になる。

2.2 欠損の表現形式

2.2.1 欠損値記号・空欄・特殊値)

欠損はデータ上の表現として、空欄、NULL、NaN、特殊コード(例:-1、9999)などの形で現れる。重要なのは、これらが「本当に欠損を意味するのか」あるいは「意味のある値が変換で欠損扱いになっているのか」を区別する点である。 欠損表現の統一は、後続の診断や補完の品質を左右する。

2.2.2 異常値との混同

欠損を特殊値として保持している場合、それが異常値と区別されないと、統計量や学習結果に歪みが生じる。逆に、異常値を欠損として置き換えると、本来の異常パターンが消えてしまう。 欠損と異常の境界はルール化が必要であり、データ辞書や作成仕様に立ち返って確認するのが望ましい。

2.3 欠損パターン

2.3.1 一様欠損

一様欠損とは、対象全体で欠損率が比較的均等に分布する状態である。見かけ上は扱いやすいことが多いが、平均的に見えるだけで、潜在的には条件に依存した偏りが隠れている場合もある。 したがって、欠損率だけで判断せず、サブグループでの比較に進むことが重要である。

2.3.2 ブロック欠損

ブロック欠損は、特定の列や期間、あるいはグループにまたがって欠損がまとまって発生する状態である。たとえば、特定の装置が停止している時間帯のデータが連続して欠ける場合に相当する。 ブロック性は原因の推定につながり、補完では時間や状態の情報を考慮すると改善することがある。

2.3.3 縦横で偏る欠損

縦横で偏る欠損は、列方向(変数ごと)の偏りと、行方向(レコードごと)の偏りが同時に存在する状態を指す。たとえば、特定の属性だけ欠けやすく、かつ欠けている人(あるいはデバイス)が一定の集団に偏るといった形で現れる。 このパターンでは、単純な削除が集団を大きく変形させる恐れがあるため、行・列双方の分析が求められる。

3 欠損の診断と可視化

3.1 欠損率の集計

3.1.1 列(特徴)ごとの欠損率

列ごとの欠損率は、その特徴量がどれだけ利用できていないかを示す。欠損率が高い列はモデルにとって情報が少なく、補完の誤差が増える可能性がある。 一方で、欠損自体が情報(回答拒否や計測不能の背景)になる場合もあるため、単に削るのではなく「欠損が示す意味」を検討する必要がある。

3.1.2 行(レコード)ごとの欠損率

行ごとの欠損率は、レコードの欠損の程度を捉える指標である。行の欠損が多いレコードは、計測・入力の品質が低い可能性や、特定の運用条件に関連している可能性がある。 削除戦略を検討する際に、閾値設定の根拠を提供する。

3.1.3 サブグループ別の欠損率

サブグループ別の比較では、時刻、地域、装置ID、ユーザー属性などのカテゴリで欠損率を整理する。欠損が特定集団に偏ると、補完や削除の結果がその集団の推定に偏り得る。 欠損率の差は、欠損メカニズムの仮説(無作為・条件付き・偏り)を見立てる手掛かりにもなる。

3.2 欠損パターンの可視化

3.2.1 ヒートマップ

ヒートマップは、行と列の交点に欠損有無を色で表示する方法である。欠損のブロック構造や、列方向の偏り、特定レコード群の欠落などが直感的に把握できる。 大量データではサンプリングや並べ替え(欠損率順など)が有効である。

3.2.2 欠損マトリクス

欠損マトリクスは、欠損有無の行列を可視化し、欠損がどこに集中しているかを確認するための図式である。解像度が高く、個々の列同士の共欠損傾向(同時に欠けやすい組合せ)も読み取りやすい。 共欠損は補完の難度や、特徴量間の整合性に影響する。

3.2.3 欠損の分布グラフ

分布グラフでは、欠損の個数(あるいは欠損率)の分布を描き、どの程度の欠損を持つレコードが多数を占めるかを把握する。裾が重い場合、少数の極端に欠けたレコードが推定を左右することがある。 閾値処理や頑健性の検討に繋がる。

3.3 欠損と目的変数の関係点検

欠損の有無が目的変数と関連するかを検討することで、補完の妥当性の見立てができる。たとえば、欠けているレコードで目的変数の平均が明確に異なる場合、単純な削除は選択バイアスを生み得る。 相関の有無は、統計検定だけでなく、欠損フラグを説明変数として扱う試験的モデリングでも確認できる。

4 欠損への代表的な対処法

4.1 欠損を含むデータの削除

4.1.1 行削除(リストワイズ)

行削除(リストワイズ)は、欠損を含むレコードを丸ごと除外する手法である。実装が容易で結果を解釈しやすいが、欠損率が高いと有効データが大幅に減少する。 さらに、欠損が偏っている場合、対象集団が変質し推定が歪む。

4.1.2 列削除

列削除は、欠損率が高い特徴量を除外する方法である。重要度の低い変数の削減には有効だが、欠損自体が意味を持つ場合は情報を失う。 列削除の是非は、欠損率と目的変数との関係、モデル依存で変わる。

4.1.3 削除戦略の判断基準

削除戦略は、欠損率の大きさ、欠損の偏り、目的変数との関連、残存データの代表性を総合して決める。削除前後の分布比較やベースライン性能の確認が実務的である。 また、削除は戻れないため、まずは代替案(補完やフラグ特徴量)との比較を推奨する。

4.2 欠損値の補完(インピュテーション)

4.2.1 単純代入法(平均・中央値・最頻)

平均、中央値、最頻の代入は最も単純な補完である。計算は容易だが、分散を縮め、分布の形を変えるため、推定の不確実性を過小評価しやすい。 カテゴリ変数では最頻代入が特に極端になり得るため、欠損率が低い場合のベースラインとして扱うのが適切である。

4.2.2 回帰・分類に基づく補完

回帰・分類に基づく補完では、欠損していないサンプルを用いて欠けた特徴量を推定する。目的変数ではなく他の特徴量から補うため、単純代入よりも構造を反映しやすい。 ただし、補完モデルの過学習やリーケージがあると性能が悪化するため、学習データだけで作る運用が必要になる。

4.2.3 k近傍法による補完

k近傍法は、近いレコードの値を参照して欠損を埋める。距離計算の設計(標準化、カテゴリの扱い)が品質を左右する。 また、欠損が多い場合は近傍の定義自体が不安定になり得るため、前処理と併せた検討が求められる。

4.2.4 多重代入の考え方

多重代入は、欠損値の不確実性を反映するために、複数の補完結果を作成しそれぞれで分析する考え方である。推定の分散を適切に評価しやすい。 計算コストや実装の複雑さは増えるが、欠損が無視できない領域を扱う際に有用になる。

4.3 モデルに欠損をそのまま扱わせる

4.3.1 欠損フラグ特徴量の追加

欠損フラグは、各特徴量について欠損有無を0/1などで表し、同時に補完はせず保持する、または補完と併用する手法である。欠損が目的変数や他の状態と結び付いている場合、予測に寄与することがある。 特に欠損が情報を含む可能性があるときに検討される。

4.3.2 欠損に頑健なアルゴリズム

一部の学習アルゴリズムは欠損を前提として分岐を設計できる。欠損値を特別なルートとして扱ったり、探索時に欠損を許容したりすることで、補完による歪みを抑える場合がある。 ただし、アルゴリズムの欠損対応は一律ではないため、実装仕様の確認が必要である。

4.3.3 学習時の欠損考慮(分岐・サロゲート)

分岐による考慮では、欠損のあるサンプルを別の条件分岐へ流し、学習の過程で欠損の影響を吸収する。サロゲートの考え方では、欠損した主特徴量の代わりに他の関連特徴量で代替判定を行う。 これらは欠損率や特徴量の相関構造に依存して効果が変化する。

4.4 取り扱いの選択指針

4.4.1 欠損率が低い場合

欠損率が低いなら、単純補完と欠損フラグの組合せ、または限定的な削除が現実的なことが多い。とはいえ、欠損が偏っている可能性を残すため、診断結果に基づいた確認は省略しない。 ベースラインとして複数手法の比較を行うと判断が安定する。

4.4.2 欠損率が高い場合

高い欠損率では、削除によるデータ減少が致命的になり得るため、補完や欠損を扱うモデル設計を優先する傾向がある。さらに、多重代入や感度分析など、欠損不確実性を評価する枠組みが重要になる。 無理に単純代入だけで進めると、性能評価が良く見えても実運用で崩れることがある。

4.4.3 偏りが疑われる場合

欠損が条件付きまたは偏りを含む可能性がある場合、単純な削除・単純代入はバイアス源になり得る。補完モデルの設計に目的変数に関連する情報を反映すること、欠損フラグで兆候を学習させることが選択肢となる。 最終的には仮定の揺らぎを検証する感度分析が、説得力のある結論へ繋がる。

5 前処理・パイプライン設計

5.1 学習データと検証データの分離

欠損処理は、学習と評価の境界を尊重して実施する。具体的には、欠損統計量(平均、分散、補完モデル学習)を検証データに基づいて算出しない。 パイプラインではデータ分割の後に欠損処理を組み込み、再現性のある手順にすることが重要である。

5.2 補完の実装順序(リーケージ回避)

補完の実装順序は、特徴量の標準化、カテゴリのエンコード、補完モデルの学習といった工程を含めて整合させる。特に、補完前に必要な変換をどう適用するかがリーケージに直結する。 実務では、ワークフローを1つのオブジェクトとして管理し、分割単位でフィットと変換を自動適用する設計が有効である。

5.3 再現性とバージョン管理

欠損処理の結果は、乱数要素を含む補完(サンプリング、近傍の選択など)で揺らぎ得る。したがって、乱数シード、ライブラリのバージョン、データのスナップショットを記録し、同条件で再実行できる状態を整える。 バージョン管理は、性能劣化の原因追跡にも役立つ。

5.4 チェックリスト(実務運用)

運用上は、欠損の表現統一、欠損率のモニタリング、補完モデルの学習範囲、欠損フラグの整合、学習・検証の分離の確認を行う。さらに、データ更新時に同じ処理が適用されるか、仕様書とコードが一致しているかを点検する。 最後に、処理結果の分布が異常に変化していないかを確認し、監視項目に組み込むのが望ましい。

6 モデル評価と妥当性確認

6.1 欠損処理前後の比較

欠損処理前後で性能と分布の両方を比較する。処理後に指標が向上しても、実データでの再現性がなければ採用できない。 また、予測確率や残差の分布、特徴量の重要度が大きく変わる場合は、補完による構造変化を疑う。

6.2 代表指標(分類・回帰)

分類では、精度だけでなく再現率・適合率、AUC、校正(確率の当たり具合)などが候補になる。回帰では、平均二乗誤差、平均絶対誤差、決定係数などが用いられる。 欠損が確率推定に影響する場合、校正や分位点検が特に重要になる。

6.3 感度分析(欠損仮定の揺らぎ)

感度分析は、欠損メカニズムや補完戦略の仮定を変えたときに結論がどれだけ動くかを確かめる手順である。たとえば、削除、単純補完、推定補完、欠損フラグ併用を比較し、順位や係数の符号が安定するかを確認する。 結果の頑健性が高いほど、意思決定に対する信頼度が高まる。

6.4 バイアスの検出と説明可能性

欠損処理は選択的な情報の残り方を生み、結果としてバイアスが混入し得る。欠損率の高い集団における誤差を別途評価することで、見落としを減らせる。 説明可能性の観点では、欠損フラグが大きく寄与する場合、その背景要因が業務上の制約や運用状態にあるかを検討する。

7 注意点と落とし穴

7.1 欠損と異常値の混同

欠損と異常値を同一視すると、意味の異なる情報をまとめて扱ってしまう。たとえば、計測不能の欠損を“異常として除外すべき値”として誤処理すると、本来の運用課題が見えなくなる。 逆方向も同様で、異常値を欠損として補完すると極端な挙動が緩和され、リスクが過小評価される。

7.2 学習データ由来の情報漏えい

欠損処理で行う統計量の計算や補完モデルの学習が、分割境界を越えて検証データに触れると、性能が不自然に高く見える。特にパイプラインを手作業で行うと起きやすい。 自動分割と同時に処理する実装方針により、再発を防ぐことができる。

7.3 過剰な補完による不確実性の軽視

欠損をすべて補完してしまうと、不確実性が過小評価される。さらに、補完モデルが誤っている領域であっても、値が“ある”ことで評価が歪むことがある。 補完の度合いを段階化し、欠損フラグや信頼区間の扱いを併用することで、過度な確信を抑えることが可能である。

7.4 データ収集設計へのフィードバック

欠損が繰り返し発生するなら、処理で取り繕うだけでなく収集設計を改善するべきである。入力バリデーション、計測の冗長化、必須項目の見直し、欠損が起きる条件の可視化などが候補となる。 欠損率の変化をKPIとして追うことで、データ品質の継続的改善につなげられる。

8 実務で役立つ補足

8.1 現場用の運用テンプレート

運用テンプレートでは、データ受領から分割、欠損診断、処理、学習、評価、保存までの流れを明確にする。特に、どの工程が学習期間に属し、どれが評価期間に属するかを固定化する。 テンプレート化により、担当者変更があっても手順の逸脱が起きにくくなる。

8.2 記録すべきメタデータ

欠損処理に関わるメタデータとして、欠損率の時点、欠損表現の規則、補完方法、補完モデルの学習条件、乱数シード、処理後の統計量を記録する。これらは後から比較や監査を行う際の根拠になる。 記録の粒度は目的とコストのバランスで決めるが、最低限の再実行性は確保する。

8.3 意思決定における不確実性の扱い

予測や推定は欠損に起因する不確実性を含む。意思決定では、点推定だけでなく、感度分析の結果、誤差分布の様子、校正の状態を踏まえた判断が望ましい。 リスクが高い領域では、欠損が多いサブグループへの対応(追加データ収集、運用ルールの調整)も検討対象になる。

8.4 よくある質問(FAQ)

Q. 欠損率が低いのに性能が落ちるのはなぜか。 A. 欠損が目的変数と関連している、または欠損と他特徴量の組合せが重要な場合がある。単純代入より、欠損フラグや補完モデルの改善を検討する。

Q. すべて補完すればよいか。 A. 不確実性を軽視する恐れがあり、欠損メカニズムが偏りを含むと補完誤差が増える。欠損フラグ併用や感度分析で妥当性を確認する。

Q. 欠損診断は何を見ればよいか。 A. 欠損率の列・行、サブグループ差、欠損の可視化、目的変数との関連の兆候をセットで確認する。