データクリーニングへようこそ!

こんにちは!Exam ATPA(予測分析上級トピック)の学習において、最も重要なチャプターの一つへようこそ。「ゴミを入れれば、ゴミが出てくる(Garbage in, garbage out)」という言葉を聞いたことがあるかもしれません。予測分析において、モデルの精度は入力するデータの質で決まります。現実世界のデータは往々にして厄介なものです。欠損値という「穴」があったり、外れ値という「奇妙な驚き」が潜んでいたりします。このチャプターでは、こうした問題を見つけ出し、さらに重要なこととして、モデルが本来の力を発揮できるように修正する方法を学んでいきましょう!

パート1:外れ値(Outliers)への対処

ある成人グループの身長データを調べていると想像してみてください。ほとんどの人は150cmから180cmの間です。ところが突然、身長360cmという記録が現れました!これが外れ値(Outlier)です。他の観測値から大きくかけ離れたデータポイントのことを指します。

外れ値とは具体的に何か?

外れ値とは、母集団からの無作為抽出において、他の値から異常なほど離れた位置にある観測値のことです。外れ値が生じる原因には以下のようなものがあります。
1. データ入力エラー:「12」と入力すべきところを「120」と打ち間違えた。
2. 測定エラー:センサーの故障。
3. 自然な変動:平均年収の調査における大富豪の年収のように、極端な値が真実である場合もある。

外れ値を見つける方法

スプレッドシートを眺めるだけで見つけられなくても大丈夫です。便利なツールがあります!
箱ひげ図(Boxplots):あなたの頼れる相棒です。「ひげ」の外側に個別の点としてプロットされているものは、一般的に外れ値とみなされます。
散布図(Scatterplots):2つの変数の関係性に当てはまらない点がないか確認するのに最適です。
IQRルール:数学的には、第3四分位数から \(1.5 \times IQR\) を超えて高い、あるいは第1四分位数から \(1.5 \times IQR\) を超えて低い値は、しばしば外れ値と呼ばれます。
Zスコア:データポイントのZスコアが3より大きい(または-3より小さい)場合、平均から非常に離れているため、外れ値である可能性が高いです。

外れ値をどう扱うか?

外れ値を見つけた場合、主な選択肢は3つあります。
1. そのまま残す:データが正確で、稀ではあるが現実の現象を表していると確信できる場合。
2. 削除する:エラーであることが確実な場合、またはモデルに不当なバイアスを与えてしまう場合。
3. 変換・キャップをかける:これはウィンザー化(Winsorization)とも呼ばれます。極端な値を、より穏当な値(99パーセンタイル値など)に置き換えます。

クイックレビュー:外れ値は平均を歪め、分散を大きくしてしまいます。削除ボタンを押す前に、必ずその正体を調査しましょう!

重要なポイント:

外れ値は必ずしも「悪い」データではありません。「異なる」データに過ぎないのです。あなたの仕事は、それが有益なシグナルなのか、それとも邪魔なノイズなのかを判断することです。


パート2:欠損データ — データセットの「穴」

欠損データとは、ある観測値において特定の変数に値が記録されていない状態を指します。アクチュアリー業務においては、保険契約者がアンケートに答えなかったり、システムが取引を記録し損ねたりと、よくある頭痛の種です。

なぜ欠損データが問題なのか?

ほとんどの予測モデル(標準的なGLMなど)は、欠損値を扱えません。行の中に欠損値があると、ソフトウェアはその行全体を破棄してしまうことがあり、他の列にある有益な情報まで無駄にしてしまいます!

欠損の3つのタイプ

問題を解決するには、なぜデータが欠損しているのかを理解する必要があります。
1. 完全にランダムな欠損(MCAR: Missing Completely at Random):パターンが全くありません。誰かが台帳のランダムなページにコーヒーをこぼしてしまったような状態です。
2. ランダムな欠損(MAR: Missing at Random):欠損が他の観測可能なデータと関連している場合。例えば、男性の方が女性よりも体重に関するアンケートへの回答率が低い、といったケースです。
3. ランダムではない欠損(MNAR: Missing Not at Random):欠損が、欠損している値そのものと関連している場合。例えば、所得が非常に高い人が、アンケートで所得を報告するのを拒否するケースです。

知っていましたか? MNARへの対処が最も難しいのは、欠損の理由が「欠損データそのもの」の中に隠れているからです!

欠損データへの対応戦略

1. 削除(「簡単な」方法)
リストワイズ削除:欠損値がある行をすべて削除します。簡単ですが、大量のデータ損失につながる可能性があります。
使用すべき時:欠損データの量が非常に少なく、かつMCARである場合のみ。

2. 代入(「穴埋め」する方法)
代入(Imputation)とは、推定値で穴を埋めることです。
平均値・中央値・最頻値代入:その列の平均などで穴を埋めます。警告:これはデータの分散を過小評価させ、自信過剰なモデルを作ってしまうリスクがあります!
予測代入:他の変数に基づき、回帰などのミニモデルを使って欠損値を予測します。

3. 「欠損インジケーター」(「アクチュアリー的な」方法)
推測する代わりに、新しいバイナリ(ダミー)変数(例: \(Is\_Missing = 1\) )を作成します。元の変数については、欠損箇所を定数(0など)で埋めます。これにより、モデルは「データが欠損しているという事実そのもの」が予測因子であるかどうかを学習できるようになります!

重要なポイント:

欠損データを放置してはいけません。「何もしない」という選択は、ソフトウェアにその行を削除させるという選択であり、結果にバイアスを生む可能性があるからです。


パート3:よくある落とし穴とヒント

避けるべきよくあるミス

盲目的な削除をしない:ある列でデータの40%が欠損している場合、その行を削除すればデータセットが崩壊します。行ではなく列を削除することを検討しましょう。
「隠れた」欠損値に注意:欠損データは空白とは限りません。「999」「不明」「0」とコード化されている場合があります。要約統計量を確認し、不審な値がないか常にチェックしましょう。
目的変数の代入:通常、目的変数(予測したい対象)を代入してはいけません。その場合は該当する行を削除するのが適切です。

簡単な例え

データクリーニングは食事の準備に似ています。外れ値は、他より100倍辛い唐辛子のようなものです。そのまま入れておくと、料理全体を台無しにしてしまいます。欠損データは、レシピで材料が足りないようなもの。その料理を諦める(削除)、似たような材料で代用する(代入)、あるいは材料がないという事実からシェフの買い忘れを察知する(インジケーター変数)といった対応が必要です。

試験に向けたチェックリスト

特定(Identify):箱ひげ図や散布図、IQRやZスコアを使って外れ値を特定する。
診断(Diagnose):その欠損データはMCAR、MAR、MNARのどれか?
処理(Treat):状況に合わせて削除、代入、インジケーター変数のどれかを選択する。
記録(Document):ATPA試験では、なぜそのクリーニング手法を選んだのか、その理由を常に説明しましょう。「方法」と同じくらい「なぜそうしたのか」が重要です!

その調子です! とても順調ですよ。データクリーニングをマスターすることは、一流の予測アナリストになるための土台となります。データが綺麗になれば、楽しいモデリング作業はずっと簡単になりますよ!