Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Walidacja danych TensorFlow: sprawdzanie i analizowanie danych

Gdy dane znajdą się w potoku TFX, możesz użyć składników TFX do ich analizy i przekształcenia. Możesz użyć tych narzędzi nawet przed wytrenowaniem modelu.

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

  • Aby znaleźć problemy w swoich danych. Typowe problemy obejmują:
    • Brakujące dane, na przykład obiekty z pustymi wartościami.
    • Etykiety traktowane jako cechy, aby Twój model mógł zerknąć na właściwą odpowiedź podczas treningu.
    • Funkcje o wartościach spoza oczekiwanego zakresu.
    • Anomalie danych.
  • Aby zaprojektować bardziej efektywne zestawy funkcji. Na przykład możesz zidentyfikować:
    • Szczególnie pouczające funkcje.
    • Nadmiarowe funkcje.
    • Funkcje o tak dużej skali, że mogą spowalniać naukę.
    • Funkcje z niewielką ilością lub bez unikalnych informacji predykcyjnych.

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

Walidacja danych TensorFlow

Przegląd

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

  1. Wykonuj testy poprawności, porównując statystyki danych ze schematem, który kodyfikuje oczekiwania użytkownika.
  2. Wykryj pochylenie podczas obsługi szkolenia, porównując przykłady w danych uczących i udostępnianych.
  3. Wykryj dryf danych, patrząc na serię danych.

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

Walidacja na podstawie schematu

Walidacja danych TensorFlow identyfikuje wszelkie anomalie w danych wejściowych, porównując statystyki danych ze schematem. Schemat kodyfikuje właściwości, które mają spełniać dane wejściowe, takie jak typy danych lub wartości kategorialne, i może być modyfikowany lub zastępowany przez użytkownika.

Zaawansowane funkcje schematu

W tej sekcji omówiono bardziej zaawansowaną konfigurację schematu, która może pomóc przy 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. Na przykład rzadka cecha:


WeightedCategories = [('CategoryA', 0.3), ('CategoryX', 0.7)]
byłaby kodowana przy użyciu oddzielnych funkcji dla indeksu i wartości:

WeightedCategoriesIndex = ['CategoryA', 'CategoryX']
WeightedCategoriesValue = [0.3, 0.7]
z zastrzeżeniem, że wartościowość indeksu i wartości powinna być zgodna dla wszystkich przykładów. To ograniczenie można wyraźnie określić w schemacie, definiując sparse_feature:

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

Rzadka definicja funkcji wymaga co najmniej jednego indeksu i jednej wartości, która odwołuje się do funkcji istniejących w schemacie. Jawne zdefiniowanie rzadkich funkcji umożliwia TFDV sprawdzenie, czy wartościowości wszystkich przywołanych funkcji są zgodne.

Niektóre przypadki użycia wprowadzają podobne ograniczenia wartościowości między funkcjami, ale niekoniecznie kodują rzadką funkcję. Używanie rzadkich 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 ich brakuje podczas udostępniania. Środowiska mogą służyć do wyrażania 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 uczenia, ale prawdopodobnie nie będzie jej działać. Można to wyrazić poprzez:

  • Zdefiniuj dwa odrębne środowiska w schemacie: [„OBSŁUGA”, „SZKOLENIE”] i skojarz „LABEL” tylko ze środowiskiem „SZKOLENIE”.
  • Skojarz dane treningowe ze środowiskiem „TRENING”, a dane obsługujące ze środowiskiem „SERVING”.
Generowanie schematu

Schemat danych wejściowych jest określony jako instancja schematu TensorFlow.

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

TFDV zawiera infer_schema() do automatycznego generowania schematu. 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 w takiej postaci, w jakiej jest.

  • W przeciwnym razie TensorFlow Data Validation sprawdza dostępne statystyki danych i oblicza odpowiedni schemat dla 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 przekrzywienia w ramach szkolenia

Przegląd

TensorFlow Data Validation może wykryć odchylenie dystrybucji między danymi uczącymi a udostępnianymi. Pochylenie dystrybucji występuje, gdy dystrybucja wartości funkcji dla danych uczących znacznie różni się od udostępnianych danych. Jedną z głównych przyczyn wypaczenia dystrybucji jest użycie albo zupełnie innego korpusu do generowania danych treningowych, aby przezwyciężyć brak danych początkowych w żądanym korpusie. Innym powodem jest wadliwy mechanizm próbkowania, który wybiera tylko podpróbkę serwowanych danych do treningu.

