Làm thế nào để biểu diễn địa lý hoặc mã zip trong mô hình học máy hoặc hệ thống đề xuất?


24

Tôi đang xây dựng một mô hình và tôi nghĩ rằng vị trí địa lý có khả năng rất tốt trong việc dự đoán biến mục tiêu của tôi. Tôi có mã zip của mỗi người dùng của tôi. Tôi không hoàn toàn chắc chắn về cách tốt nhất để bao gồm mã zip như một tính năng dự đoán trong mô hình của tôi. Mặc dù mã zip là một số, nhưng nó không có nghĩa gì nếu số đó tăng hoặc giảm. Tôi có thể mã hóa tất cả 30.000 mã zip và sau đó bao gồm chúng dưới dạng các tính năng hoặc cột mới (ví dụ: {user_1: {61822: 1, 62118: 0, 62444: 0, v.v.}}. Tuy nhiên, điều này có vẻ như sẽ thêm một tấn các tính năng cho mô hình của tôi.

Bất kỳ suy nghĩ về cách tốt nhất để xử lý tình huống này?


1
Chỉ là một suy nghĩ .. nhưng, nếu mã vùng được phân phối theo địa lý thì bạn có thể đại diện về mặt địa lý mã vùng trong bản đồ và thể hiện chúng với vị trí của chúng. Cùng với đó, bạn cũng có thể thấy mã zip nào được đóng lại ..
Manuel

Câu trả lời:


14

Một trong những cách sử dụng dữ liệu mã zip yêu thích của tôi là tìm kiếm các biến nhân khẩu học dựa trên mã zip có thể không có sẵn ở cấp độ cá nhân nếu không ...

Chẳng hạn, với http://www.city-data.com/, bạn có thể tra cứu phân phối thu nhập, độ tuổi, v.v., có thể cho bạn biết điều gì đó về dữ liệu của bạn. Các biến liên tục này thường hữu ích hơn nhiều so với việc chỉ dựa trên mã zip được mã hóa, ít nhất là đối với lượng dữ liệu tương đối hữu hạn.

Ngoài ra, mã zip được phân cấp ... nếu bạn lấy hai hoặc ba chữ số đầu tiên và mã hóa dựa trên số đó, bạn có một số lượng thông tin khu vực, giúp bạn có được nhiều dữ liệu hơn so với các mã riêng lẻ.

Như Zach đã nói, vĩ độ và kinh độ được sử dụng cũng có thể hữu ích, đặc biệt là trong mô hình dựa trên cây. Đối với mô hình tuyến tính được chính quy hóa, bạn có thể sử dụng tứ giác, chia Hoa Kỳ thành bốn nhóm địa lý, chia thành hai nhóm, sau đó mỗi khu vực đó thành bốn nhóm và bao gồm cả các biến nhị phân bổ sung ... vì vậy, cho tổng số vùng lá bạn kết thúc với tổng số [(4n - 1) / 3 - 1] (n cho các vùng nhỏ nhất, n / 4 cho cấp tiếp theo, v.v.). Tất nhiên đây là đa hướng, đó là lý do tại sao cần phải thường xuyên hóa để làm điều này.


2
Bạn có thể có được một hình ảnh đẹp về hệ thống phân cấp tại mã zip của Ben Fry .
Dimitriy V. Masterov

Joe bạn có thể tự do lấy dữ liệu mức zip (thu nhập, v.v.) từ trang web này không? Tôi đã không thể thấy làm thế nào để làm điều này.
B_Miner

Các URL như thế này: city-data.com/zips/02108.html Nó không được định dạng tốt như CSV, vì vậy bạn phải sử dụng regexes / scraping, v.v. Điều tra dân số Hoa Kỳ có một số dữ liệu được điều chỉnh độc đáo c điều tra.gov / epcd / www / zipstats .htmlfactfinder2.cencies.gov/faces/nav/jsf/pages/index.xhtml nhưng họ không có chiều rộng.
Joe

18

Có 2 lựa chọn tốt mà tôi đã thấy:

  1. Chuyển đổi mỗi mã zip thành một biến giả. Nếu bạn có nhiều dữ liệu, đây có thể là một giải pháp nhanh chóng và dễ dàng, nhưng bạn sẽ không thể đưa ra dự đoán cho các mã zip mới. Nếu bạn lo lắng về số lượng tính năng, bạn có thể thêm một số quy tắc vào mô hình của mình để loại bỏ một số mã zip ra khỏi mô hình.
  2. Sử dụng vĩ độ và kinh độ của điểm trung tâm của mã zip làm biến. Điều này hoạt động thực sự tốt trong các mô hình dựa trên cây, vì chúng có thể cắt lưới vĩ độ / kinh độ thành các vùng có liên quan đến biến mục tiêu của bạn. Điều này cũng sẽ cho phép bạn đưa ra dự đoán cho các mã zip mới và không yêu cầu nhiều dữ liệu để có được quyền. Tuy nhiên, điều này sẽ không hoạt động tốt cho các mô hình tuyến tính.

Cá nhân, tôi thực sự thích các mô hình dựa trên cây (như rừng ngẫu nhiên hoặc GBM), vì vậy tôi hầu như luôn chọn tùy chọn 2. Nếu bạn muốn thực sự ưa thích, bạn có thể sử dụng lat / lon của trung tâm dân số cho mã zip, thay vì centroid mã zip. Nhưng điều đó có thể khó để có được.


Chắc chắn sẽ đi cho 2đề xuất.
andilabs

# 2 cũng xuất hiện để hoạt động với GAM
Affine

4

Tôi đã xử lý một cái gì đó tương tự khi đào tạo một bộ phân loại sử dụng ngôn ngữ bản địa làm tính năng (làm thế nào để bạn đo lường sự tương đồng giữa tiếng Anh và tiếng Tây Ban Nha?) Có rất nhiều phương pháp để xác định sự giống nhau giữa các dữ liệu không phân loại .

Nó phụ thuộc vào dữ liệu của bạn, nhưng nếu bạn thấy rằng khoảng cách địa lý từ mã zip không quan trọng bằng việc liệu đầu vào đã cho có chứa mã zip cụ thể hay không, thì các phương pháp không phân loại có thể giúp ích.


4

Nếu bạn đang tính khoảng cách giữa các bản ghi, như trong phân cụm hoặc K-NN, khoảng cách giữa các mã ở dạng thô có thể là thông tin. 02138 gần hơn với 02139, về mặt địa lý, so với 45809.


cũng như đối với các mô hình cây như rừng ngẫu nhiên - mà ở một số khía cạnh tương tự như K-NN
đội trưởng_ahab

3

Bạn có thể chuyển đổi mã zip của mình thành một biến danh nghĩa (chuỗi / yếu tố). Tuy nhiên, theo tôi nhớ, mã zip có thể chứa các thông tin khác như hạt, vùng, v.v. Điều tôi sẽ làm là hiểu cách mã zip mã hóa thông tin và giải mã nó thành nhiều tính năng.

Dù sao, để mã zip là một biến số không phải là một ý tưởng hay vì một số mô hình có thể coi thứ tự số hoặc khoảng cách là thứ cần học.


Cảm ơn câu trả lời! Tuy nhiên, ngay cả khi mã zip là một chuỗi hoặc một yếu tố, về cơ bản, tôi không chỉ là mã zip mã hóa giả (nghĩa là tạo ra 30.000 tính năng nhị phân)? Tôi biết R làm điều này dưới mui xe nhưng nó phải được thực hiện rõ ràng trong scikit learn.
đội trưởng_ahab

3

Tôi sẽ tạo một bản đồ hợp xướng các phần dư của mô hình của bạn ở cấp mã zip.

Kết quả được gọi là bản đồ dư không gian và nó có thể giúp bạn chọn một biến giải thích mới để đưa vào mô hình của bạn. Cách tiếp cận này được gọi là phân tích dữ liệu không gian thăm dò (ESDA).

Một quy trình làm việc tiềm năng:

  1. cho mỗi mã zip lấy số dư trung bình
  2. lập bản đồ choropleth để xem sự phân bố địa lý của phần dư
  3. tìm kiếm các mẫu có thể được giải thích bằng một biến giải thích mới. Ví dụ: nếu bạn thấy tất cả các mã vùng ngoại ô hoặc phía nam hoặc bãi biển có số dư cao thì bạn có thể thêm biến giả trong khu vực được xác định bởi nhóm mã zip có liên quan hoặc nếu bạn thấy số dư cao cho mã zip thu nhập cao thì bạn có thể thêm biến thu nhập.

-2

Bạn có thể thực hiện mã hóa bằng cách sử dụng các kỹ thuật trên, nhưng hãy để tôi đề xuất một giải pháp thay thế. Giả sử chúng ta có nhãn lớp nhị phân. Và trong dữ liệu chúng ta có mã zip "n". Bây giờ chúng tôi lấy xác suất xuất hiện của từng mã pin trong dữ liệu, được cung cấp một số nhãn lớp (1 hoặc 0). Vì vậy, giả sử mã zip "j" ------ >>>> Chúng tôi nhận được xác suất P_j là: không. trong số các lần xuất hiện của "j" / Tổng số lần xuất hiện của "j", khi nhãn lớp là 1 hoặc 0. Bằng cách này, chúng ta có thể chuyển đổi nó thành một cách diễn giải rất thuận lợi.


5
Câu trả lời này không rõ ràng lắm.
Michael R. Chernick
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.