基礎分析ロードマップ【データサイエンティスト向け】

この記事では、機械学習による予測をしたり、データマイニングやデータ分析をしたりする前に実施するべき基礎分析の手順をわかりやすくまとめました。データサイエンティストや機械学習エンジニアの方々などはぜひ参考にしてください。

基礎分析とは?

基礎分析とは、「目的としたデータを分析する前に実施する、準備段階の分析」です。具体的には、使用データセットを特徴を理解する分析を行います。

基礎分析をしないと、以下のようなことが発生するリスクがあります。

  • バグの混入
  • 妥当ではない分析手法の選択
  • 想定しない予測結果が出力
  • 分析結果に対する誤った解釈

基礎分析ロードマップ

個人的におすすめする基礎分析の手順は下記の通りです。

基礎分析にどこまでの時間を要することはケースバイケースですが、下記の4ステップの基礎分析は実施して損はしないと思います。

ファイル内の「データ形式」の理解
記述統計による「データ概要」の理解
分布の可視化による「データ分布」の理解
相関や独立性の分析による「変数間の関係性」の理解

1. ファイル内の「データ形式」の理解

ファイル(csvやtsvなど)としてデータを渡された場合、PythonやRやExcelなどで読み込む前にデータ形式をしっかりと確認して、理解しましょう。

この工程の確認を怠ることによって、後述工程で思わぬバグに繋がることがあります。

データ形式の確認方法

VS Codeやテキストエディタなどのツールでファイルを開き、テキストデータとしてデータ形式を確認する方法を推奨します。

バグに繋がる例

例えば、下記のテーブルデータが格納されたCSVを、データ提供者から渡されたとします。

この時、Pythonのpandasライブラリのread_csvでそのまま読み込んだ場合、どのようなバグに繋がる可能性があるでしょうか?

ユーザーID名前保持スキル
0001AlicePython
0075JohnR
0125KevinPython, R, Excel
ユーザーID,名前,保持スキル
"0001",Alice,Python
"0075",John,R
"0125",Kevin,"Python, R, Excel"

まずユーザーIDは、stringではなく、以下のようにint64として読み込まれるでしょう。

もしも他のデータフレーム(テーブル)で、0パディングされたデータを使っている場合、テーブルの結合(merge)などをする際に、想定通りの結果にならない可能性があります。

ユーザーID名前保持スキル
1AlicePython
75JohnR
125KevinPython, R, Excel

また、もしもデータ提供者の人的ミスで以下のようなcsvになっていた場合、テーブルはどのように読み込まれるでしょうか?

ユーザーID,名前,保持スキル,,
"0001",Alice,Python,,
"0075",John,R,,
"0125",Kevin,Python,R,Excel

このまま読み込むと、以下のように余分な列が生成されてしまうでしょう。

ユーザーID名前保持スキルUnnamed: 3Unnamed: 4
1AlicePythonNaNNaN
75JohnRNaNNaN
125KevinPythonRExcel

上記のようなバグを防ぐために、いきなりデータを読み込むのではなく、一度VS Codeなどで生のファイルを確認することを推奨します。

2. 記述統計による「データ概要」の理解

データ形式を理解して、データを読み込み終わったら、データ概要を一通り確認しましょう。

確認項目としては下記が挙げられます。

  • 最小値
  • 最大値
  • 平均値
  • 中央値
  • 最頻値
  • 標準偏差
  • レコード数
  • 欠損値
  • 外れ値
  • 異常値
  • 歪度
  • 尖度
  • 周期性(時系列データの場合)

上記のデータ概要を確認することで、データのクレンジング(前処理)を行ったり、データの選別を行ったり、使用できる分析手法の特定をしたりすることができます。

これらの要約統計量の一部は、下記のようなPythonコードにより、簡易的に算出することができます。

import pandas as pd

df = pd.read_csv("sample.csv")

print(df.info())
print(df.describe(include="all"))

3. 分布の可視化による「データ分布」の理解

データ概要が確認できたら、分布を実際に可視化して、データの分布を理解しましょう。

同じ平均値と中央値だったとしても、データの分布の特徴が全く異なることは多々あります。

例えば、AUTODESK Researchが示した下記のデータセットでは、「X軸の平均・Y軸の平均・X軸の標準偏差・Y軸の標準偏差・ピアソンの相関係数」はほぼ一致しています。

(Matejka et al., 2017より引用)

4. 相関や独立性の分析による「変数間の関係性」の理解

個別のデータに対する理解が深まったら、変数間の関係性を理解していきましょう(複数の変数がある場合)。

多重共線性(マルチコ)を防いだり、データの妥当性の検証をしたりすることができます。

量的な変数における変数間の場合は、相関を用いましょう。

もしもデータセットが正規分布にしたがっている場合(パラメトリック)、ピアソンの相関係数を使用して相関を求めましょう。一方で、分布の前提がない場合は、スピアマンの順位相関係数を使用しましょう。

質的な変数における変数間の場合は、独立性を用いましょう。

クロス集計表を作成したり、その後カイ二乗検定をしたりして、独立性を確認することができます。

EDAとは?

EDA(Explanatory Data Analysis)とは、「探索的データ分析」のことで、「データセットの主要な特性を要約し、可視化する分析」です。

上述したような基礎分析をする際には、EDAがしばしば用いられます。

PythonによるEDAのパッケージの例として、下記の4つがあります。

  • pandas-profiling
  • sweetviz
  • dtale
  • autoviz

要約統計量と分布を観察するだけの軽めのEDAを行いたい場合は、minimal=Trueを渡したpandas-profilingを使用することを推奨します。

しっかりしたEDAを行いたい場合は、アソシエーションの見やすいsweetvizか多機能なdtaleを推奨します。

最後に、綺麗なFigureを出したい場合は、autovizを推奨します。

最後に

いかがだったでしょうか?

この記事を通して、少しでもあなたの学びに役立てば幸いです。

この他にも、Twitterにて「データサイエンティスト / エンジニアに役立つ情報を発信中」です。

ご興味があれば、ぜひフォローお願い致します。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA