Buduję model i myślę, że położenie geograficzne może być bardzo dobre w przewidywaniu zmiennej docelowej. Mam kod pocztowy każdego z moich użytkowników. Nie jestem jednak całkowicie pewien najlepszego sposobu włączenia kodu pocztowego jako funkcji predykcyjnej w moim modelu. Chociaż kod pocztowy jest liczbą, nic nie znaczy, jeśli liczba rośnie lub maleje. Mógłbym binaryzować wszystkie 30 000 kodów pocztowych, a następnie uwzględnić je jako funkcje lub nowe kolumny (np. {User_1: {61822: 1, 62118: 0, 62444: 0 itd.}}. Wydaje się jednak, że dodałoby to tonę funkcji do mojego modelu.
Jakieś pomysły na najlepszy sposób poradzenia sobie z tą sytuacją?
machine-learning
feature-construction
many-categories
captain_ahab
źródło
źródło
Odpowiedzi:
Jednym z moich ulubionych zastosowań danych kodu pocztowego jest wyszukiwanie zmiennych demograficznych na podstawie kodu pocztowego, które w przeciwnym razie mogą nie być dostępne na poziomie indywidualnym ...
Na przykład w witrynie http://www.city-data.com/ możesz sprawdzić rozkład dochodów, przedziały wiekowe itp., Które mogą ci powiedzieć coś o twoich danych. Te ciągłe zmienne są często znacznie bardziej przydatne niż tylko bazowanie na binarnych kodach pocztowych, przynajmniej w przypadku względnie skończonych ilości danych.
Ponadto kody pocztowe są hierarchiczne ... jeśli weźmiesz pierwsze dwie lub trzy cyfry i binarnie na ich podstawie, będziesz mieć pewną ilość informacji regionalnych, co da ci więcej danych niż pojedyncze zamki.
Jak powiedział Zach, użyta szerokość i długość geograficzna mogą być również przydatne, szczególnie w modelu opartym na drzewie. W przypadku znormalizowanego modelu liniowego można użyć czworokątów, dzieląc Stany Zjednoczone na cztery grupy geograficzne, rozdzielając je na binarne, a następnie każdy z tych obszarów na cztery grupy i włączając je jako dodatkowe zmienne binarne ... więc dla wszystkich regionów liści skończy się na [(4n - 1) / 3 - 1] zmiennych zmiennych (n dla najmniejszych regionów, n / 4 dla następnego poziomu itd.). Oczywiście jest to wielokoliniowe i dlatego do tego potrzebna jest regularyzacja.
źródło
Są 2 dobre opcje, które widziałem:
Osobiście bardzo lubię modele oparte na drzewach (takie jak losowy las lub GBM), więc prawie zawsze wybieram opcję 2. Jeśli chcesz się naprawdę zachwycić, możesz użyć długości / szerokości środkowej populacji dla kodu pocztowego, zamiast centroid kodu pocztowego. Ale trudno to powstrzymać.
źródło
2
propozycję.Miałem do czynienia z czymś podobnym podczas szkolenia klasyfikatora, który używał języka ojczystego jako cechy (jak mierzysz podobieństwo między językiem angielskim a hiszpańskim?) Istnieje wiele metod określania podobieństwa między danymi niekategoryzowanymi .
Zależy to od twoich danych, ale jeśli okaże się, że odległość geograficzna od kodu pocztowego nie jest tak ważna, jak to, czy dane wejście zawiera określone kody pocztowe, wówczas pomocne mogą być metody niekategoryzowane.
źródło
Jeśli obliczasz odległość między rekordami, jak w przypadku klastrowania lub K-NN, odległości między kodami pocztowymi w ich surowej postaci mogą być pouczające. Geograficznie 02138 jest znacznie bliżej 02139 niż 45809.
źródło
Możesz przekształcić swój kod pocztowy w zmienną nominalną (ciąg / współczynnik). Jednak, o ile pamiętam, kod pocztowy może zawierać inne informacje, takie jak region, region itp. Chciałbym zrozumieć, w jaki sposób kod pocztowy koduje informacje i rozszyfrować je na wiele funkcji.
W każdym razie podanie kodu pocztowego jako zmiennej numerycznej nie jest dobrym pomysłem, ponieważ niektóre modele mogą rozważyć uporządkowanie numeryczne lub odległości jako coś do nauczenia się.
źródło
Zrobiłbym mapę choropleth resztek twojego modelu na poziomie kodu pocztowego.
Wynik nazywa się przestrzenną mapą resztkową i może pomóc ci wybrać nową zmienną objaśniającą, która ma zostać uwzględniona w modelu. Takie podejście nazywa się eksploracyjną analizą danych przestrzennych (ESDA).
Jeden potencjalny przepływ pracy:
źródło
Możesz uprościć kody pocztowe przy użyciu powyższych technik, ale pozwól, że zasugeruję alternatywę. Załóżmy, że mamy binarne etykiety klas. A w danych mamy „n” kody pocztowe. Teraz bierzemy prawdopodobieństwo wystąpienia każdego kodu PIN w danych, pod warunkiem, że ma etykietę klasy (1 lub zero). Powiedzmy, że dla kodu pocztowego „j” ------ >>>> Otrzymujemy prawdopodobieństwo P_j jako: nie. wystąpień „j” / Całkowita liczba wystąpień „j”, gdy etykieta klasy wynosi 1 lub 0. W ten sposób możemy przekonwertować ją na bardzo ładną interpretację proabilistyczną.
źródło