データサイエンス講座【初級編】第5回:欠損値の処理方法
サマリ
実際のデータには欠損値(欠けている値)が含まれることがほとんどです。このような欠損値をどのように処理するかは、分析結果の質に大きな影響を与えます。今回は、欠損値の処理方法について初心者向けに分かりやすく解説します。
詳細
欠損値とは何か
欠損値とは、データセット内に記録されていない、または利用できない値のことです。例えば、顧客アンケートで「年収」という項目に回答がなかったり、センサーの故障により一部の日付のデータが記録されなかったりすることがあります。欠損値は「欠損データ」や「ミッシングデータ」とも呼ばれ、データサイエンティストが日々対処する重要な課題です。
欠損値が生じる理由はさまざまです。データ入力時の誤り、回答者の拒否、機器の故障、データベース間の連携ミスなど、実務的な場面では常に欠損値が発生する可能性があります。
欠損値の確認方法
まず、自分が扱うデータにどの程度の欠損値が含まれているかを把握することが重要です。Pythonのpandasライブラリを使用している場合、isnull()やinfo()といった関数を使って欠損値を検出できます。
全体のデータのうち欠損値の割合を計算し、欠損値がランダムに分布しているのか、特定の列に偏っているのかを確認します。この段階での分析が、後の処理方法の選択に直結することになります。
欠損値の処理方法①:削除する
最もシンプルな方法は、欠損値を含む行または列を削除することです。欠損値の割合が少ない場合(例えば1〜5%程度)には、この方法が有効です。
行を削除する場合、該当する行全体が失われるため、データセットのサイズが小さくなります。一方、列を削除する場合は、その変数全体の情報が失われるため、分析の精度に影響する可能性があります。削除を選択する際には、失うデータがどの程度の価値を持つかを慎重に判断する必要があります。
欠САイ処理方法②:補完する
欠損値を何らかの値で埋める方法を補完と呼びます。これはデータを失わずに分析を進めたい場合に有効です。
最も基本的な補完方法は、平均値や中央値、最頻値などの統計量を使う方法です。例えば、顧客の年齢に欠損値がある場合、全体の平均年齢で埋めるというアプローチです。この方法は計算が簡単で、データセットのサイズを保つことができます。
より高度な方法には、他の変数の関係性を活用した補完があります。例えば、線形回帰を使って欠損値を推測したり、最近傍法(k最近傍法)を用いて類似したレコードの値で補完したりする方法があります。これらは単純な統計量よりも精度が高いことが多いです。
欠損値の処理方法③:フラグを立てる
欠損値が何らかの意味を持つ場合があります。例えば、顧客が「年収を答えたくない」という意思表示が欠損値である可能性があります。このような場合、欠損値自体が重要な情報となります。
このアプローチでは、元の列を補完しつつ、「この値は欠損していた」というフラグを別の列として追加します。機械学習モデルがこのフラグを学習することで、欠損データが意味を持つ場合に有効に機能します。
どの方法を選ぶか
欠損値の処理方法は、欠損の割合、欠損のパターン、分析の目的によって異なります。欠損値が少ない場合は削除で良いでしょう。一方、ビジネス上の理由で欠損値が生じている場合はフラグを立てることが有効です。
重要なのは、選択した処理方法とその理由を明確に記録し、分析結果に与えた影響を把握することです。これが信頼できるデータ分析への第一歩となります。
