機械学習モデルまたは推奨システムで地理または郵便番号を表す方法


24

モデルを構築していますが、地理的位置はターゲット変数の予測に非常に適していると考えています。各ユーザーの郵便番号を持っています。ただし、モデルに予測機能として郵便番号を含める最善の方法については完全にはわかりません。郵便番号は数字ですが、数字が上がったり下がったりしても意味がありません。30,000のすべての郵便番号を2値化し、それらを機能または新しい列として含めることができます(たとえば、{user_1:{61822:1、62118:0、62444:0など}}。しかし、これはトンを追加するようですモデルの機能の。

この状況を処理する最良の方法についての考えはありますか?


1
ちょっと考えてみてください。しかし、郵便番号が地理的に分布している場合は、地図で郵便番号を地理的に表し、それらの位置を表すことができます。あなたもcloseserであるジップコード見ることができたということでは...
マヌエル

回答:


14

郵便番号データの私のお気に入りの用途の1つは、それ以外の場合は個々のレベルでは利用できない可能性がある郵便番号に基づいて人口統計変数を検索することです...

たとえば、http://www.city-data.com/を使用すると、所得分布、年齢層などを調べることができます。これにより、データに関する情報が得られる場合があります。これらの連続変数は、少なくとも比較的限られた量のデータについては、単に二値化された郵便番号に基づくよりもはるかに便利です。

また、郵便番号は階層的です...最初の2桁または3桁を取得し、それらに基づいて二値化すると、ある程度の地域情報があり、個々の郵便番号よりも多くのデータを取得できます。

Zachが言ったように、使用される緯度と経度も、特にツリーベースのモデルで有用です。正則化された線形モデルの場合、4分割ツリーを使用して、米国を4つの地理的グループに分割し、それらを2値化してから、それらの各領域を4つのグループに追加し、追加のバイナリ変数として含めることができます...最終的に[(4n-1)/ 3-1]合計変数(最小領域の場合はn、次のレベルアップの場合はn / 4など)になります。もちろん、これは多重共線的であり、これが正則化がこれを行う必要がある理由です。


2
Ben Fryのzipdecodeで階層の素晴らしいビジュアルを取得できます。
Dimitriy V. Masterov

ジョーは、このサイトからzipレベルのデータ(収入など)を自由に取得できますか?私はこれを行う方法を見ることができませんでした。
B_Miner 14

このようなURL:city-data.com/zips/02108.html あなたは正規表現を使用する必要がありますので、それがうまくなどザ・米国の国勢調査をこする/、CSVのようにフォーマットされていないが、いくつかの素敵なfomattedデータがあるcensus.gov/epcd/www/zipstatsを.htmlおよびfactfinder2.census.gov/faces/nav/jsf/pages/index.xhtmlですが、それらには幅がありません。
ジョー14

18

私が見た2つの良いオプションがあります:

  1. 各郵便番号をダミー変数に変換します。大量のデータがある場合、これは迅速かつ簡単な解決策になる可能性がありますが、新しい郵便番号を予測することはできません。機能の数が心配な場合は、モデルに正規化を追加して、モデルから郵便番号の一部を削除できます。
  2. 郵便番号の中心点の緯度と経度を変数として使用します。ツリーベースのモデルでは、緯度/経度グリッドをターゲット変数に関連する領域に分割できるため、これは非常にうまく機能します。これにより、新しい郵便番号の予測も可能になり、適切なデータを必要としません。ただし、これは線形モデルではうまく機能しません。

個人的には、ツリーベースのモデル(ランダムフォレストやGBMなど)が大好きなので、ほとんどの場合、オプション2を選択します。本当に凝りたい場合は、人口の中心の緯度/経度を郵便番号に使用できます。郵便番号の重心ではなく。しかし、それを把握するのは難しい場合があります。


間違いなく2提案に行きます。
andilabs 14


4

ネイティブ言語を機能として使用した分類器をトレーニングするときに、似たようなものを扱いました(英語とスペイン語の類似性をどのように測定しますか?)非カテゴリーデータ間の類似性を判定する方法はたくさんあります

データに依存しますが、郵便番号からの地理的距離が特定の入力に特定の郵便番号が含まれているかどうかほど重要でない場合は、非カテゴリー的な方法が役立ちます。


4

クラスタリングやK-NNのようにレコード間の距離を計算している場合、生の形式の郵便番号間の距離は参考になる可能性があります。02138は、45809よりも地理的に02139にはるかに近いです。


また、ランダムフォレストのようなツリーモデル-いくつかの点でK-NNに似ています
captain_ahab

3

郵便番号を名目上の変数(文字列/因子)に変換できます。ただし、私が覚えている限り、郵便番号には郡、地域などの他の情報が含まれている可能性があります。

とにかく、郵便番号を数値変数として使用することはお勧めできません。一部のモデルでは、数値の順序または距離を学習すべきものと見なす場合があるためです。


答えてくれてありがとう!ただし、郵便番号が文字列または要素である場合でも、基本的に郵便番号のダミーコーディング(つまり、30,000個の2値化された機能の作成)ではないでしょうか。Rが内部でこれを行うことは知っていますが、scikitで明示的に行わなければなりません。
captain_ahab 14

3

郵便番号レベルでモデルの残差のコロプレスマップを作成します。

結果は空間残差マップと呼ばれ、モデルに含める新しい説明変数の選択に役立つ場合があります。このアプローチは、探索的空間データ分析(ESDA)と呼ばれます。

1つの潜在的なワークフロー:

  1. 各郵便番号について、平均残差を取得します
  2. コロプレスマップを作成して、残差の地理的分布を確認します
  3. 新しい説明変数によって説明される可能性のあるパターンを探します。たとえば、高い残差を持つすべての郊外または南部または海岸の郵便番号が表示される場合、関連する郵便番号グループで定義された地域ダミー変数を追加できます。または、高収入の郵便番号の高い残差が表示される場合は、収入変数を追加できます。

-2

上記の手法を使用して郵便番号を特徴づけることができますが、代替案を提案させてください。バイナリクラスラベルがあるとします。また、データには「n」個の郵便番号があります。ここで、何らかのクラスラベル(1またはゼロ)が提供されている場合、データ内の各ピンコードの発生確率を取得します。したがって、郵便番号「j」について言うことができます------ >>>> P_jの確率は次のようになります。クラスラベルが1または0の場合、「j」の出現回数/「j」の出現回数の合計。この方法で、非常に優れた確率的解釈に変換できます。


5
この答えはあまり明確ではありません。
マイケルR.チャーニック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.