Pandas プロファイリングで 2 つのデータセットを比較する方法
ビジュアライゼーションは EDA の基礎です。新しい未知のデータセットに直面した場合、視覚的な検査により、利用可能な情報の感触をつかみ、データに関するいくつかのパターンを描き、対処する必要がある可能性のあるいくつかの問題を診断できます。その点で、Pandas プロファイリングは、すべてのデータ サイエンティストのツール ベルトに不可欠なスイスナイフです。過去の記事で、パンダのプロファイリングが時系列 EDA の実行中にどのように役立つかについて説明しましたが、2 つのデータセットを比較できるとしたらどうでしょうか?
データ サイエンス プロジェクトの開発を開始し、データ変換とエンジニアリングからどれだけの成果が得られているかを理解するのに苦労している人はどれくらいいるでしょうか?
今日のブログ投稿で取り上げるのは、まさにそのことです。最も有名な 1 行のコード EDA を活用して、データ サイエンスの開発プロセスとデータ品質の改善を促進する方法です。Pandas-Profiling の比較レポート機能を活用して EDA プロセスを促進し、データをより高速かつスマートに変換できる可能性を説明します。
この記事で使用するデータセットは、 Miriam SantosによるHCC データセットである Kaggle にあります(ライセンス: CC0: Public Domain )。この特定のユース ケースでは、データ品質の問題を人為的にいくつか追加して、可視化がどのようにデータ品質の問題を検出し、効率的な緩和に導くことができるかを示しました。すべてのコードとサンプルは GitHub で入手できます。少し復習が必要な場合は、このブログをチェックして、パンダのプロファイリング スキルを磨いてください。それでは、ユースケースを続けましょう!
Pandas プロファイリング: すぐに使える EDA
まず、HCC データセットのプロファイルを作成し、レポートで提案されているデータ品質の問題を調査します。
pip install pandas-profiling==3.5.0
Alerts shown in Pandas Profiling Report (scheenshot by author)
- 重複: データ内の 4 つの重複行。
- 定数: 「O2」の定数値「999」;
- 高相関: 高相関としてマークされたいくつかの機能。
- Missing : 「フェリチン」に値がありません。
重複行の削除: ドメインの性質によっては、エラーにならずに同じ値を持つレコードが存在する場合があります。ただし、このデータセットの一部の機能は非常に具体的であり、個人の生物学的測定値 (「ヘモグロビン」、「MCV」、「アルブミン」など) を参照していることを考慮すると、複数の患者がすべての機能について同じ正確な値を報告する可能性は低いです。 . これらの重複をデータから削除することから始めましょう。
無関係な機能の削除: O2 の定数値も、データの真の矛盾を反映しており、モデル開発のための貴重な情報を保持していないようです。実際のユースケースのシナリオでは、ドメインまたはビジネスの専門家と反復するのが良い標準ですが、このユースケースの例の目的のために、先に進んで分析から除外します。
欠落データ代入: HCC データセットも欠落データの影響を非常に受けやすいようです。この問題に対処する簡単な方法 (不完全なレコードまたはフィーチャ全体の削除を回避する) は、データ代入に頼ることです。平均代入を使用して、欠落している観測値を埋めます。これは、最も一般的で単純な統計的代入手法であり、多くの場合、ベースライン メソッドとして機能します。
並べて比較: データのより高速でスマートな反復
さて、楽しい部分です!データセットに変換の最初のバッチを実装した後、データの全体的な品質への影響を評価する準備が整いました。ここで、pandas-profiling の比較レポート機能が役に立ちます。以下のコードは、開始方法を示しています。
比較で両方のレポートがどのように表示されるかを次に示します。
データセットの概要からすぐに理解できることは何ですか? 変換されたデータセットには、カテゴリ特徴が 1 つ少なく (「O2」が削除された)、165 の観測が含まれ (重複を含む元の 171 に対して)、欠損値はありません (元のデータセットの 79 の欠損観測とは対照的です)。
しかし、この変換はデータの品質にどのような影響を与えたのでしょうか? そして、それらの決定はどれほど良いものでしたか?
それについて深く掘り下げてみましょう。重複レコードに関しては、ドロップ後の変数の分布とデータセットのパターンに関して特に影響はありませんでした。行われた欠損値代入は別の話です。
予想通り、データ代入が実行された後、観測値の欠落はありません。nullity カウントとマトリックスの両方が、両方のバージョンのデータの違いを示していることに注意してください。変換されたデータでは、「Ferritin」には 165 個の完全な値があり、nullity マトリックスに空白は見つかりません。
ただし、比較レポートから別のことを推測できます。「フェリチン」ヒストグラムを調べると、値を平均値に代入することで元のデータ分布がどのように歪められているかがわかりますが、これは望ましくありません。
これは、相互作用と相関関係の視覚化によっても観察されます。ここでは、「フェリチン」と残りの機能との関係に、愚かな相互作用パターンとより高い相関値が現れます。
これは、比較レポートがデータ変換後に導入された違いを強調するのに役立つだけでなく、それらの変換に関する重要な洞察につながるいくつかの視覚的な手がかりを提供することを示しています。この場合、より専門的なデータ代入戦略を検討する必要があります。 .
最終的な考え
この小さなユース ケース全体を通して、同じプロファイリング レポート内の 2 つのデータ セットを比較して、EDA 中に実行されたデータ変換を強調し、データ品質への影響を評価することの有用性について説明しました。
それにもかかわらず、データ中心のソリューションでは機能評価と目視検査を (再) 反復する必要があるため、この機能のアプリケーションは無限にあります。トレーニング、検証、およびテストセットの分布やデータ品質管理の比較から、合成データ生成のプロセスなどのより高度なユース ケースまで。
YDataのCDO であるFabiana Clemente氏
改善されたデータで AI を加速します。