みんなのAI
機械学習AI論文
読み込み中…

学ぶ

🏅マイ実績

Ch.01

欠損値処理:データの空白を埋める戦略

実務データには表のセルのように値が空いた欠損値がよく現れます。放置すると学習が止まったり偏った結果になったりします。本章では空白の埋め方から、極端な値(外れ値)の検出、クラスが偏ったクラス不均衡の補正まで、機械学習の土台となるデータ品質パイプラインをわかりやすく整理します。

チャプター別 機械学習図

チャプターを選ぶと、下の図がそのチャプターの内容に切り替わります。機械学習の流れを一覧で確認できます。

欠損値処理:空白を減らし信頼を高める前処理

欠損値とは? データ表で値が空いている状態です。パズルでピースが抜けたようなものです。実務では未回答、センサー欠損、転送中のロストなど様々な原因で生じます。
欠損メカニズム(MCAR/MAR/MNAR)は「なぜ空いたか」を問う枠組みです。MCAR(完全無作為欠損 · Missing Completely At Random)はコーヒーをこぼして消えたように偶然だけの欠損。MAR(無作為欠損 · Missing At Random)は「男性」回答者だけ化粧品支出が空、のように他の観測変数と結びつく欠損。MNAR(非無作為欠損 · Missing Not At Random)は低所得の人が所得欄を空けるように、欠損そのものに意味が乗る場合です。
処理の型は大きく三つです。リストワイズ削除、一つの値で埋める単一代入、複数回埋めて統合する多重代入です。失うデータ量と速度・統計的厳密さのトレードオフが違うため、状況に合わせて選びます。
単一代入と多重代入:単一代入は平均・最頻値などで一度だけ埋める速い方法ですがリスクがあります。多重代入はもっともらしい完成データを複数作り(並行世界)、結果を統合して結論を出す慎重な方法です。
外れ値の二つの見方:一変数だけ見る単変量(Box Plot)と、変数の組み合わせがおかしい点を見る多変量(Mahalanobis/Isolation Forest/SVDD)は別の問いに答えます。実務では両方確認するのが安全です。
クラス不均衡の補正:一方のクラスに偏ると少数を「ないもの」として学習しがちです。Tomek Links(境界の整理)、SMOTE/ADASYN(少数の合成)、SMOTE+Tomek(合成後の整理)などを組み合わせます。
要点:欠損処理は単独テクニックではなく、外れ値・不均衡とつながった一つの品質パイプライン設計です。

単一代入でよく使う代表値・手法

主要な単一代入を、定義と簡単な式でまとめた表です。

補完値・手法定義(簡単な式)
平均値(Mean)標本平均で補完: xmiss←xˉ=1n∑i=1nxix_{miss} \leftarrow \bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_ixmiss​←xˉ=n1​∑i=1n​xi​
中央値(Median)中央値で補完: xmiss←median(x)x_{miss} \leftarrow \mathrm{median}(x)xmiss​←median(x)
最頻値(Mode)最も頻度の高い値で補完: xmiss←arg⁡max⁡v count(x=v)x_{miss} \leftarrow \arg\max_v\,\mathrm{count}(x=v)xmiss​←argmaxv​count(x=v)
回帰・KNN・Hot-deck回帰: x^=f(z)\hat{x}=f(\mathbf{z})x^=f(z), KNN: xmiss←1k∑j∈Nkxjx_{miss}\leftarrow\frac{1}{k}\sum_{j\in N_k}x_jxmiss​←k1​∑j∈Nk​​xj​, Hot-deck: xmiss←xdonorx_{miss}\leftarrow x_{donor}xmiss​←xdonor​

直感

機械は空欄を嫌います。 放置すると計算できずエラーになります。OMRのようにマークがなければ採点できないのと同じです。
誤った補完は危険です。 すべてを0や平均で埋めると分布が壊れ、モデルが補完値を本物と信じ込み過度に自信過剰な予測をします。
前処理はセットメニューです。 欠損を埋めただけでは終わりません。外れ値の除去・不均衡の調整まで一気通貫で設計し、本番でも破綻しないようにします。
公平性・安全性にも直結します。 グループによって欠損が偏る(MAR/MNAR)と、悪い代入は群間の性能差を広げます。前処理で偏りを点検します。
モデル選びより先に効きます。 同じアルゴリズムでも前処理で結果は大きく変わります。「良いモデル」より「良いデータの流れ」が効くことも多いです。
運用(デプロイ後)も安定します。 欠損・外れ値・不均衡のルールを決めておけば、新データも同じ基準で扱え、再学習や監視がしやすくなります。

