私はデータマイニングのCSマスター学生です。私のスーパーバイザーは、分類器を実行したり、データセットを使用したりする前に、データを完全に理解し、データがクリーンで正しいことを確認する必要があると言いました。
私の質問:
データセットを理解するためのベストプラクティスは何ですか(数値属性と名義属性を持つ高次元)?
データセットがクリーンであることを確認するためのプラクティス?
データセットの値が間違っていないことを確認する方法
私はデータマイニングのCSマスター学生です。私のスーパーバイザーは、分類器を実行したり、データセットを使用したりする前に、データを完全に理解し、データがクリーンで正しいことを確認する必要があると言いました。
私の質問:
データセットを理解するためのベストプラクティスは何ですか(数値属性と名義属性を持つ高次元)?
データセットがクリーンであることを確認するためのプラクティス?
データセットの値が間違っていないことを確認する方法
回答:
データのセットでできる基本的なことは次のとおりです。
エラーを特定するためのデータを理解することは、まったく異なる球技であり、非常に重要です。
たとえば、特定のデータセットにシリアル番号が必要であり、シリアル番号が最大文字列長255、最小文字列長5の英数字でなければならないというルールを設定できます。
データを見ると、特定のシリアル番号の値が表示される"PLEASE ENTER SERIAL"
ことがあります。これは完全に有効ですが、間違っています。
それは一種の明らかなことですが、株価データを処理していて、1000株の価格帯が1ドル未満であったとします。多くの人々は、株価がそれほど低いことは特定の取引所では無効であり、他の取引所では完全に有効であることを知りません。表示されているものに問題があるかどうかを理解するには、データに関する知識が必要です。
現実の世界では、データを十分に理解する余裕がない場合があります。
問題を回避する方法は、周囲の人々を活用することです。小さいデータセットの場合、データ全体を確認するように誰かに依頼できます。大規模なものの場合、ランダムなサンプルのセットを引き出して、データの健全性チェックを誰かに依頼するのがより適切です。
さらに、データのソースと、そのデータソースがどれだけ信頼できるかを疑問視することが不可欠です。多くの場合、データの競合するソースが複数あり、「真実のソース」を決定するルールを作成します。1つのデータセットが特定の側面で優れたデータを持っていることもありますが、他のデータセットは他の領域でより強力です。
手動で入力されたデータは通常、私が最も懐疑的なものですが、場合によっては、自動化を通じて取得できるものよりも強力です。
私は@Kallestadの回答がとても好きですが、メタステップを追加したいと思います:データがどのように収集され、どのタイプの制約があるかを理解してください。データが収集されるときに非自明なステップがないところを考えることは非常に一般的だと思いますが、そうではありません:ほとんどの場合、何らかのプロセスまたは個人がデータを考えており、これらのステップは可能ですデータの形状に影響を与えます。
2つの例:最近、世界中のさまざまな請負業者によってデータが収集された研究がありました。私は説明会に参加していなかったので、それは私には不透明でした。残念ながら、フランスの一部の地域では測定値がオフになっています。人々は全員アイス塾が好きでしたが、ランダムな分布が予想されました。この均一性の明確な理由はなかったので、エラーを探し始めました。私が請負業者に問い合わせたとき、ブリーフィングを誤解し、彼のデータベースからアイスクリーム愛好家だけを選択しました。
2番目のエラーはより困難でした。地理分析を行うと、多くの人が非常に大きな移動パターンを持っていることがわかりました。私がアップストリームのppeopleと話をしたとき、彼らはデータ集約ソフトウェアにわずかなバグを発見しました。
結論:
私は通常2段階のアプローチを取ります
各変数の平均、範囲、分散、欠損数、カーディナリティなどの単変量(変数ごとの)要約統計を計算し、奇異性(変数の意味を考えると妥当ではない範囲など)を探します。それらの奇数変数のヒストグラムをプロットします。
データを管理可能なサブセットに分割し(意味のある変数を選択し、それに応じてデータを分割します(例:すべてのポジティブな例、すべてネガティブ))、視覚的に探索します(例:ggobiを使用)。特に、ブラッシングや散布図などのツールを使用して、変数がどのようにリンクされているかを理解してください。
また、モデルの構築を開始するときは、残差をプロットして、外れ値に起因する可能性のある極端なエラーを探すか、混同マトリックスを見てバランスが取れていることを確認してください。k-fold cross validationを使用してモデルを最適化し、各フォールドのトレーニングエラーの分散を調べます。あるフォールドのパフォーマンスが他のフォールドよりもはるかに悪い場合、外れ値が含まれている可能性があります。
以下に、データサイエンスStackExchange(/datascience//a/722/2452)に関連する(ただし、データクリーニングの側面に焦点を当てた)質問への私の回答のコピーがあります。読者の利便性。私はそれがあなたの質問にも部分的に答えると信じており、それが役立つことを願っています。答えはR
エコシステムに焦点を合わせていますが、他のデータ分析環境でも同様のパッケージやライブラリが見つかります。二つながらまた、論文引用データ作成にもRの例を含む、これらの論文は、本一般的な ワークフロー(枠組み)とベストプラクティスに適用可能な任意の データ分析環境。
Rは、いくつか含まれている標準の中、データクリーニングのために使用することができるデータ操作のための機能をベース(パッケージgsub
、transform
等、等)、ならびに様々なサードパーティ製のパッケージにstringr、変形、reshape2、及びplyr。例およびこれらのパッケージとその機能の使用のベストプラクティスは、次の論文に記載されている:http://vita.had.co.nz/papers/tidy-data.pdf。
さらに、Rは、データのクリーニングと変換に特化したパッケージをいくつか提供しています。
包括的かつコヒーレントなアプローチクリーニングデータの例および使用を含むRに、editrulesとdeducorrectパッケージ、並びにの説明ワークフロー(フレームワーク Rで洗浄データの)は、私は非常にお勧めしており、以下の論文に提示されている:HTTP ://cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf。
ここの人々は素晴らしい手順を述べましたが、ツイートを通じて伝えられたように新しいデータセットを取得するとき、私は何をすべきかという次のリンクに素晴らしい情報があると思います。新しいデータセットを手に入れたときに最初に行うことは何ですか?」
それが役に立つことを願っています。