Dołącz do nas na DevFest dla Ukrainy 14-15 czerwca Online Zarejestruj się teraz

Walidacja danych TensorFlow: sprawdzanie i analizowanie danych

Gdy dane znajdą się w potoku TFX, możesz użyć komponentów TFX do ich analizy i transformacji. Możesz użyć tych narzędzi nawet przed trenowaniem modelu.

Istnieje wiele powodów, dla których warto analizować i przekształcać swoje dane:

  • Aby znaleźć problemy w Twoich danych. Typowe problemy to:
    • Brakujące dane, takie jak obiekty z pustymi wartościami.
    • Etykiety traktowane jako cechy, dzięki czemu model podczas treningu może zerknąć na właściwą odpowiedź.
    • Funkcje o wartościach spoza oczekiwanego zakresu.
    • Anomalie danych.
    • Przenieś wyuczony model ma wstępne przetwarzanie, które nie pasuje do danych uczących.
  • Aby zaprojektować bardziej efektywne zestawy funkcji. Na przykład możesz zidentyfikować:
    • Szczególnie funkcje informacyjne.
    • Zbędne funkcje.
    • Funkcje, których skala jest tak duża, że ​​mogą spowolnić naukę.
    • Funkcje z niewielką ilością unikalnych informacji predykcyjnych lub bez nich.

Narzędzia TFX mogą zarówno pomóc znaleźć błędy w danych, jak i pomóc w inżynierii funkcji.

Walidacja danych TensorFlow

Przegląd

TensorFlow Data Validation identyfikuje anomalie w trenowaniu i udostępnianiu danych oraz może automatycznie tworzyć schemat, badając dane. Komponent można skonfigurować tak, aby wykrywał różne klasy anomalii w danych. To może

  1. Przeprowadź kontrolę poprawności, porównując statystyki danych ze schematem, który kodyfikuje oczekiwania użytkownika.
  2. Wykrywaj skos obsługi szkolenia, porównując przykłady w danych dotyczących szkolenia i obsługi.
  3. Wykrywaj dryf danych, przeglądając serię danych.

Każdą z tych funkcjonalności dokumentujemy niezależnie:

Przykładowa walidacja na podstawie schematu

TensorFlow Data Validation identyfikuje wszelkie anomalie w danych wejściowych, porównując statystyki danych ze schematem. Schemat koduje właściwości, które mają spełniać dane wejściowe, takie jak typy danych lub wartości kategorialne, i mogą być modyfikowane lub zastępowane przez użytkownika.

Walidacja danych Tensorflow jest zwykle wywoływana wiele razy w kontekście potoku TFX: (i) dla każdego podziału uzyskanego z ExampleGen, (ii) dla wszystkich danych wstępnie przekształconych używanych przez Transform i (iii) dla wszystkich danych po transformacji wygenerowanych przez Przekształcać. Po wywołaniu w kontekście transformacji (II-III), statystyka możliwości i ograniczenia schematu opartego można ustawić poprzez zdefiniowanie stats_options_updater_fn . Jest to szczególnie przydatne podczas sprawdzania poprawności danych nieustrukturyzowanych (np. funkcji tekstowych). Patrz kod użytkownika dla przykładu.

Zaawansowane funkcje schematu

W tej sekcji omówiono bardziej zaawansowaną konfigurację schematu, która może pomóc w specjalnych konfiguracjach.

Rzadkie funkcje

Kodowanie rzadkich funkcji w Przykładach zwykle wprowadza wiele funkcji, które mają mieć tę samą wartościowość dla wszystkich przykładów. Przykładowo, rzadkie cecha:


WeightedCategories = [('CategoryA', 0.3), ('CategoryX', 0.7)]
byłyby kodowane za pomocą oddzielnych funkcji dla indeksu i wartości:

WeightedCategoriesIndex = ['CategoryA', 'CategoryX']
WeightedCategoriesValue = [0.3, 0.7]
z zastrzeżeniem, że wartościowość funkcję indeksu i wartość powinna być zgodna dla wszystkich przykładów. Ograniczenie to może być wyraźnie w schemacie poprzez zdefiniowanie sparse_feature:

sparse_feature {
  name: 'WeightedCategories'
  index_feature { name: 'WeightedCategoriesIndex' }
  value_feature { name: 'WeightedCategoriesValue' }
}

Definicja funkcji rzadkiej wymaga co najmniej jednego indeksu i jednej funkcji wartości, które odwołują się do funkcji istniejących w schemacie. Jawne zdefiniowanie rzadkich funkcji umożliwia TFDV sprawdzenie, czy wartościowości wszystkich odniesionych funkcji są zgodne.