Example Scenario

For instance, in order to compensate for an underrepresented slice of data,
if a biased sampling is used without upweighting the downsampled examples
appropriately, the distribution of feature values between training and
serving data gets artificially skewed.

Więcej informacji na temat konfigurowania wykrywania pochylenia w trakcie udostępniania można znaleźć w przewodniku po sprawdzeniu poprawności danych TensorFlow - wprowadzenie .

Wykrywanie dryfu

Wykrywanie dryftu jest obsługiwane między kolejnymi zakresami danych (tj. Między zakresem N i zakresem N + 1), na przykład między różnymi dniami danych treningowych. Dryft wyrażamy w postaci odległości L-nieskończoności dla cech jakościowych i przybliżonej dywergencji Jensena-Shannona dla cech numerycznych. Możesz ustawić odległość progową, aby otrzymywać ostrzeżenia, gdy dryf jest większy niż dopuszczalny. Ustawienie właściwej odległości jest zwykle procesem iteracyjnym wymagającym wiedzy dziedzinowej i eksperymentów.

Więcej informacji na temat konfigurowania wykrywania dryfu można znaleźć w przewodniku Wprowadzenie do sprawdzania poprawności danych TensorFlow .

Używanie wizualizacji do sprawdzania danych

Walidacja danych TensorFlow zapewnia narzędzia do wizualizacji rozkładu wartości cech. Analizując te dystrybucje w notatniku Jupyter przy użyciu aspektów , można wykryć typowe problemy z danymi.

Statystyki funkcji

Identyfikowanie podejrzanych dystrybucji

Typowe błędy w danych można zidentyfikować, korzystając z ekranu Przegląd aspektów w celu wyszukania podejrzanych rozkładów wartości funkcji.

Niezrównoważone dane

Niezrównoważona cecha to cecha, w przypadku której przeważa jedna wartość. Niezbilansowane funkcje mogą wystąpić 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 opcję „Niejednorodność” z menu „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 przedstawia jedną cechę składającą się z samych zer i drugą, która jest wysoce niezrównoważona, na górze listy „Funkcje numeryczne”:

Wizualizacja niezrównoważonych danych

Jednolicie rozproszone dane

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

Aby wykryć równomiernie rozmieszczone funkcje w Przeglądzie aspektów, wybierz „Niejednorodność” z menu „Sortuj według” i zaznacz pole wyboru „Odwróć kolejność”:

Histogram jednolitych danych

Dane ciągów są przedstawiane za pomocą wykresów słupkowych, jeśli istnieje 20 lub mniej unikatowych wartości, oraz jako skumulowany wykres dystrybucji, jeśli jest więcej niż 20 unikalnych wartości. Tak więc w przypadku danych ciągów jednolite rozkłady mogą pojawiać się jako płaskie wykresy słupkowe, takie jak powyższy, lub proste linie, takie jak 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ą powodować równomierne rozłożenie danych:

  • Używanie ciągów do reprezentowania typów danych niebędących ciągami, 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 cechy. Tutaj znowu masz wiele unikalnych wartości.

Brakujące dane

Aby sprawdzić, czy w obiekcie brakuje całkowicie wartości:

  1. Z menu „Sortuj według” wybierz „Brakująca kwota / zero”.
  2. Zaznacz pole wyboru „Odwróć kolejność”.
  3. Spójrz na kolumnę „brakujące”, aby zobaczyć odsetek wystąpień z brakami wartości dla funkcji.

Błąd danych może również powodować niepełne 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 mają oczekiwanej liczby elementów:

  1. Wybierz „Długość listy wartości” z menu „Wykres do pokazania” 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 przedstawia funkcję, która ma kilka list wartości o zerowej długości:

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

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

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

Rozważ normalizację wartości cech, aby zredukować 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 zwykle działają tylko z etykietami {0, 1}.

Przejrzyj wartości etykiet w przeglądzie aspektów i upewnij się, że są zgodne z wymaganiami estymatorów .