Przeskocz do zawartości głównej Przejdź do treści uzupełniającej

Przekształcanie typów danych

Podczas uczenia modelu uczenia maszynowego ważne jest, aby zestaw danych dokładnie reprezentował wszystkie typy danych. Jeśli zmienna ma niedokładną reprezentację, może to skutkować modelem o niskiej dokładności lub modelem, który wygląda dobrze, ale nie daje dobrych predykcji po zastosowaniu do rzeczywistych danych. Musisz być w stanie rozpoznać, co mierzy każda z cech i jak przypisać odpowiednią reprezentację dla tej cechy.

Ogólnie rzecz biorąc, uczenie maszynowe uznałoby wszystko, co jest typem danych zmiennoprzecinkowych lub podwójnej precyzji, za wartość liczbową, a wszystko, co jest ciągiem znaków, za wartość kategorialną. Jak jednak zobaczymy na poniższych przykładach, taka interpretacja może nie zawsze być prawidłowa.

Przykłady są oparte na zestawie danych zagregowanym w celu udzielenia odpowiedzi na pytanie: „Czy użytkownik kupi ponownie dowolny produkt w ciągu 30 dni od daty pierwszego zakupu?” Zestaw danych zawiera kolumny danych różnych typów, takich jak string (ciąg), double (dane podwójnej precyzji), integer (liczby całkowite), boolean (dane logiczne) i date (data).

Kolumny i typy danych

Tabela z nazwami kolumn i typami danych.

Ciągi znaków

W poniższej tabeli przedstawiono dwie kolumny z naszego zbioru danych, które mają typ danych string. Kolumna MarketingSource nie ma wymiernej różnicy między wartościami, na przykład między „Facebook” a „Customer Referral”. Nie ma związku liczbowego ani skalarnego, dlatego kolumnę należy uznać za kategorialną.

Z kolei wartości kolumny kosztu pozyskania SourceCostPerAcquisition wahają się od „Low” (niski) do „High” (wysoki) i zachodzi między nimi bardziej wymierna różnica. Nie jest to tak dokładne, jak średni koszt pozyskania za pośrednictwem źródła w dolarach, ale istnieje wyraźny rząd wielkości między tymi wartościami. W takim przypadku można by dyskutować, czy SourceCostPerAcquisition należy uznać za kolumnę kategorialną czy liczbową.

Przykładowe dane dla kolumn PersonID, MarketingSource i SourceCostPerAquisition

Tabela z danymi przykładowymi.

Zalecaną praktyką w takich sytuacjach jest utworzenie dwóch oddzielnych konfiguracji, każda z inną możliwą klasyfikacją cech. Eksperymenty te będą prowadzone oddzielnie. Pierwsza konfiguracja dotyczyłaby oryginalnej reprezentacji ciągu znaków. W drugiej konfiguracji można podać numeryczne odwzorowanie na różne wartości, konwertując kolumnę na typ danych double. Na przykład „Low” = 1,0, „Medium” = 2,0 i „High” = 3,0. Po użyciu każdej konfiguracji możesz się zorientować, która konfiguracja działa lepiej w konkretnym przypadku. W niektórych przypadkach sensowne jest użycie reprezentacji ciągu, a w innych bardziej sensowna może być reprezentacja liczbowa.

Liczby

Gdy istnieje mierzalna różnica pod względem tego, co opisują dane w kolumnie, powinna być reprezentowana jako wartości liczbowe. Przykładami tego są koszt, przychód, zysk, liczba, sumy i średnie.

Czasami zestaw danych może mieć wartość liczbową, której nie można zmierzyć, ponieważ jest to wartość słownikowa lub przyrostowa, taka jak identyfikator. W naszym przykładzie wartości w kolumnie PersonID można by pomylić z wartościami liczbowymi, gdyby nie zaczynały się od „Person_”. Traktowanie identyfikatorów jako wartości liczbowych byłoby niedokładną reprezentacją różnicy między tymi wierszami. Najlepszą praktyką w takich przypadkach jest reprezentowanie identyfikatora jako ciągu znaków. Przed użyciem zestawu danych może być potrzebne określenie, czy którakolwiek z kolumn liczbowych powinna zostać przekonwertowana na wartości kategorialne.

