Perełki eksploracji danych – entropia a domyślne wartości atrybutów

Analizując zbiór danych nie zawsze posiadamy określone wartości dla wszystkich atrybutów. Często musimy radzić sobie z lukami oraz pewnymi brakami, a także z przekłamaniami – o czym nieco później. W przypadku brakujących wartości możemy chcieć je zastąpić wartościami domyślnymi.
Słowo „domyślnymi” jest tutaj kluczem. Przykładowo, analizując zbiór danych reprezentujący zawartość koszyków sklepowych klientów sieci supermarketów, widząc w owym koszyku „zupkę chińską” oraz czteropak przecenionego piwa domyślamy się, że klient jest raczej zaciskającym pasa studentem niż rozrzutnym milionerem. Analizując zakupy klientów salonu z luksusowymi limuzynami moglibyśmy przyjąć dokładnie odwrotne założenie. Innymi słowy, domyślnie przyjmujemy wartość o najniższej niesionej informacji – jeśli to możliwe oraz wskazane w danym przypadku.

Tyle teorii, teraz praktyka.

Eksplorując dane klientów jednej z firm usługowych (a raczej wstępnie zapoznając się z nimi) napotkaliśmy na pewne zjawisko. Objawiało się ono nadreprezentacją w naszym zbiorze danych 46-cio latków. Wymiar tego fenomenu przedstawia poniższy histogram wieku klientów.

Liczby wystąpień na wszystkich wykresach i tabelach zostały przeskalowane liniowo (nie zmieniając proporcji, jedynie absolutne wielkości) ze względu na czytelność i poufność danych.

histogram-wiek

Przyczyny takiego stanu rzeczy mogłyby być różne. Można próbować wyjaśnić go przeprowadzoną w historii firmy kampanią marketingową / zasileniem systemu zakupionymi danymi o określonym profilu itd., jednak całość wyglądała dość podejrzanie.

O ile nadreprezentację osób o określonym wieku, mierzonym w latach, można próbować jakoś logicznie wyjaśnić, o tyle ciężko jest znaleźć wyjaśnienie znaczącej przewagi osób urodzonych dokładnie 1-go stycznia 1970 roku, a także dzień wcześniej.

daty-urodzenia

Po krótkiej burzy mózgów z zespołem doszliśmy do wniosku, że musi to być spowodowane wadliwym działaniem jednego z systemów pozyskującego dane. Tak było w rzeczywistości. Jedna z aplikacji w miejsce brakujących dat (w tym daty urodzenia) wstawiała wartości domyślne / zerowe, zgodnie z czasem uniksowym.

Czas uniksowy, czas POSIX (ang. Unix time, POSIX time) – system reprezentacji czasu mierzący liczbę sekund od 1970 roku UTC, czyli od chwili zwanej początkiem epoki Uniksa (ang. Unix Epoch). (https://pl.wikipedia.org/wiki/Czas_uniksowy)

Najwyraźniej któryś z programistów uznał, że skoro jeden z systemów wymaga podania daty urodzenia, a drugi z nich jej nie dostarcza, rozsądne jest przyjęcie wartości domyślnej / zerowej (dla daty, według czasu POSIX), co w rzeczywistym świecie jest irracjonalne, w świecie IT jednak nie należy do rzadkości. Nadreprezentacja osób urodzonych w dniu 31-12-1969 nastąpiła ze względu na przesunięcie czasowe. Jeżeli od północy 1-1-1970 odejmiemy np. godzinę, uzyskamy datę urodzenia 31-12-1969.

Problem został zdiagnozowany, lecz jak go rozwiązać? W tym przypadku postanowiliśmy celowo utracić część informacji. Na podstawie powyższych histogramów możemy określić, że spodziewana liczba osób, urodzonych w tych dwóch dniach, powinna oscylować pomiędzy 86-120 dla każdego z nich, podczas gdy w naszej bazie znajduje się ok. 2,5 tyś. osób urodzonych w pierwszym z dni oraz 13,2 tyś. osób urodzonych w dniu kolejnym. Sumarycznie, na ok. 200 osób rzeczywiście urodzonych w tych dniach przypada ponad 15 tyś. rekordów błędnych. Mniejszy popełnimy błąd przyjmując, że jeżeli osoba jest urodzona (wg. naszej bazy) w dniu 31-12-69 lub 1-01-70 to – tak naprawdę – nie wiemy, w którym dokładnie dniu się urodziła.

Przyjęcie takiego rozwiązania spowoduje, że część informacji zostanie utracona (niedoreprezentacja osób ur. we wspomnianych dniach), jednak ogólna liczba 46-latków w naszej bazie – bo o wiek, a nie dokładną datę urodzenia przecież chodzi – będzie zbliżona do rzeczywistej. Dla porównania, analogiczne do poprzednich wykresy po korekcji błedu.

histogram-wiek-popr

daty-urodzenia-popr

Warto zauważyć, że tego typu błędy można wykryć na bardzo wczesnym etapie eksploracji danych, a wręcz na etapie przygotowania do tej eksploracji. Gdybyśmy spróbowali wypracować jakiś model decyzyjny na podstawie niepoprawnych danych, nasze starania mogłyby pójść na marne. Zachęcam zatem do zapoznania się z danymi i ich charakterem (choćby w arkuszu kalkulacyjnym, tak jak w tym artykule) przed zabraniem się do właściwej analizy przy pomocy bardziej zaawansowanych narzędzi.

Dodaj komentarz