欠損値について知っておきたいこと
欠損値とは、観測している特定の変数が何かしらの理由で欠落していることを言います。欠損値は適切に処理をしないと、データ解析や機械学習の結果に影響を与えます。
普段データに触れていない方だと欠損値に馴染みが少ないかもしれませんが、欠損値について理解することは、開発者やビジネスサイドの人にとってもサービスを設計する上で役に立ちます。
そのため今回は、欠損値について知っておきたいことについて簡単に紹介します。
欠損値はどのように生まれるのか
ECサイトのように顧客データの登録が必要なサービスを例にしてみましょう。
サービスによって細かい部分は違いますが、通常、顧客データとして入力する項目には、「名前などの必須項目」と「性別などの任意項目」があります。このとき、任意項目が欠損値となりうる項目となります。
例えば、顧客が入力するデータで性別を任意にした場合、顧客が性別を入力しなかった場合、その顧客の性別が欠損値となります。
その顧客が男性なのか女性なのかは、データ上は知ることができないということです。
ちなみに、機械学習などの世界では、欠損していないデータを用いて欠損しているデータを予測する問題などを問くことが多いです。
システム上では問題なくても解析上で欠損値が問題となる
さきほどの例のシステムでは、顧客の性別を知らなくてもシステムは問題なく動きます。性別がないことによってシステムが動かなくなるのであれば、それは単なるシステムのバグです。
しかし、システムの運用上問題がなくても、解析をしようとすると話が変わります。
例えば、男女別でキャンペーンを打ちたいという企画が立ち上がり、購買行動の違いからキャンペーンの内容を考えたいとしたらどうなるでしょうか。
この場合、欠損値となるデータを無視して解析を実施しないといけなくなります。
欠損値を含むデータを無視しても、欠損値を含む顧客のデータが少ないのであれば、そこまで問題にならないかもしれません。
しかし、複数の顧客の属性が必要となる詳細な解析しようとすればするほど、欠損値の影響が無視できないものとなっていきます。
欠損値があるデータを対象外にすると極端にデータが少なくなることがある
通常、任意入力の項目は1つだけではありません。
欠損値を持っているデータを単純に解析対象から外そうとすると、解析で使う任意入力の項目のどれか1つでも欠損値となった場合は解析の対象外となります。
先ほどの例でいうと、キャンペーンに性別だけでなく、年齢も考慮したいとか、家族構成なども考慮したいとなると、それらを全部入力している解析対象となる顧客は極端に少なくなります。
欠損値を含む解析対象外となるデータが増えると、解析で使っているデータと実際にサービスで使っているデータの差が大きくなり、解析結果を信頼できなくなります。
もともと100万行のデータがあったのに、解析対象が1万行になってしまったら、解析者にとって都合のよいデータだけ引っ張ってきていると思われてしまっても仕方ありません。
デフォルト値は欠損値よりひどい悪影響をもたらす
任意項目の話とは少しずれてしまいますが、ユーザの利便性のために設けられたデフォルト値は欠損値より悪影響があります。
自分の年齢を選択するようなフォームなどで、最初から30歳が選択されていて、そこから実際の年齢を形式の時の30歳がデフォルト値となります。
デフォルト値を気にせずにデータを解析すると、デフォルトから変更しない人が全員30歳として登録されてしまうため、集計したときに「うちの顧客のメインターゲットは30代だ!」などの間違った結論を導く原因となってしまいます。
さすがにここまで乱暴な解析をすることはないと思いますが、デフォルト値が解析に影響を与えることは認識しておきましょう。
とくに解析を外注したときなどは、デフォルト値に関する情報連携がもれがちになるので気をつけないと、せっかくの外注費が無駄になりかねません。
デフォルト値は、欠損値を特定の値で勝手に埋めてしまうこととなるため、百害あって一利なしです。データとしては欠損値のまま保存しておいたほうがマシと言えます。
欠損値を補間すると意味が生まれる
解析者は欠損値の対応として、欠損値を含むデータを削除する以外に、平均値や0など他の値で補間して解析をすることがあります。
しかし、実は欠損値を補間することも一筋縄ではいかないものとなります。
商品レビューを例に考えてみましょう。
商品を買った人が、買った商品に任意で5段階の評価を追加することができるとします。
多くの人が商品を買ってもレビューをしてくれない場合、あなたなら欠損値をどのように埋めますか?
・平均値で埋める場合、「欠損値は評価をしない人は平均的な評価をする」という意味になります。
・最低評価の1で埋めた場合、「買ったけど評価をしてくれない人は全て悪い評価をする」という意味になります。
このように欠損値は、何かしらの値で埋めた瞬間に意味を持つようになります。
そのため、埋め方によっては間違った解析結果を導き出す原因となります。
間違った結果で間違った方向に意思決定をしないためにも、どのように欠損値を埋めるかは慎重に検討をする必要があります。
まとめ
「欠損値について知っておきたいこと」について紹介しました。
今回は単純な例で欠損値について紹介したのですが、実は欠損値があることは解析し始めてから気づく事が多いです。
そのため、データに欠損値がどのくらい含まれるか、解析にどのような影響を与えるかを把握するために、データ解析の初期の段階で探索的データ解析が重要となってきます。
データを使ってビジネスを成長させていくことが当たり前になっている近年、欠損値の影響でやりたいことができなくなったり、間違った方向に意思決定をしてしまわないように、どのようにデータを取っていけば欠損値が少なくなるか、どのように欠損値を処理すれば間違った結果を導き出すことを防ぐことができるか、サービス設計の段階から考えていきましょう。