プロンプトと設定
このシナリオは、データサイエンス、データアナリティクス、機械学習の面接に適しています。データセットにはユーザー行動、地域、所得、およびチャーンラベルが含まれており、行の18%で所得が欠損しています。処理方法を選択する前に、なぜ欠損しているのかを説明しなければなりません。割合の数値単体は決定基準にはなりません。
面接官が見ているポイント
- すべてのnullを同じ問題として扱うのではなく、MCAR、MAR、MNARを区別できているか。
- 欠損インジケーター、補完モデル、訓練・バリデーションの境界について説明できるか。
- 欠損に含まれるシグナル、選択バイアス、情報リークを検出できるか。
回答前に確認すべき明確化のための質問
- 所得はユーザー入力によるものか、収集エラーによる消失か、それとも一部の地域でのみ表示されるものか? メカニズムによって識別可能なものが変わります。
- 目的は予測か、それとも因果推定か? 予測であれば欠損シグナルを保持する場合がありますが、因果推論にはより強力な仮定と感度分析が必要です。
- 本番推論時にも所得は利用不可となるのか? オンラインに存在しないオフラインのバックフィルは、特徴量の不一致(feature mismatch)を引き起こします。
- 分割はユーザー単位か、時間単位か、それとも行ごとのランダムか? 複数のセットに同じユーザーが存在すると、補完や評価を通じて情報がリークする可能性があります。
30秒の回答フレームワーク
私は欠損インジケーターを観測されたフィールドおよびターゲットと照合し、既知の原因、観測データによって裏付けられるMARの説明、観測データでは検証できないMNARの仮定を切り分けます。補完器は訓練データのみで適合(fit)させ、欠損インジケーターを保持し、元の欠損パターンに基づいて評価します。メカニズムが不確実な場合は、削除、単純補完、モデルベースの補完、感度シナリオを比較し、ビジネスコストとバリデーションのエビデンスが許容できる選択肢を採用します。
ステップ別の詳細解説
1. nullを分析可能なイベントに変換する
各フィールドに対して欠損インジケーター M を作成し、時間、地域、デバイス、チャネル、およびターゲットラベルごとにプロファイリングします。まずログ、フォームの動線、上流のスキーマを調査します。リリース後に欠損が急増している場合は、補完によってインシデントを覆い隠すのではなく、データ収集を修正します。
2. 3つのメカニズムの境界を説明する
MCARは、欠損が観測値および未観測値のいずれとも無関係であることを意味します。その仮定およびその他の必要な条件下では、完全ケース分析(complete-case analysis)にメカニズムによるバイアスは生じませんが、サンプルサイズが失われます。MARは、観測変数を条件付けした後、欠損が欠損値自体とは無関係であることを意味します(例:地域やデバイスによって説明される形で所得が欠損している場合)。MNARは、観測変数をコントロールした後でも、欠損が未観測の所得やその原因と関連し続けていることを意味します(例:高所得ユーザーが回答を拒否する場合)。
これらのメカニズムは、単一のプロットで証明できるラベルではありません。ログや観測変数は説明を裏付けることができますが、MNARにはドメインの仮定、外部データ、または感度分析が必要になることがよくあります。
3. 処理方法を選択する
- 修復可能な収集障害が欠損の原因である場合は、ソースをバックフィルするかパイプラインを修正し、その修復をバージョン管理します。
- 欠損にシグナルが含まれる予測タスクの場合は、訓練統計量または訓練モデルに基づいて補完器を適合させ、欠損インジケーターを追加し、本番環境でも同じシグナルが存在することを確認します。
- 欠損率が小さくMCARが妥当である場合は削除も許容される可能性がありますが、サンプルの損失とスライスごとの影響を報告します。
- 不確実性が重要である場合やMNARが考えられる場合は、多重代入法、明示的な欠損モデル、境界分析(bounds)、パターン混合(pattern-mixture)感度分析を比較します。単一の平均値補完はエビデンスになりません。
scikit-learnの SimpleImputer、KNNImputer、IterativeImputer は、それぞれ異なる仮定の下で使用するツールであり、メカニズムを自動的に特定するものではありません。これらは訓練データで適合させ、バリデーション、テスト、本番データに適用します。
4. バリデーションとリーク防止策を設計する
補完、スケーリング、エンコーディングを1つの訓練パイプラインにまとめます。クロスバリデーションの各フォールド内で再適合させ、分割前にグローバルな平均値、中央値、近傍集合を計算してはなりません。時間データは時間で、ユーザーデータはユーザーで分割します。元の欠損率、補完後の分布、インジケーターの係数、キャリブレーション、スライスメトリクスを比較します。本番環境の劣化をシミュレートするために、バリデーションデータに追加の欠損を注入します。
5. ビジネスコストを用いて結果を承認する
高価値ユーザーの誤分類コストが一般ユーザーの見逃しコストよりも高い場合、AUCだけでは不十分です。さまざまな欠損パターンの下で、再現率(recall)、キャリブレーション、しきい値コスト、レビュー件数、却下リスクを報告します。リリース前に補完器のバージョン、スキーマ、ポリシーを凍結し、欠損のドリフトを監視して、ドリフトがしきい値を超えた場合は自動判定を停止するか安全なルールにフォールバックします。
質の高い模範回答
「18%という割合だけで削除や補完を決定することはありません。まず所得の欠損が収集エラー、ユーザーの選択、特定のチャネル動線のいずれによるものかを特定し、時間、地域、デバイス、チャーンごとに欠損インジケーターをプロファイリングします。観測フィールドで説明できる場合はMARを仮定し、各訓練フォールド内で各補完器を適合させ、インジケーターを保持します。高所得ユーザーほど回答率が低いというドメイン知識のエビデンスがある場合は、MNARを現在のデータでは証明できない仮定として扱い、パターン混合や境界感度分析を実行します。ユーザー単位または時間単位で分離されたバリデーションセット上で、削除、単純補完、モデルベース補完を比較し、キャリブレーション、スライス別コスト、本番環境の欠損状況を報告します。本番環境で所得が取得できない場合は、オフラインのバックフィルに依存しません。」
よくあるミス
- 欠損率が18%だからという理由で削除する → サンプル損失と選択バイアスが測定されない → まずメカニズム、スライス、ビジネスコストを分析する。
- 分割前にグローバルな平均値を計算する → バリデーション情報が訓練に入り込む → 各訓練フォールド内で補完を適合させる。
- 欠損インジケーターをMNARの証明と呼ぶ → 相関関係は未観測の原因を明らかにするわけではない → 仮定を明記し、感度分析を実行する。
- AUCのみを比較する → しきい値コスト、キャリブレーション、ドリフトが見落とされる → スライス、判定コスト、本番監視を報告する。
追加質問と回答
本番環境で所得がまったく利用できない場合はどうしますか?
本番環境で利用可能なフィールドを使用して訓練とバリデーションを再構築します。欠損インジケーターは本番でも安定したシグナルである場合のみ保持し、そうでなければ特徴量を削除します。本番環境で同じ判定タイミングで取得できない限り、バックフィルされた所得によるオフライン限定の精度向上を作ってはなりません。
MNARの感度をどのようにテストしますか?
欠損値が観測値とどのように異なるかについての妥当な範囲を定義し、そのシフト量や欠損モデルを変化させて、メトリクスとビジネスコストを再計算します。妥当な範囲内で結論が逆転する場合は、仮定依存であると明示し、外部データを収集するか追加のサンプリングを設計します。
多重代入法とモデルベース補完の違いは何ですか?
モデルベース補完は多くの場合1つの補完済みデータセットを作成します。これは予測には有効な場合がありますが、不確実性を過小評価する可能性があります。多重代入法は複数の妥当なデータセットを作成して推定値を統合するため、不確実性を明示的に扱えます。どちらも訓練の境界内で適合させ、ターゲットリークを回避する必要があります。
欠損率が18%から30%に上昇した場合、まず何をしますか?
通常のスコアリングを一時停止し、スキーマ、クライアントバージョン、計測実装、上流ジョブを調査して、影響を受けているスライスを特定します。収集インシデントである場合は、再訓練の前に修復またはバックフィルを実施します。ビジネス上の変化である場合は、メカニズム、しきい値、フォールバックポリシーを再評価します。