Deduplikacja danych teleadresowych w programie Alteryx [artykuł]

sty 3, 2018

Big Data

Data Science

Alteryx

banery data science

Współczesne bazy danych oraz pliki przechowujące informacje potrafią posiadać ogromne ilości rekordów. Ich analiza dała podstawy do rozwoju nowoczesnych gałęzi eksploracji danych typu Big Data oraz Data Science. W celu zapewnienia jak najlepszej jakości przechowywanych informacji przeprowadzana jest zazwyczaj procedura tzw. czyszczenia danych (ang. Data Cleansing) w której możemy wyróżnić cztery główne obszary działań: 

  1. Parsowanie – wykrywanie błędów syntaktycznych, rozbijanie pól w oparciu o znaczenie
  2. Transformacja – transformacja formatu danych, normalizacja wartości liczbowych
  3. Deduplikacja – eliminacja powtarzających się rekordów lub niosących tę samą informację
  4. Postprocessing – stosowanie innych metod mających za zadanie usprawnić działanie systemów np: metod statystycznych.

W tym artykule zajmiemy się trzecim punktem przedstawionego procesu tzw. deduplikacją, przy czym przyjmujemy że poprzednie etapy oczyszczania danych mogły nie zostać przeprowadzone. Za przykładowy zbiór danych posłuż nam poniżej przedstawiona tabela (wczytywana w formacie csv) : 

Pierwszym problemem będzie tzw. deduplikacja równościowa. Zakładamy w niej że wybrane przez nas pola muszą być identyczne by zaklasyfikować przykłady jako takie same. W powyższym przykładzie widzimy że rekordy o numerach 1 , 4,  6 przedstawiają tę samą informację, podobnie jak rekordy 2 i 7. W naszym przypadku wszystkie pola (poza Id z oczywistych względów) się pokrywają, jednak moglibyśmy sobie łatwo również wyobrazić sytuację w której wybieramy kilka pół kluczowych, po których rozpoznajemy że przykłady są różne (np: pole Dodatkowe informacje mogłoby być uznane za zbędne i nie rozróżniające przykładów). Przedstawimy teraz dwa, najprostsze sposoby radzenia sobie w takich sytuacjach. Pierwszym z nich jest wykorzystanie narzędzia Unique z pakietu Preparation.

Zaznaczmy w panelu wszystkie pola prócz Id jako unikalne. Narzędzie pod wyjściem U umieści wszystkie, pierwsze w kolejności, unikalne wystąpienia rekordów:

W efekcie na wyjściu U otrzymujemy :

Taki sam efekt możemy uzyskać grupując pola przy użyciu narzędzia Summarize z pakietu Transform :

Zajmiemy się teraz deduplikacją rozmytą (zwaną inaczej, nie do końca poprawnie probabilistyczną). Często zdarza się że pola choć mają inną formę zapisu między sobą, niosą tę samą informację. Klasycznym przykładem jest numer telefonu, mimo iż dla programu 536778093 oraz 536 778 093 są dwoma różnymi bytami, dla człowieka mają te samo znaczenie. W poniższej tabeli wprowadzone zostały przykładowe zmiany :

Możemy pominąć białe znaki używają np: narzędzia Data Cleansing z pakietu Preparation.

Zaznaczamy numer telefonu jako pole poddawane czyszczeniu, a następnie zaznaczamy opcję usunięcia wszystkich znaków białych :

Możemy teraz wykorzystać jeden z opisanych na początku sposobów do usuwania duplikatów. Narzędzie Data Cleansing umożliwia nam również wiele innych operacji np: zmianę wielkości wszystkich liter w danym polu, dzięki czemu możemy zniwelować różnice w formacie wprowadzonych danych.

Innymi narzędziami mogącymi nam pomóc w takiej sytuacji są Fuzzy Match i Make Group z pakietu Join. Fuzzy Match sprawdza jak bardzo rekordy są podobne między sobą według określonej metryki. Miarą tej pewności jest współczynnik Match Treshold ustawiony domyślnie na wartość 80 %. Za obiekt testów przyjmiemy tym razem pole Adres w którym wprowadzimy następujące zmiany :

  1. Dla rekordu o numerze 1 zmieniamy 00 – 052 Warszawa ul. Złota 117A na 00 – 052 Warszawa ul. Złota 117a
  1. Dla rekordu o numerze 4 zmieniamy 00 – 052 Warszawa ul. Złota 117A na 00 – 052 Warszawa ul Złota 117A
  2. Dla rekordu o numerze 6 zmieniamy 00 – 052 Warszawa ul. Złota 117A na Warszawa 00 – 052 ul. Złota 117A

Tworzymy przepływ danych :

W polu konfiguracyjnym wybieramy Purge Mode, do identyfikacji rekordów wybierzemy Id, zaś jako styl porównywania na polu Adres włączamy Address. W opcjach zaawansowanych u dołu panelu zaznaczamy Output Match Score oraz Output Generated Keys :

Widzimy że na poziomie pewności 100 % zostały połączone wszystkie rekordy które oczekiwaliśmy że będą ze sobą stowarzyszone. Możemy teraz wyznaczyć potrzebne nam Id używając narzędzia Make Group :

Make Group tworzy grupy uwzględniając zależności tranzytywnie przechodnie tzn: jeśli A jest w relacji z B i B jest w relacji z C to A jest też w relacji z C. Ponad to uwzględnia także to że element jest w relacji sam ze sobą. W efekcie otrzymujemy :

Można dzięki temu wykorzystać powstałe identyfikatory do deduplikacji danych.