全4225文字

外れ値の確認と外れ値処理

 続いて、データの分布を見ることで外れ値の有無を確認しましょう。一般的には、データをヒストグラムや箱ひげ図などにしてチェックすることで、外れ値を確認できます。

 図3は先ほどのニュース配信アプリのユーザーの「年収」をヒストグラムにしたものです。右側に、他の大多数のユーザーを大幅に引き離して年収の高いユーザーが数人いることが確認できます。このように、ヒストグラムなどで他の多くの値から大きく外れている値が「外れ値」です。

図3●ユーザー年収の分布
図3●ユーザー年収の分布
ニュース配信アプリケーションのユーザーの「年収」をグラフにしたもの。右側に極端に「年収」が大きいユーザーがいる。こういったデータが「外れ値」に当たる
[画像のクリックで拡大表示]

 外れ値には「データの入力がそもそも誤りである」場合と、「値そのものは正しいが、偶然に外れ値が生じてしまった」場合の2パターンがあります。

 対処法は大きく3通りです。

・正しい値に修正する
データの入力ミスやシステムのエラーなど、外れ値が生じた要因が判明している場合は正しい値に修正します。

・行ごと除外する
要因が不明な場合や、要因が分かっていてもあまりに外れ具合が大きいデータは行ごと除外することを検討します。

・そのまま使用する
外れ値の要因が判明しており、かつ分析結果に大きな影響がなさそうな場合は、そのまま使用することもあります。

 外れ値が残ったままデータ分析を実行すると、ほとんどのケースで全体の分析結果がゆがんでしまいます。極端に大きな値や小さな値を分析データに含めることで、分析結果が外れ値に引っ張られてしまうからです。

 例えば非常に年収の高い一部ユーザー、つまり外れ値のユーザーのアプリ起動回数が偶然に多かったとします。一方で、その他の多くのユーザーに関しては、年収800万円くらいまでは「年収が上がるほどアプリの起動回数が少なくなる」傾向にありました。

 このデータを回帰分析すると、全体としては「年収が上がるほどアプリの起動回数が多くなる」という結果になってしまいました。図4の右上の非常に年収の多いユーザー(外れ値)に引っ張られて、分析結果がゆがんでしまったのです(回帰分析については本講座シリーズの過去記事を参照)。

アプリの利用頻度と年収の関係〔1〕
アプリの利用頻度と年収の関係〔1〕
外れ値を含んだデータを分析すると、結果が外れ値に引っ張られる
[画像のクリックで拡大表示]

 この場合、右上のデータを除外して回帰分析を実施すると、より正確にユーザー全体の傾向を捉えた回帰直線が描けます(図5)。外れ値を含んだデータを分析する場合は、外れ値に引っ張られた結果、どんな影響があるのか十分考慮して結果を解釈しましょう。

図5●アプリの利用頻度と年収の関係〔2〕
図5●アプリの利用頻度と年収の関係〔2〕
外れ値を除いた分析結果。外れ値を含んだまま分析した前のグラフと比べると、回帰直線の向きが逆になっているのが分かる
[画像のクリックで拡大表示]

「ダミー変数化」と「多重共線性の回避」

 データの前処理には、ほかにもいろいろな方法があります。一般的な例を2つほど見ていきましょう。

質的データの場合はダミー変数に変換する(ダミー変数化)

 ダミー変数とは、「ある状態かどうか」を「0」または「1」で表したものです。ダミー変数化によって数字ではないデータを数字に変換して扱うことができます。

 例えば、「男性であること」を「1」にして「女性であること」を「0」にする、「犬、猫、鳥」という質的データをそれぞれ「犬であること」「猫であること」「鳥であること」を「1」で表す(逆に「~でない」場合は「0」で表す)などのダミー変数化が挙げられます(表1)。ダミー変数化によって、回帰分析で質的変数が使用可能になります。

表1●ダミー変数の例
表1●ダミー変数の例
ダミー変数は「ある状態かどうか」を「0」または「1」で表したもの。数字以外のデータを数字に変換して扱える
[画像のクリックで拡大表示]

 本講座シリーズの以前の記事で、ECサイトからユーザーが「退会する」場合を「1」、「退会しない」場合を「0」で表したのを覚えているでしょうか。これもダミー変数化の一種です。

関連性が高いと思われる変数は同時にモデルに組み込まない(多重共線性の問題を回避)

 関連性が高い変数を同時にモデルに組み込むと、正しい分析結果が得られないことがあります。これを「多重共線性」の問題と呼びます。例えば関連性が高い変数が2つある場合は、どちらかの変数を除外してから分析するといった対応をします(多重共線性については本講座シリーズの過去記事を参照)。

 ここまでの解説で、データの前処理の概要とその重要性が一通り把握できたことでしょう。データ分析の目的は、結果を基にビジネス上の意思決定をすることです。有益な意思決定をするためには、データ分析の結果が信頼できるものでなければなりません。そのためには、データの前処理が非常に重要なことを忘れないようにしましょう。

 なお、今回紹介したデータの前処理は、RやPythonといったプログラミング言語で実行できます。次回の記事では、これらプログラミング言語を使った分析の基本を見ていきます。

資格試験問題にチャレンジ

 今回の内容の理解度を、「データ分析実務スキル検定」の問題でチェックしてみましょう。

サンプル問題

 データ分析を行うための前処理として空欄に当てはまる正しい記述の組み合わせはどれか。ひとつ選べ。

・重回帰分析を用いて需要予測モデルを作成しようとしていたが、互いに相関の(1)変数のグループがあったため、グループ内の変数をいくつか除外したものをモデリング用のデータとした。

・アンケートにおいて、あらかじめ入力させた回答者情報(例えば生まれ月)を確認するような質問を設置して、質問の回答とあらかじめ入力させた回答者情報で矛盾が(2)データは分析対象から除外した。

A) (1)大きい (2)ある
B) (1)大きい (2)ない
C) (1)小さい (2)ある
D) (1)小さい (2)ない