Saya sedang membangun model dan saya pikir bahwa lokasi geografis cenderung sangat baik dalam memprediksi variabel target saya. Saya memiliki kode pos masing-masing pengguna saya. Saya tidak sepenuhnya yakin tentang cara terbaik untuk memasukkan kode pos sebagai fitur prediktor dalam model saya. Meskipun kode pos adalah angka, itu tidak berarti apa-apa jika jumlahnya naik atau turun. Saya bisa membuat binarize semua 30.000 kode pos dan kemudian memasukkannya sebagai fitur atau kolom baru (misalnya, {user_1: {61822: 1, 62118: 0, 62444: 0, dll.}}. Namun, ini sepertinya akan menambah satu ton fitur untuk model saya.
Adakah pemikiran tentang cara terbaik untuk menangani situasi ini?
machine-learning
feature-construction
many-categories
captain_ahab
sumber
sumber
Jawaban:
Salah satu favorit saya menggunakan data kode pos adalah untuk mencari variabel demografis berdasarkan kode pos yang mungkin tidak tersedia di tingkat individu jika tidak ...
Misalnya, dengan http://www.city-data.com/ Anda dapat mencari distribusi pendapatan, rentang usia, dll., Yang mungkin memberi tahu Anda sesuatu tentang data Anda. Variabel kontinu ini seringkali jauh lebih berguna daripada hanya didasarkan pada kode pos ter-biner, setidaknya untuk jumlah data yang relatif terbatas.
Selain itu, kode pos bersifat hierarkis ... jika Anda mengambil dua atau tiga digit pertama, dan membuat binarize berdasarkan itu, Anda memiliki sejumlah informasi regional, yang memberi Anda lebih banyak data daripada ritsleting individual.
Seperti kata Zach, lintang dan bujur yang digunakan juga dapat berguna, terutama dalam model berbasis pohon. Untuk model linier yang teratur, Anda dapat menggunakan quadtrees, memecah Amerika Serikat menjadi empat kelompok geografis, memisahkannya, lalu masing-masing wilayah tersebut menjadi empat kelompok, dan termasuk yang sebagai variabel biner tambahan ... jadi untuk total wilayah daun yang Anda berakhir dengan [(4n - 1) / 3 - 1] total variabel (n untuk daerah terkecil, n / 4 untuk naik tingkat berikutnya, dll). Tentu saja ini multikolinier, itulah sebabnya diperlukan regularisasi untuk melakukan ini.
sumber
Ada 2 opsi bagus yang pernah saya lihat:
Secara pribadi, saya sangat suka model berbasis pohon (seperti hutan acak atau GBM), jadi saya hampir selalu memilih opsi 2. Jika Anda ingin benar-benar mewah, Anda dapat menggunakan lat / lon pusat populasi untuk kode pos, daripada pusat kode pos. Tapi itu bisa sulit didapat.
sumber
2
proposal.Saya berurusan dengan sesuatu yang mirip ketika melatih classifier yang menggunakan bahasa asli sebagai fitur (bagaimana Anda mengukur kesamaan antara bahasa Inggris dan Spanyol?) Ada banyak metode di luar sana untuk menentukan kesamaan antara data non-kategorikal .
Tergantung pada data Anda, tetapi jika Anda menemukan bahwa jarak geografis dari kode pos tidak sepenting apakah input yang diberikan mengandung kode pos tertentu, maka metode non-kategorikal mungkin membantu.
sumber
Jika Anda menghitung jarak antara catatan, seperti dalam pengelompokan atau K-NN, jarak antara kode pos dalam bentuk mentah mereka mungkin informatif. 02138 jauh lebih dekat dengan 02139, secara geografis, daripada 45809.
sumber
Anda dapat mengubah kode pos Anda menjadi variabel nominal (string / faktor). Namun, sejauh yang saya ingat, kode pos mungkin berisi informasi lain seperti county, region, dll. Apa yang akan saya lakukan adalah memahami bagaimana kode pos menyandikan informasi dan mendekodekannya menjadi beberapa fitur.
Bagaimanapun membiarkan kode pos sebagai variabel numerik bukanlah ide yang baik karena beberapa model mungkin menganggap pemesanan numerik atau jarak sebagai sesuatu yang perlu dipelajari.
sumber
Saya akan membuat peta choropleth residu model Anda di tingkat kode pos.
Hasilnya disebut peta residual spasial dan mungkin membantu Anda memilih variabel penjelas baru untuk dimasukkan dalam model Anda. Pendekatan ini disebut eksploratory spatial data analysis (ESDA).
Satu alur kerja potensial:
sumber
Anda dapat menampilkan Kode Pos menggunakan teknik di atas, tetapi izinkan saya menyarankan alternatif. Misalkan kita memiliki label kelas biner. Dan dalam data kami memiliki "n" kode pos. Sekarang kita ambil probabilitas kemunculan masing-masing kode kode dalam data, asalkan beberapa label kelas (baik 1 atau nol). Jadi, katakanlah untuk kode pos "j" ------ >>>> Kami mendapatkan probabilitas P_j sebagai: tidak. dari kemunculan "j" / Total no dari kemunculan "j", ketika label kelas adalah 1 atau 0. Dengan cara ini kita dapat mengubahnya menjadi interpretasi proabilistik yang sangat bagus.
sumber