カテゴリカルデータと数値データを動的に区別するにはどうすればよいですか?


12

列やデータ型に関係なく、データのファイルを取り込むプロジェクトに取り組んでいる人を知っています。タスクは、任意の数の列とさまざまなデータ型を含むファイルを取得し、数値データの要約統計を出力することです。

ただし、特定の数値ベースのデータにデータ型を動的に割り当てる方法に確信が持てません。例えば:

    CITY
    Albuquerque
    Boston
    Chicago

これは明らかに数値データではなく、テキストとして保存されます。しかしながら、

    ZIP
    80221
    60653
    25525

カテゴリーとして明確にマークされていません。彼のソフトウェアは郵便番号を数値として割り当て、要約統計を出力しますが、そのようなデータには意味がありません。


私たちが持っていたいくつかのアイデアは:

  1. 列がすべて整数の場合は、カテゴリとしてラベルを付けます。これは明らかに機能しませんが、アイデアでした。
  2. 列に含まれる一意の値がn個未満で数値の場合は、カテゴリにラベルを付けます。これはもっと近いかもしれませんが、それでも数値データが抜け落ちる問題があるかもしれません。
  3. 実際にカテゴリでなければならない一般的な数値データのリストを維持し、列ヘッダーをこのリストと比較して一致するかどうかを確認します。たとえば、「ZIP」が含まれているものはすべてカテゴリです。

私の直感は、数値データをカテゴリーまたは数値として正確に割り当てる方法はないが、提案を望んでいたと私に伝えています。あなたが持っているどんな洞察も大歓迎です。


完全な証明ではありませんが、0で始まる場合、通常は数値
パパラッツォ

また、間違いを犯した結果はどうなるのでしょうか。これにより、プロセスに投入する必要のある労力が決定されます。90%正確、または99%正確、または99.9999%正確にしますか?
Spacedman、2016年

回答で提案されているすべてのヒューリスティックを特徴として受け取り、バイナリ分類器をトレーニングします。
Emre、

stats.stackexchange.com/a/106400/17230を参照してください。ここには本当に真実はありません。
Scortchi-モニカを

回答:


7

私はこれを行うための絶対的な方法を知りません。ここに私の頭の上のアイデアがあります:

  1. デフォルトでは、値をカテゴリーとして扱います。
  2. 実際に連続していることを意味するデータのさまざまな属性を確認します。継続的なデータと相関する可能性に基づいて、これらの属性に重みを付けます。考えられる例をいくつか次に示します。
    • 値は整数です:+.7
    • 値は浮動小数点数です:+.8
    • 値は通常分布されます:+.3
    • 値に含まれる一意の値は比較的少ない:+.3
    • 値はすべて同じ文字数ではありません:+.1
    • 値に先行ゼロが含まれていません:+.1
  3. 合計が1より大きい列はすべて数値として扱います。必要に応じて、さまざまなデータセットに対するテストに基づいて係数と重みを調整します。これを行うためだけに、別個の機械学習アルゴリズムを構築してトレーニングすることもできます。

この答えは面白いです。別の答えを出すのではなく、この問題の修正を提案したいと思います。この問題を通常の分類問題として扱うのはどうですか?この回答の属性(整数、浮動小数点数、正規分布、一意の値の相対数など)に基づいて、列ごとに一連の機能を定義できます。その後は、分類アルゴリズムを使用するだけです。
Pablo Suau 2016年

@PabloSuau、私はその考えが好きです。分類アルゴリズムは、ここでは素晴らしい方法かもしれません。注目すべきいくつかの特性についてjncratonに感謝します。
ポアソンフィッシュ

4

たとえば、家族の子供の数(たとえば、0から5までの範囲)がある場合、それはカテゴリ変数ですか、数値変数ですか?実際には、問題とその解決方法によって異なります。この意味で、次のことができます。

  • その列の一意の値の数を計算します
  • この数を行の総数で割ります
  • この比率がしきい値(たとえば、20%)を下回っている場合は、カテゴリーと見なします。

離散値の場合、追加のテストとして、回帰モデルを使用して一部のパラメーターを推定し、推定値が元の値のセットに含まれているかどうかを確認します。これが当てはまらない場合は、おそらくカテゴリデータを扱っています(ZIPの場合)。

以前は比較的うまくいきました...


2

この質問はクロス投稿されているため、クロス検証済みの@nickcoxによる最初のコメントは、関連性が高く、真実です。私の見解は少し異なります。たとえば、質問を言い換えて2つの部分に分解します。1つ目は、不明な情報のストリームをデータ型で分類する方法、2つ目はどのような誤分類率が予想されるかという問題です。誰かが時間をかけてそれを実行したいのであれば、どちらの質問にもすぐに答えられます。

最初の問題は、すぐに利用できる実際のデータのサンプルを使用して、これらのスレッドのコメントと回答で事前に提案されているものに沿ってルールベースのエキスパートシステムを開発することです。

次に、この実際のデータには既知のデータ型が含まれているため、分類エラーのベンチマークが行われます。

3番目のステップでは、通過する情報をより正確に反映するために、ルールを繰り返し更新します。これが可能な範囲で行われます。

私の考えでは、退屈なものですが、そのようなプロジェクトには法外な量の作業は含まれません。

----追加コメント----

ここでCVにポップアップ表示されるデータ生成プロセスに関連する特徴抽出についての良い議論:

/stats/191935/what-does-the-process-that-generates-the-data-mean-and-how-does-feature-selec

特徴の抽出、選択、およびDGPは、エキスパートシステムを開発するための優れた出発点です。


相互検証の質問を削除しました。参考までに、@ NickCoxは次のように述べています。「あなたが思っているよりも悪いと思っていても、それはあなたが思っているよりも悪いです。産業や病気などのコード化された分類の一部として、小数点がカテゴリ変数に潜んでいる可能性があります。小さな整数は、むしろカウントを意味する可能性がありますカテゴリより:3は3台の車または猫を意味し、3は「人が車を所有している」または「人は猫が所有している」を意味するものと同じではありません。整数cmまたはインチとして報告され、血圧は整数mm Hgとして報告されます。」
ポアソンフィッシュ

@NickCoxの2番目のコメント:「明確な(「ユニーク」よりも優れた用語で、1度だけ発生するという主要な意味を持っています)値の数も適切なガイドではありません。適度なサンプルで可能な人の高さの数おそらく、さまざまな宗教団体や民族の起源の数よりはるかに少ないでしょう。」
ポアソンフィッシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.