Niektóre przypadki użycia wprowadzają podobne ograniczenia wartościowości między funkcjami, ale niekoniecznie kodują rzadkie funkcje. Korzystanie z rzadkiej funkcji powinno Cię odblokować, ale nie jest idealne.

Środowiska schematu

Domyślnie walidacje zakładają, że wszystkie przykłady w potoku są zgodne z jednym schematem. W niektórych przypadkach konieczne jest wprowadzenie niewielkich zmian w schemacie, na przykład funkcje używane jako etykiety są wymagane podczas uczenia (i powinny zostać zweryfikowane), ale brakuje ich podczas udostępniania. Środowisk może być zastosowane do ekspresji takich wymagań, w szczególności default_environment() , in_environment() , not_in_environment() .

Załóżmy na przykład, że funkcja o nazwie „LABEL” jest wymagana do trenowania, ale prawdopodobnie jej nie będzie wyświetlać. Można to wyrazić za pomocą:

  • Zdefiniuj dwa różne środowiska w schemacie: ["SERVING", "TRAINING"] i skojarz 'LABEL' tylko ze środowiskiem "TRAINING".
  • Powiąż dane treningowe ze środowiskiem „TRAINING”, a dane obsługujące ze środowiskiem „SERVING”.
Generowanie schematu

Schemat dane wejściowe są określone jako instancji TensorFlow Schema .

Zamiast ręcznie konstruować schemat od podstaw, programista może polegać na automatycznej konstrukcji schematu TensorFlow Data Validation. W szczególności TensorFlow Data Validation automatycznie konstruuje początkowy schemat na podstawie statystyk obliczonych na podstawie danych treningowych dostępnych w potoku. Użytkownicy mogą po prostu przejrzeć ten automatycznie wygenerowany schemat, zmodyfikować go w razie potrzeby, zaewidencjonować go w systemie kontroli wersji i wepchnąć go jawnie do potoku w celu dalszej weryfikacji.

TFDV obejmuje infer_schema() do generowania schematu automatycznie. Na przykład:

schema = tfdv.infer_schema(statistics=train_stats)
tfdv.display_schema(schema=schema)

Powoduje to automatyczne generowanie schematu na podstawie następujących reguł:

  • Jeśli schemat został już wygenerowany automatycznie, jest używany bez zmian.

  • W przeciwnym razie TensorFlow Data Validation sprawdza dostępne statystyki danych i oblicza odpowiedni schemat danych.

Uwaga: schemat generowany automatycznie jest najlepszym rozwiązaniem i próbuje jedynie wywnioskować podstawowe właściwości danych. Oczekuje się, że użytkownicy przejrzą go i zmodyfikują w razie potrzeby.

Wykrywanie skosu podczas szkolenia

Przegląd

TensorFlow Data Validation może wykrywać przekrzywienie rozkładu między danymi uczącymi i obsługującymi. Pochylenie rozkładu występuje, gdy rozkład wartości cech dla danych uczących znacznie różni się od danych służących do obsługi. Jedną z głównych przyczyn skosu dystrybucji jest użycie zupełnie innego korpusu do generowania danych treningowych, aby przezwyciężyć brak danych początkowych w pożądanym korpusie. Innym powodem jest wadliwy mechanizm próbkowania, który wybiera do trenowania tylko podpróbkę danych obsługujących.

Przykładowy scenariusz

Zobacz TensorFlow Data Validation Get Started Guide zawiera informacje na temat konfigurowania szkoleniowy stażem pochylać wykrycia.

Wykrywanie dryfu

Wykrywanie dryfu jest obsługiwane między kolejnymi zakresami danych (tj. między zakresem N a zakresem N+1), na przykład między różnymi dniami danych treningowych. Dryft wyrazić w kategoriach odległości L-nieskończoność na kategoryczne cechy i przybliżonej Jensen-Shannona rozbieżności pod względem cech numerycznych. Możesz ustawić odległość progową, aby otrzymywać ostrzeżenia, gdy dryf jest wyższy niż dopuszczalny. Ustawienie prawidłowej odległości jest zazwyczaj procesem iteracyjnym, wymagającym znajomości domeny i eksperymentowania.

Zobacz TensorFlow Data Validation Get Started Guide zawiera informacje na temat konfiguracji wykrycie dryfu.

Używanie wizualizacji do sprawdzania danych

TensorFlow Data Validation zapewnia narzędzia do wizualizacji rozkładu wartości cech. Badając te dystrybucje w notatniku Jupyter użyciu Oblicza można złapać typowych problemów z danymi.

Statystyki funkcji

Identyfikowanie podejrzanych dystrybucji

