見出し画像

〈データ分析〉データがやってきたらまず何をするか?

みなさんこんにちは。くにです。

こちらに書いたように、私はかなり四苦八苦しながらデータ分析を学んでいきました。この過程で、泥々になりながらメモを技術やノウハウをメモしてきました。Evernoteにコツコツ書いて、箇条書きで300程度になりました。

これをチームメンバーに伝えようとしたのですが、そのままではうまくいきませんでした。しかも、継ぎ足したタレのように新鮮味もなくなっていました。化石のようなメモ…。

この化石メモの中から、これだけはチームメンバーに伝えたい!と思うものを選び、表現を簡素にすべくツイートすることにしました。
ターゲットは、「中級者手前」の人。整ったデータをもとに回帰モデルを作ったり、パラメータチューニングができるけど、問題設定や探索的分析は苦手だという方です。

このnoteでは、その中からメモを紹介していきたいと思います。
まずは、以下のスレッドに投稿した「目の前にデータがやってきたら何からやる?」という話をします。

目の前にデータがやってきた。さてどうする?

あなたはデータ分析者。ある顧客からの依頼で予測モデルを作ることになっています。この顧客とは初めてのプロジェクト。今日になってようやくデータが到着しました。

【質問です】
目の前には、たくさんのcsvファイルがあります。
かろうじて目的変数の箇所は分かっていますが、他はよくわかりません。
さて、何から始めますか?

分析の方向性やアウトプットは、ある程度合意されているとします。

まずは、データの状況を確認!

まずはそのデータがどうなっているのか、状況の確認からやりましょう。
当たり前のようですが、大切なことです。できるだけ疑ってかかるのがコツだと思います。

リアルなデータというのは、参考書に載っているサンプルデータやコンペで扱うデータとはかなり様子が違います。irisデータのようには簡単に分類できないよ…という話だけではなくて、データそのものが酷いことになっている場合がよくあります。想定外の連続と言ってもよいでしょう。

Web企業のようにデータ整備や分析の歴史が長い組織内だと話が違ってくるかもしれません。しかし、一般の事業会社でデータ分析を初めたばかりのときや、新しい領域ではより一層気をつける必要があります。

具体的には、次のようなことを確認していきます。
まずは基本的なところから。データの外観、外見をチェックする作業です。

【データの外観チェック】
・データの形式を確認する。
・データサイズ(物理的なサイズ、行数、列数)を確認する。
・テキスト形式の場合、文字コードや改行コードを確認する。
・重複したファイルや行がないか確認する。重複列もあるかもしれない。
・欠損値の有無を確認する。

これらの点は、深く突っ込んだチェックでなく、検品作業のようなものですね。予定通りデータが来ているかを、ざっくり見てみる感じです。

例えば、こんなことはよくある話です。

・事前に文字コードがUTF-8だと聞いていたのにSJISだった。
・ファイル名は別なのに全く同じデータが存在している。
・CSV形式だけど、カンマを含む値がある。
・欠損が思いのほか多い。
・目的変数のラベルがほぼ欠損している。

この時点で多くの問題を発見されることもあります。

更に注意深くデータをみる1: 発生源の確認

さて、これで終わりでしょうか。
そうではありません。まだまだ確認すべきことがあります。大いに疑ってかかりましょう。考えると切りがないのですが、私がよく確認することを上げてみます。大きく2つの観点があります。

まずひとつ目は、データの発生源を確かめることです。顧客への確認が必要になってきます。事前に確認は済んでいるかもしれませんが、データを見た上で改めて確認していきます。これは分析の途中でも発生することがありますね。

【データの発生源を確かめる】
・そのデータはどうやって生成されたのか。
・何を計測したのか、誰がいつ抽出したのか。
・システムから抽出された場合、どんなシステムか。
・アンケートの場合、いつ誰に向けたアンケートか。回答率はどうか。
・人手で作ったデータの場合、誰がどうやって作ったのか。
・人手でラベルを貼った場合、何人でどういう基準で作業したのか。
・似たような名前の列があるが、違いは何か。

こちらで上げたポイントは、データ提供者・ステークホルダーとの会話が必要になります。つまり、データ分析を行う上では、こうしたやり取りができるような準備をしておく必要があります。
これはプロジェクト計画の観点になります。

更に注意深くデータをみる2: 疑ってかかる

更なる確認、2つ目です。
それは、データ自体を更に疑って深く見ることです。
以下は一例ですが、私が過去に見逃した数々の失敗を練り込んでいます。

【更に疑ってかかる】
・データ列の意味と値が関連しない項目はないか。
・一つの列に数字と文字が混じっていないか。
・'-9999' や '-' など、如何にも意味がありそうな値はないか。
・全部同じ値の列はないか。(数値なら分散0)
・見出しと値のズレはないか。(一つずつずれてないか)
・途中から急に列が減ったり増えたりしていないか。
・目的変数がラベルのとき、嘘はないか。
・整数に見えるが、もしやカテゴリではないか。
・データ順に隠れた意味はないか。
・年月日とあるが、それは何を指すのか。
・間違って去年のデータを送ってきてはいないか。
・値の'0'は本当にゼロなのか。そうでないのか。

どれだけ失敗を重ねてきたのか…と思います。
こちらに上げたようなことには、何度も遭遇しています。

こうした話をチームメンバーにすると、「お手軽にチェックするツールはないのですか?」という話がでてきます。たしかに、あると便利なのですが、意味自体が変わってくるようなデータのミスについては、人が確認しなくてはなりません。この作業は感覚的なものになりがちです。

例えば、
・データを見て、件数を見て、基本統計量や欠損の確認をする。
・異常値があればその周辺のデータを含めて生データをみる。
・グラフで可視化して、スパイクや「変な感じ」がしないかをみる。

システムとしてデータがきちっと定義され、データ分析に適した整備がされているのであれば、ここまでの確認は必要ないでしょう。しかし、私の場合は、そういったデータに出会うことは稀で、何かしら確認することが必要なことが多かったです。

そういう事もあって、以下のようなツイートをしました。

初めに引用したTwitterのスレッドでは、この他にも話題を少し広げています。この中では、データ確認に関することが重要だと思い、noteにまとめてみました。

長くなってしまいましたが、最後まで読んでいただきありがとうございました!


この記事が気に入ったらサポートをしてみませんか?