Daty

W kontekście uczenia maszynowego typy pól daty są zmiennymi kategorialnymi. Chociaż daty i znaczniki czasu można od siebie odejmować, na datę składa się kilka elementów. Pytanie brzmi, który z tych elementów wziąć pod uwagę i jak: Czy wartością powinien być rok, miesiąc, dzień miesiąca lub roku, czy też godzina dnia? A może różnica czasu jest potrzebna w minutach? Aby uzyskać jak największy potencjał predykcyjny, datę należy rozłożyć na co najmniej kilka składników. Niektóre z tych składników mogą być kategorialne, a inne liczbowe.

Na przykład datę można przetworzyć na dzień tygodnia. Może on być reprezentowany jako wartość liczbowa (od 1 do 7) lub wartość ciągu (od „niedzieli” do „soboty”).

Dni tygodnia jako liczby i ciągi

Tabela z dniami tygodnia reprezentowanymi przez liczby i ciągi.

Z przedstawianiem dnia tygodnia jako wartości liczbowej wiąże się kilka problemów. Kiedy przypada początek tygodnia — w poniedziałek czy niedzielę? Ponadto, nawet jeśli dzień tygodnia jest istotny, może być ukryty w trendzie cyklicznym.

W niektórych przypadkach trend może być bardzo wymowny, jak na wykresie 1, na którym tydzień zaczyna się w poniedziałek.

Wykres 1: Średnia sprzedaż według dni tygodnia, jeżeli tydzień zaczyna się w poniedziałek

Wykres sprzedaży według dni tygodnia z wyraźną linią trendu.

Wykres 2 zawiera te same dane co wykres 1, ale został przesunięty o jeden dzień, tak aby tydzień zaczynał się w niedzielę. Tutaj znaczenie danych jest znacznie mniejsze.

Wykres 2: Średnia sprzedaż według dni tygodnia, jeżeli tydzień zaczyna się w niedzielę

Wykres sprzedaży według dni tygodnia bez wyraźnej linii trendu.

Wykres 3 ilustruje inny problem z użyciem przekonwertowanego składnika daty jako wartości liczbowej. Może występować istotny wzorzec, ale jeśli nie jest liniowy, zostanie pominięty. Z tego powodu oraz z powodu cyklicznych trendów (na przykład dziennej lub kwartalnej sezonowości), które często występują w składnikach daty, zaleca się używanie tych składników jako wartości kategorialnych, a nie liczbowych.

Wykres 3: Średnia sprzedaż według dni tygodnia, wykazująca najwyższy poziom w środku tygodnia

Wykres sprzedaży według dni tygodnia z cyklicznym trendem osiągającym szczyt w środku tygodnia.

Qlik AutoML wykorzystuje automatyczną inżynierię cech do oddzielania składników dat i znaczników czasu w odrębnych kolumnach. Pomaga to poprawić zdolność predykcyjną tworzonych modeli. Cechy poddane inżynierii automatycznej, które wyprowadzono z nadrzędnej cechy daty, są klasyfikowane jako cechy numeryczne. W razie potrzeby możesz zastąpić działanie tej funkcji, aby kolumny dat były traktowane jako kategorialne. Więcej informacji, patrz Inżynieria cechy daty.

Różnice dat

Różnic dat można używać jako lepszego zamiennika przyrostowych identyfikatorów, ponieważ przyrostowy identyfikator opisuje tylko kolejność dodawania rekordów do tabeli. Przyrostowe identyfikatory mogą łatwo być wypaczane przez zmianę wolumenu (w wielu przykładach jest to liczba klientów dziennie), podczas gdy różnica dat nie podlega takiej zależności.

Różnica dat może być jedną z kilku miar — sekundami, godzinami, dniami, miesiącami lub kwartałami. Wybierz tę, która najlepiej odpowiada szczegółowości Twoich danych. Kiedy na przykład rozpatruje się dane miesięczne, różnica dni w datach nie będzie miała żadnej rzeczywistej wartości. W takim przypadku bardziej istotna byłaby różnica dat w miesiącach.

Czy ta strona była pomocna?

Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!