Możesz zidentyfikować typowe błędy w swoich danych, korzystając z ekranu Przegląd aspektów, aby wyszukać podejrzane rozkłady wartości funkcji.

Niezrównoważone dane

Niezrównoważona cecha to cecha, w której dominuje jedna wartość. Niezrównoważone funkcje mogą występować naturalnie, ale jeśli funkcja zawsze ma tę samą wartość, możesz mieć błąd danych. Aby wykryć niezrównoważone funkcje w Przeglądzie aspektów, wybierz „Niejednorodność” z menu rozwijanego „Sortuj według”.

Najbardziej niezrównoważone funkcje zostaną wymienione na górze każdej listy typów funkcji. Na przykład poniższy zrzut ekranu pokazuje jedną funkcję, która zawiera same zera, a drugą, która jest wysoce niezrównoważona, na górze listy „Funkcje numeryczne”:

Wizualizacja niezrównoważonych danych

Dane równomiernie rozproszone

Cecha równomiernie rozłożona to taka, dla której wszystkie możliwe wartości pojawiają się z bliską tej samej częstotliwości. Podobnie jak w przypadku niezrównoważonych danych, dystrybucja ta może wystąpić naturalnie, ale może być również spowodowana błędami danych.

Aby wykryć równomiernie rozłożone cechy w Przeglądzie aspektów, wybierz „Niejednorodność” z listy rozwijanej „Sortuj według” i zaznacz pole wyboru „Odwrócona kolejność”:

Histogram jednolitych danych

Dane łańcuchowe są przedstawiane za pomocą wykresów słupkowych, jeśli istnieje 20 lub mniej unikalnych wartości, oraz jako wykres skumulowanego rozkładu, jeśli jest więcej niż 20 unikalnych wartości. Tak więc w przypadku danych łańcuchowych rozkłady równomierne mogą być wyświetlane jako płaskie wykresy słupkowe, takie jak ten powyżej, lub linie proste, takie jak ta poniżej:

Wykres liniowy: skumulowany rozkład jednolitych danych

Błędy, które mogą generować jednolicie rozproszone dane

Oto kilka typowych błędów, które mogą generować równomiernie rozłożone dane:

  • Używanie ciągów do reprezentowania nieciągowych typów danych, takich jak daty. Na przykład będziesz mieć wiele unikalnych wartości dla funkcji daty i godziny z reprezentacjami takimi jak „2017-03-01-11-45-03”. Unikalne wartości zostaną rozłożone równomiernie.

  • W tym indeksy, takie jak „numer wiersza”, jako funkcje. Tutaj znowu masz wiele unikalnych wartości.

Brakujące dane

Aby sprawdzić, czy w funkcji nie ma całkowicie wartości:

  1. Wybierz „Brak kwoty/zero” z listy rozwijanej „Sortuj według”.
  2. Zaznacz pole wyboru „Odwróć kolejność”.
  3. Spójrz na kolumnę „brakujące”, aby zobaczyć procent wystąpień z brakującymi wartościami dla funkcji.

Błąd danych może również powodować niekompletne wartości funkcji. Na przykład możesz oczekiwać, że lista wartości funkcji zawsze będzie zawierała trzy elementy i odkryjesz, że czasami ma tylko jeden. Aby sprawdzić niekompletne wartości lub inne przypadki, w których listy wartości cech nie zawierają oczekiwanej liczby elementów:

  1. Wybierz „Długość listy wartości” z menu rozwijanego „Wykres do wyświetlenia” po prawej stronie.

  2. Spójrz na wykres po prawej stronie każdego wiersza funkcji. Wykres przedstawia zakres długości list wartości dla funkcji. Na przykład podświetlony wiersz na poniższym zrzucie ekranu pokazuje funkcję, która ma kilka list wartości o zerowej długości:

Wyświetlanie przeglądu aspektów z funkcjami z listami wartości funkcji o zerowej długości

Duże różnice w skali między funkcjami

Jeśli twoje funkcje różnią się znacznie pod względem skali, model może mieć trudności z uczeniem się. Na przykład, jeśli niektóre funkcje różnią się od 0 do 1, a inne od 0 do 1 000 000 000, występuje duża różnica w skali. Porównaj kolumny „max” i „min” w różnych obiektach, aby znaleźć bardzo różne skale.

Rozważ normalizację wartości funkcji, aby zmniejszyć te duże różnice.

Etykiety z nieprawidłowymi etykietami

Estymatory TensorFlow mają ograniczenia dotyczące typu danych, które akceptują jako etykiety. Na przykład klasyfikatory binarne zazwyczaj działają tylko z etykietami {0, 1}.

Przeglądu wartości etykiety w widoku aspektów i upewnij się, że są one zgodne z wymaganiami estymatorów .