探索的データ分析とデータマイニング

探索的データ分析(EDA:Exploratory Data Analysis)とは


少し前から探索的データ分析という言葉をネットで時々見かけるようになりました。


機械学習のモデルを作る際に、まずデータの特徴を理解するために行う作業のようです。


データの特徴を理解することで、より良いモデルが作れたり作業が効率化できる可能性が高まるとのことです。


具体的には各データの平均、分散、最大値、最小値などの基本的な統計量を調べたり、ヒストグラムや散布図などを描いて分布を把握することなどのようです。


機械学習ツールなどにも昔からこうした機能やパッケージなどが前処理の一部として提供されているので特に真新しいものではないかと思いますが、機械学習人口が増えてきているので改めて注目されているのかもしれませんね。


ただ「探索的データ分析」というと、個人的には「データマイニング」という言葉が想起されます。


データマイニングとは


最近あまり聞かなくなったような気もしますが、「データマイニング」とは大量のデータからその中に隠れている(であろう)有用な知見を発掘することです。


砂山の中から一粒の金を見つけ出すことなどにも例えられたりして、とにかく大変な労力を伴う作業としてよく表現されていました。


ちなみにこうした作業を効率的に行うことができるのが、機械学習をはじめとした各種アルゴリズムです!というのが十数年前くらいに機械学習が流行りだした先駆けだったような気がします。


当時は目的をきちんと定めた仮説検証型と対比される形で、データマイニングを知識発見型や探索型と説明されることもよくあったので、私にとっては「探索的データ分析」にはデータの特徴を知るだけでなく、大量のデータの中から有用な知見を発掘するといったデータマイニングという意味のほうが思い起こされます。



探索的データ分析の有用性


探索的データ分析の意味はさておき、今一般的に使われている方の「データの特徴を知るために色々な切り口でデータを見ておく」ということは大切です。


データの分布や偏りを見ることで平均値と中央値に大きな差があったり外れ値がある場合はそれに気づくことができます。


トレンドや傾向をあらかじめ把握することで、データ分析の進め方や方針を立てる作業が効率的に進められるかもしれません。


またデータの定義や仕様等についても確認しておくことで、不明瞭であったり不正確であったりすることがもしあればそれを事前に解決・考慮して手戻りやミスを防ぐこともできるかもしれません。


データの特徴を知るための作業はある程度パターンや型にはめることができると思いますので、スクリプト化するなどして標準化しておくのも効率化の点では良いかと思います。


一方で、何か有用な知見がないか探すためにデータをあれこれと調べてみるという探索は、そもそもデータの中に有用な知見が隠れているとは限らないので、効果が期待できるか微妙で徒労に終わることも多いかと思います。


ただデータ分析者にはこういったある種宝探しのような分析も好きな人が結構多い気がします。


とはいえ業務として行うと成果が問われるので、まずは研究目的として時間を確保することができたり、あるいは隙間時間などで可能ならトライしてみるくらいのほうが良いのかもしれません。