як представити географію чи поштовий індекс у моделі машинного навчання чи в системі рекомендацій?


24

Я будую модель, і я думаю, що географічне розташування, ймовірно, дуже добре спрогнозує мій цільовий змінний. У мене є поштовий індекс кожного з моїх користувачів. Я не зовсім впевнений, що найкращий спосіб включити поштовий індекс як функцію передбачувача у свою модель. Хоча поштовий індекс - це номер, він нічого не означає, якщо число збільшується або зменшується. Я міг бинарізувати всі 30 000 поштових індексів, а потім включити їх як функції або нові стовпці (наприклад, {user_1: {61822: 1, 62118: 0, 62444: 0 і т.д.}}. Однак, схоже, це додасть би тонну особливостей моєї моделі.

Будь-які думки про найкращий спосіб вирішити цю ситуацію?


1
Просто думка .. але, якщо поштові індекси розподіляються географічно, ви можете географічно зобразити поштові коди на карті та представити їх з їх місцезнаходженням. З цим ви також могли бачити, які поштові індекси ближче ..
Мануель,

Відповіді:


14

Одне з моїх улюблених напрямків використання поштових індексів - пошук демографічних змінних на основі поштового індексу, які в іншому випадку можуть бути недоступні на індивідуальному рівні ...

Наприклад, за допомогою http://www.city-data.com/ ви можете переглянути розподіл доходу, вікові діапазони тощо, що може щось сказати про ваші дані. Ці безперервні змінні часто набагато корисніші, ніж просто перехід на основі бінарних поштових індексів, принаймні для відносно обмеженої кількості даних.

Крім того, поштові індекси є ієрархічними ... якщо ви берете перші дві-три цифри і бінаризуєтесь на основі цих даних, у вас є деяка кількість регіональної інформації, яка отримує більше даних, ніж окремі зірки.

Як сказав Зак, використовувана широта та довгота також можуть бути корисними, особливо в деревній моделі. Для регульованої лінійної моделі ви можете використовувати квадри, розділивши Сполучені Штати на чотири географічні групи, бінарнізовані, потім кожну з цих областей на чотири групи, включаючи такі, як додаткові бінарні змінні ... так що для n загальних областей листків ви в кінцевому підсумку з [(4n - 1) / 3 - 1] загальними змінними (n для найменших регіонів, n / 4 для наступного рівня вгору тощо). Звичайно, це мультиколінеарно, тому для цього потрібна регуляризація.


2
Ви можете отримати гарну візуальну картину ієрархії за поштовим індексом Бена Фрі .
Мастеров Дмитро Васильович

Джо, чи можете ви вільно отримувати дані про рівень поштового індексу (дохід тощо) з цього сайту? Я не зміг побачити, як це зробити.
B_Miner

URL - адреси , як це: city-data.com/zips/02108.html Це не дуже добре відформатований як CSV, так що ви повинні використовувати регулярні вирази / зішкріб перепису і т.д. США має деякі добре fomatted даних census.gov/epcd/www/zipstats .html та factfinder2.census.gov/faces/nav/jsf/pages/index.xhtml, але вони не мають ширини.
Джо

18

Я бачив 2 хороших варіанти:

  1. Перетворіть кожен поштовий індекс у фіктивну змінну. Якщо у вас багато даних, це може бути швидким і простим рішенням, але ви не зможете робити прогнози щодо нових поштових індексів. Якщо ви переживаєте за кількість функцій, можете додати деяку регуляризацію до вашої моделі, щоб випустити деякі поштові індекси з моделі.
  2. Використовуйте широту і довготу центральної точки поштового індексу в якості змінних. Це дуже добре працює в моделях на основі дерев, оскільки вони можуть вирізати сітку широти / довготи на регіони, що відповідають вашій цільовій змінній. Це також дозволить передбачити нові поштові індекси, і не потрібно стільки даних, щоб виправитись. Однак це не буде добре для лінійних моделей.

Особисто мені дуже подобаються моделі на основі дерев (наприклад, випадковий ліс або ГБМ), тому я майже завжди вибираю варіант 2. Якщо ви хочете по-справжньому фантазувати, ви можете використовувати Lat / lon центру населення для отримання поштового індексу, а не центроїд поштового індексу. Але це може бути важко здобути.


Однозначно піде на 2пропозицію.
andilabs

# 2 також видається, що працює з GAM
Affine

4

Я мав справу з чимось подібним, навчаючи класифікатора, який використовував рідну мову як функцію (як ви вимірюєте схожість між англійською та іспанською мовами?) Існує безліч методів визначення схожості серед не категоричних даних .

Це залежить від ваших даних, але якщо ви виявите, що географічна відстань від поштового індексу не є настільки важливою, як те, чи містить даний вхід конкретні поштові індекси, то можуть не допомогти не категоричні методи.


4

Якщо ви обчислюєте відстань між записами, як в кластеризації або K-NN, відстані між поштовими кодами в їх необробленому вигляді можуть бути інформативними. 02138 географічно набагато ближче до 02139, ніж до 45809.


також для таких деревних моделей, як випадковий ліс - які в деяких аспектах схожі на K-NN
Капітан_ахаб

3

Ви можете перетворити свій поштовий індекс у номінальну змінну (рядок / фактор). Однак, наскільки я пам’ятаю, поштовий індекс може містити іншу інформацію, наприклад, округ, регіон тощо. Що б я зробив, це зрозуміти, як поштовий індекс кодує інформацію та розшифровує їх у декілька функцій.

У будь-якому випадку дозволяти поштовий індекс як числову змінну не є хорошою ідеєю, оскільки деякі моделі можуть вважати впорядкування чи відстань чимось важливим.


Дякую за відповідь! Однак, навіть якщо поштовий індекс - це рядок чи фактор, чи я по суті не просто фіктивне кодування поштового коду (тобто, створення 30 000 бінарних функцій)? Я знаю, що R робить це під кришкою, але це повинно бути чітко зроблено у scikit learn.
Капітан_ахаб

3

Я б склав хороплетну карту залишків вашої моделі на рівні поштового індексу.

Результат називається просторовою залишковою картою, і це може допомогти вам вибрати нову пояснювальну змінну для включення у вашу модель. Такий підхід називається дослідницьким просторовим аналізом даних (ESDA).

Один потенційний робочий процес:

  1. для кожного поштового індексу отримуйте середній залишок
  2. складіть карту хороплетів, щоб побачити географічний розподіл залишків
  3. шукайте шаблони, які можуть бути пояснені новою пояснювальною змінною. Наприклад, якщо ви бачите всі приміські або південні або пляжні поштові індекси з високими залишками, ви можете додати регіональну змінну манекена, визначену відповідною групою поштових індексів, або якщо ви бачите високі залишки для поштових індексів з високим доходом, ви можете додати змінну доходу.

-2

Ви можете представити Zipcodes за допомогою наведених вище методів, але дозвольте запропонувати альтернативну можливість. Припустимо, у нас є бірки бінарних класів. І в даних у нас є "n" поштові індекси. Тепер ми беремо ймовірність виникнення кожного пінкоду в даних за умови деякої мітки класу (або 1, або нуль). Отже, скажімо для поштового коду "j" ------ >>>> Ми отримаємо ймовірність P_j як: ні. випадків виникнення "j" / Всього немає випадків "j", коли мітка класу дорівнює 1 або 0. Таким чином ми можемо перетворити це на дуже приємне проабілістичне тлумачення.


5
Ця відповідь не дуже однозначна.
Майкл Р. Черник
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.