数理

実務の流れ:EDA → 欠損の仮説 → 代入 → 極端な値の検出(外れ値:Box Plot 等) → クラス比率の調整(不均衡:SMOTE 等) → 学習・評価の順です。
単一代入の式:平均で埋めるなら xmiss←xˉx_{miss} \leftarrow \bar{x}xmiss​←xˉ、中央値なら xmiss←median(x)x_{miss} \leftarrow \mathrm{median}(x)xmiss​←median(x) と書きます。
多重代入の考え方:mmm個の完成データセット(並行世界)を作り、それぞれの推定量 θk\theta_kθk​ を統合します。θˉ=1m∑k=1mθk\bar{\theta}=\frac{1}{m}\sum_{k=1}^{m}\theta_kθˉ=m1​∑k=1m​θk​
IQR に基づく Box Plot 規則:下側 Q1−1.5×IQRQ_1-1.5\times IQRQ1​−1.5×IQR から上側 Q3+1.5×IQRQ_3+1.5\times IQRQ3​+1.5×IQR を柵とし、その外は外れ値候補とみなします。
共分散:二変数が一緒にどれだけ動くかを数値化したものです。直感は「背が高いほど体重も大きいか」のような同調です。式は cov(X,Y)=E[(X−μX)(Y−μY)]\mathrm{cov}(X,Y)=\mathbb{E}[(X-\mu_X)(Y-\mu_Y)]cov(X,Y)=E[(X−μX​)(Y−μY​)]。変数を並べた共分散行列 Σ\SigmaΣ が多変量の雲(楕円)の向きと伸びを決めます。
Mahalanobis 距離:単なる直線距離ではなく、共分散(分布の形)で距離を測ります。DM(x)=(x−μ)⊤Σ−1(x−μ)D_M(\mathbf{x})=\sqrt{(\mathbf{x}-\boldsymbol\mu)^\top\Sigma^{-1}(\mathbf{x}-\boldsymbol\mu)}DM​(x)=(x−μ)⊤Σ−1(x−μ)​(Σ−1\Sigma^{-1}Σ−1 が要です)。
Isolation Forest:外れ値はクラスタから「遠い」より早く孤立する、という発想です。無作為分割を繰り返すと、少数回で切り離される点は外れ値候補(経路長が短い)。高次元でも比較的強く、分布仮定も弱めです。
SVDD(One-class):正常データだけで境界(最小体積の球やカーネル境界)を学習し、外側を外れ値とみなします。ワンクラス異常検知に多用されます。
クラス不均衡:陽性が極端に少ないと「多数だけ当てる」でも精度が高く見えます。正解率だけでなく Recall・Precision・F1・PR-AUC を見て、必要ならリサンプリングします。
Tomek Links:異なるクラス同士が互いに最近傍になる境界付近のペアです。重なりを減らすため主に多数側を削除して掃除する(アンダーサンプリング型のクリーニング)手法です。
SMOTE:少数サンプル x\mathbf{x}x と近傍 xnn\mathbf{x}_{nn}xnn​ の間を補間して合成します。xnew=x+λ(xnn−x)\mathbf{x}_{new}=\mathbf{x}+\lambda(\mathbf{x}_{nn}-\mathbf{x})xnew​=x+λ(xnn​−x), λ∼U(0,1)\lambda\sim U(0,1)λ∼U(0,1)。複製より過学習を抑えられますが、境界が汚いと悪い合成も増えます。
複合リサンプリング(例: SMOTE+Tomek):まず SMOTE で少数を増やし(oversample)、次に Tomek で境界の曖昧なペアを掃除(clean)。増やす→掃除の順で覚えるとよいです。