Я строю модель, и я думаю, что географическое местоположение, вероятно, будет очень хорошим для предсказания моей целевой переменной. У меня есть почтовый индекс каждого из моих пользователей. Я не совсем уверен в том, как лучше всего включить в мою модель почтовый индекс в качестве предиктора. Хотя почтовый индекс является числом, это ничего не значит, если число увеличивается или уменьшается. Я мог бы преобразовать в двоичную форму все 30 000 почтовых индексов, а затем включить их в виде функций или новых столбцов (например, {user_1: {61822: 1, 62118: 0, 62444: 0 и т. Д.}}}. Однако, похоже, что это добавит тонну особенностей моей модели.
Есть мысли о том, как лучше справиться с этой ситуацией?
machine-learning
feature-construction
many-categories
captain_ahab
источник
источник
Ответы:
Одно из моих любимых применений данных почтового индекса - поиск демографических переменных на основе почтового индекса, которые в противном случае могут быть недоступны на индивидуальном уровне ...
Например, с http://www.city-data.com/ вы можете посмотреть распределение доходов, возрастные диапазоны и т. Д., Которые могут рассказать вам кое-что о ваших данных. Эти непрерывные переменные часто гораздо полезнее, чем просто основанные на бинаризованных почтовых индексах, по крайней мере, для относительно ограниченных объемов данных.
Кроме того, почтовые индексы являются иерархическими ... если вы берете первые две или три цифры и бинаризуете их, у вас есть некоторое количество региональной информации, которая дает вам больше данных, чем отдельные почтовые индексы.
Как сказал Зак, используемые широта и долгота также могут быть полезны, особенно в древовидной модели. Для регуляризованной линейной модели вы можете использовать квадродерево, разделив Соединенные Штаты на четыре географические группы, преобразовав их в двоичную форму, затем каждую из этих областей в четыре группы и включив их в качестве дополнительных двоичных переменных ... так что для n полных конечных областей вы в итоге получим [(4n - 1) / 3 - 1] суммарных переменных (n для самых маленьких регионов, n / 4 для следующего уровня и т. д.). Конечно, это мультиколлинеарно, поэтому для этого необходима регуляризация.
источник
Есть 2 хороших варианта, которые я видел:
Лично мне действительно нравятся древовидные модели (такие как случайный лес или GBM), поэтому я почти всегда выбираю вариант 2. Если вы хотите по-настоящему вычурно, вы можете использовать широту / долготу центра населения для почтового индекса, а не почтовый индекс. Но это может быть трудно достать.
источник
2
предложение.Я имел дело с чем-то похожим при обучении классификатора, который использовал родной язык в качестве функции (как вы измеряете сходство между английским и испанским языками?). Существует множество методов определения сходства среди некатегоричных данных .
Это зависит от ваших данных, но если вы обнаружите, что географическое расстояние от почтового индекса не так важно, как то, содержит ли конкретный вход определенные почтовые индексы, тогда могут помочь некатегоричные методы.
источник
Если вы вычисляете расстояние между записями, как в кластеризации или K-NN, расстояния между почтовыми индексами в их необработанном виде могут быть информативными. Географически 02138 намного ближе к 02139, чем к 45809.
источник
Вы можете преобразовать свой почтовый индекс в номинальную переменную (строка / фактор). Однако, насколько я помню, почтовый индекс может содержать другую информацию, такую как округ, регион и т. Д. Я хотел бы понять, как почтовый индекс кодирует информацию, и декодировать ее в несколько функций.
В любом случае, использование почтового индекса в качестве числовой переменной не является хорошей идеей, поскольку некоторые модели могут рассматривать числовой порядок или расстояния как нечто, чему можно научиться.
источник
Я хотел бы сделать карту остатков вашей модели на уровне почтового индекса.
Результат называется пространственной остаточной картой, и он может помочь вам выбрать новую объясняющую переменную для включения в вашу модель. Этот подход называется исследовательским пространственным анализом данных (ESDA).
Один потенциальный рабочий процесс:
источник
Вы можете настроить Zip-коды, используя описанные выше методы, но позвольте мне предложить альтернативу. Предположим, у нас есть метки двоичного класса. И в данных у нас есть "n" почтовые индексы. Теперь мы берем вероятность вхождения каждого пин-кода в данные при условии некоторой метки класса (либо 1, либо ноль). Итак, допустим, для почтового индекса «j» ------ >>>> Мы получаем вероятность P_j как: нет. вхождений "j" / Общее количество вхождений "j", когда метка класса равна 1 или 0. Таким образом, мы можем преобразовать его в очень хорошую пробиалистическую интерпретацию.
источник