はじめまして、データサイエンティストのますみです!
この記事では、機械学習による予測をしたり、データマイニングやデータ分析をしたりする前に実施するべき基礎分析の手順をわかりやすくまとめました。データサイエンティストや機械学習エンジニアの方々などはぜひ参考にしてください。
基礎分析とは?
基礎分析とは、「目的としたデータを分析する前に実施する、準備段階の分析」です。具体的には、使用データセットを特徴を理解する分析を行います。
基礎分析をしないと、以下のようなことが発生するリスクがあります。
- バグの混入
- 妥当ではない分析手法の選択
- 想定しない予測結果が出力
- 分析結果に対する誤った解釈
基礎分析ロードマップ
個人的におすすめする基礎分析の手順は下記の通りです。
基礎分析にどこまでの時間を要することはケースバイケースですが、下記の4ステップの基礎分析は実施して損はしないと思います。
1. ファイル内の「データ形式」の理解
ファイル(csvやtsvなど)としてデータを渡された場合、PythonやRやExcelなどで読み込む前にデータ形式をしっかりと確認して、理解しましょう。
この工程の確認を怠ることによって、後述工程で思わぬバグに繋がることがあります。
データ形式の確認方法
VS Codeやテキストエディタなどのツールでファイルを開き、テキストデータとしてデータ形式を確認する方法を推奨します。
バグに繋がる例
例えば、下記のテーブルデータが格納されたCSVを、データ提供者から渡されたとします。
この時、Pythonのpandasライブラリのread_csv
でそのまま読み込んだ場合、どのようなバグに繋がる可能性があるでしょうか?
ユーザーID | 名前 | 保持スキル |
---|---|---|
0001 | Alice | Python |
0075 | John | R |
0125 | Kevin | Python, R, Excel |
ユーザーID,名前,保持スキル
"0001",Alice,Python
"0075",John,R
"0125",Kevin,"Python, R, Excel"
まずユーザーIDは、string
ではなく、以下のようにint64
として読み込まれるでしょう。
もしも他のデータフレーム(テーブル)で、0パディングされたデータを使っている場合、テーブルの結合(merge)などをする際に、想定通りの結果にならない可能性があります。
ユーザーID | 名前 | 保持スキル |
---|---|---|
1 | Alice | Python |
75 | John | R |
125 | Kevin | Python, R, Excel |
また、もしもデータ提供者の人的ミスで以下のようなcsvになっていた場合、テーブルはどのように読み込まれるでしょうか?
ユーザーID,名前,保持スキル,,
"0001",Alice,Python,,
"0075",John,R,,
"0125",Kevin,Python,R,Excel
このまま読み込むと、以下のように余分な列が生成されてしまうでしょう。
ユーザーID | 名前 | 保持スキル | Unnamed: 3 | Unnamed: 4 |
---|---|---|---|---|
1 | Alice | Python | NaN | NaN |
75 | John | R | NaN | NaN |
125 | Kevin | Python | R | Excel |
上記のようなバグを防ぐために、いきなりデータを読み込むのではなく、一度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軸の標準偏差・ピアソンの相関係数」はほぼ一致しています。
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
を推奨します。
最後に
いかがだったでしょうか?
この記事を通して、少しでもあなたの困りごとが解決したら嬉しいです^^
📩 仕事の相談はこちら 📩
お仕事の相談のある方は、下記のフォームよりお気軽にご相談ください。
問い合わせフォームはこちら
もしもメールでの問い合わせの方がよろしければ、下記のメールアドレスへご連絡ください。
info*galirage.com(*を@に変えてご送付ください)
🎁 「生成AIの社内ガイドライン」PDFを『公式LINE』で配布中 🎁
「LINEで相談したい方」や「お問い合わせを検討中の方」は、公式LINEでご連絡いただけますと幸いです。
(期間限定で配信中なため、ご興味ある方は、今のうちに受け取りいただけたらと思います^^)
公式LINEはこちら
🚀 新サービス開始のお知らせ 🚀
新サービス 「AI Newsletter for Biz」 がスタートしました!
ビジネスパーソン向けに「AIニュース」を定期配信する完全無料のニュースレターです📩
ますみが代表を務める「株式会社Galirage」では、「生成AIを用いたシステムの受託開発(アドバイス活動含む)」をしています。
そこでお世話になっているお客様に対して、「最新トレンドを加味したベストな提案」をするために、日々最新ニュースを収集する仕組みを構築していました。
今回は、そこで構築した仕組みを活用して、より多くの人に有益な情報を届けたいと思い、本サービスを開始しました!
一人でも多くの方にとって、「AI人材としてのスキルアップ」につながれば幸いです^^
▼ 登録はこちらから ▼
https://bit.ly/ai_newsletter_for_biz_ai_lab