Zyski:
- Możliwość skonfigurowania potoku danych (gromadzenie, walidacja, czyszczenie, przekształcanie, dzielenie, wersjonowanie) i umieszczania walidacji schematu na początku potoku
- Możliwość podejmowania decyzji dotyczących brakujących wartości i etykietowania w oparciu o znaczenie pól i podział, aby zapobiec wyciekom danych (grupowych i czasowych)
- Możliwość stworzenia powtarzalnej bazy danych poprzez ustalenie wersji danych i ziarna losowości
Prawdziwa siła każdego systemu uczenia maszynowego leży w danych, a nie w modelu. Doświadczeni inżynierowie wiedzą: „śmieci wchodzą, śmieci wychodzą” – nawet najbardziej zaawansowany model zasilany złymi danymi będzie dawać złe wyniki. W tej jednostce ustalamy potok danych (potok danych: łańcuch kroków, dzięki którym surowe dane są gotowe do uczenia modelu) od początku do końca i dowiadujemy się, na którym etapie tej linii możemy bezpiecznie wykorzystać sztuczną inteligencję.
Stopnie linii danych
Linia danych zazwyczaj przechodzi przez te przystanki:
- Gromadzenie (pozyskiwanie): Pobieranie danych ze źródeł (baza danych, API, pliki dziennika, strumienie zdarzeń).
- Walidacja: Sprawdzanie, czy dane są zgodne z oczekiwanym schematem, typami i zakresami.
- Czyszczenie: obsługa brakujących wartości, zduplikowanych rekordów, wartości odstających i niespójności.
- Transformacja: przekształcanie surowych danych w atrybuty — na przykład konwersja zmiennej kategorycznej na liczbę i tworzenie „dnia tygodnia” na podstawie daty.
- Dzielenie: Podział na zbiory szkoleniowe, walidacyjne i testowe.
- Wersjonowanie: rejestrowanie, który model został przeszkolony przy użyciu jakich danych.
Sztuczna inteligencja oszczędza czas, generując projekty kodu i pomysły, szczególnie w krokach 2, 3 i 4. Jednak decyzje takie jak to, który rekord odrzucić, którą brakującą wartość uzupełnić i w jaki sposób, należą do inżyniera, który zna dane; ponieważ niewłaściwe czyszczenie może wprowadzić ukryte odchylenie do modelu.
Weryfikacja danych: wczesna obrona linii
Najdroższe błędy zaczynają się nie na produkcji, ale tam, gdzie pomija się etap weryfikacji. Walidacja schematu automatycznie sprawdza, czy każda przychodząca partia danych jest zgodna z oczekiwaną strukturą. Na przykład, czy kolumna wieku zawiera się w przedziale 0-120, czy pole e-mail jest puste, czy liczba kolumn uległa zmianie?
Wskazówka: umieść weryfikację na początku linii. Im szybciej wykryte zostaną uszkodzone dane, tym taniej będzie je naprawić. Błąd schematu wykryty na etapie produkcyjnym jest wielokrotnie droższy niż błąd wyłapany w fazie uczenia.
Napisz schemat sprawdzania poprawności za pomocą pandery (lub Wielkich oczekiwań) dla następującego schematu danych. Kolumny i reguły:- user_id: liczba całkowita, nie może być pusta, unikalność- wiek: liczba całkowita, nie może być z zakresu 0-120- data_rejestracji: data, nie może być w przyszłości- kraj: kategoryczny, ze zbioru {TR, DE, US, UK} - saldo: dziesiętna, nie może być ujemna. Utwórz zrozumiały komunikat o błędzie dla każdego naruszenia reguły. Pokaż test z przykładową linią przerywaną na końcu kodu.
Sprzątanie: decyduje człowiek
Brakujące wartości są rzeczywistością każdego zbioru danych. Sposoby radzenia sobie:
- Usunięcie: Odrzucenie wiersza/kolumny z bardzo dużą liczbą brakujących danych. Istnieje jednak ryzyko utraty informacji i stronniczości.
- Imputacja: Imputacja ze średnią, medianą, najczęstszą wartością lub przewidywaniem opartym na modelu.
- Flaga: Przechowywanie informacji o „braku” w osobnej kolumnie z flagą — czasami sam brak jest sygnałem.
To, który z nich jest prawidłowy, zależy od problemu. W zestawie danych medycznych informację o „niezmierzonej wartości krwi” należy zachować, a nie usunąć; Bo nawet odmowa lekarza wykonania pomiarów jest sygnałem. Sztuczna inteligencja może dać ci opcje i kod; Ty wybierasz, który pasuje do realiów danej dziedziny.
Słaba zachęta/silna zachęta
Słaby monit: „Uzupełnij brakujące wartości”.
Silna podpowiedź: „Brakuje wartości w następujących kolumnach: dochód (brak 12%, rozkład prawostronny), last_login (brak 30%). Zasugeruj wypełnienie dochodu medianą, ale wyjaśnij, dlaczego mediana, a nie średnia. W przypadku last_login załóż, że brakująca wartość może być znacząca (użytkownik mógł nigdy się nie logować); rozważ wygenerowanie flagi Never_logged_in zamiast usunięcia. Zapisz błąd, który oba podejścia dodałyby do modelu.
Różnica: silny monit podaje informacje o rozmieszczeniu i znaczenie obszaru; sztuczna inteligencja zamiast mechanicznego wypełniania zapewnia wspomaganie decyzji.
Etykietowanie: jakość jest mierzona
W uczeniu się pod nadzorem (uczeniu się, w którym podawane są przykłady z poprawnymi odpowiedziami), model uczy się etykiet (etykiet: poprawna odpowiedź dla każdego przykładu). Jakość etykiet wyznacza pułap — jeśli ludzie etykietują niekonsekwentnie, model uczy się niekonsekwentnie.
Zgoda między autorami mierzy częstotliwość, z jaką różne osoby nadają tę samą etykietę tej samej próbie; Wyraża się go za pomocą współczynnika, takiego jak Kappa Cohena. Niska zgodność wskazuje, że zadanie jest niejasne lub instrukcja jest słaba.
Sztuczna inteligencja pomaga w etykietowaniu na dwa sposoby: (1) opracowywanie wytycznych dotyczących adnotacji, (2) wstępne etykietowanie i zlecanie jedynie poprawiania przez człowieka. Jednak wstępne etykietowanie za pomocą LLM wiąże się z pułapką: systematyczny błąd modelu może przedostać się do całego zestawu etykiet. Dlatego ludzie zawsze sprawdzają niektóre etykiety LLM.
Uwaga: Nie uważaj etykiet wyprodukowanych przez LLM za „podstawową prawdę”. Sprawdź próbkę z człowiekiem i zmierz dopasowanie LLM do człowieka. Jeżeli zgodność jest niska, wstępne etykietowanie wyrządzi więcej szkody niż pożytku.
Partycja danych: zapobiegaj wyciekom
Najbardziej niebezpiecznym błędem przy dzieleniu danych na szkolenia/walidację/testowanie jest wyciek danych: mieszanie informacji testowych z treningiem. Przykłady:
- Zapisy tego samego użytkownika dotyczą zarówno szkolenia, jak i testowania (wyciek grupowy).
- Wykorzystanie przyszłości w szkoleniu i przeszłości w testowaniu w szeregach czasowych (przeciek czasowy).
- Obliczanie parametrów skalowania (normalizacji) ze wszystkich danych, a następnie dzielenie.
Rozdzielenie czasowe jest niezbędne w przypadku problemów związanych z czasem: trenuj z przeszłością, testuj w przyszłości. Losowy podział daje „przyszłą” korzyść, która nigdy nie wystąpi w produkcji i zawyża metryki.
Wersjonowanie i odtwarzalność danych
„Na podstawie jakich danych trenowaliśmy ten model?” Możliwość odpowiedzi na to pytanie kilka miesięcy później jest cechą charakterystyczną poważnej inżynierii ML. Wersjonowanie danych przechowuje każdą migawkę danych z identyfikatorem (skrótem lub znacznikiem wersji). Narzędzia takie jak dane wersji DVC (Data Version Control), takie jak kod.
Aby odtworzyć wynik modelu, należy naprawić trzy rzeczy: wersję danych, wersję kodu i losowy materiał siewny. Bez tego trio nie można powiedzieć „uzyskałem taki sam wynik”. Pogłębimy Powtarzalność w części 11; ale naprawianie materiału siewnego w potoku danych zaczyna się od tego miejsca.
trzy mini etui
Przypadek 1 - Zapisano walidację schematu dnia. Kiedy zespół przekształcił pole cenowe systemu nadrzędnego z groszy na liry, wszystkie ceny spadły 100-krotnie. Weryfikacja schematu odrzuciła partię jako „cena poza zakresem”, a model nie został przeszkolony z uszkodzonymi danymi. Bez weryfikacji błąd zostałby zauważony dopiero na produkcji, przy błędnych przewidywaniach.
Przypadek 2 – błąd związany z nieprawidłowym wypełnieniem. W modelu kredytowym brakujące wartości dochodu uzupełniono średnią. Jednak brakujące dochody dotyczyły głównie osób o niskich dochodach; uśrednianie sztucznie „wzbogaciło” tę grupę, a model zaproponował im niesprawiedliwie wysoki limit. Naprawiono problem z flagą mediany i braku.
Przypadek 3 – Przeciek czasowy. Model prognozowania popytu wyglądał świetnie na zestawie testowym (dokładność 95%), ale uległ awarii w produkcji. Dlaczego: z powodu losowego podziału model widział przyszłość. Przejście na kategoryzację czasową zmniejszyło dokładność testów do 78%, ale to była prawdziwa wydajność, która pozwoliła utrzymać ją w produkcji.
Szablony do kopiowania
Podziel następujący zbiór danych na trzy zestawy: szkolenie/walidacja/testowanie. Ograniczenie: To jest szereg czasowy; Użyj podziału TEMPORAL (trenuj w przeszłości, testuj w przyszłości). Zapobiegaj wyciekom partii: używaj tego samego `customer_id` tylko w jednym klastrze. Oblicz parametry skalowania TYLKO ze zbioru treningowego, a następnie zastosuj do wszystkich. Wydrukuj liczbę wierszy pozostałych w kodzie na każdym kroku i dodaj potwierdzenie sprawdzające, czy nie ma wycieków.
Napisz projekt wytycznych dotyczących adnotacji dla tego zadania etykietowania. Zadanie: [np. Oznacz recenzję klienta jako pozytywną/negatywną/neutralną] Wyjaśnij przypadki graniczne: sarkazm, mieszane emocje, jak oznaczyć recenzję niezwiązaną z produktem? Podaj 5 przykładów i 3 trudne przypadki brzegowe, które zwiększą spójność między tagerami.
Utwórz listę kontrolną odtwarzalności dla tego potoku danych: - W jaki sposób należy ustalić wersję danych? - Które nasiona losowości należy ustawić gdzie? - Jakie metadane (skrót danych, liczba wierszy, data) powinny być rejestrowane? Mój kod: [język/biblioteka]
Sprawdź ten kod czyszczący pod kątem wycieku danych. Zwróć szczególną uwagę na to: czy parametry skalowania/kodowania są obliczane PRZED podziałem? Czy na podstawie wszystkich danych są obliczane jakieś statystyki, czy tylko treningi? Kod: [kod]
Tabela decyzyjna: strategia brakującej wartości
Stan
Zalecane podejście
Dlaczego
Rozkład numeryczny, skośny
wypełnić medianą
Na średnią wpływają wartości odstające
Numeryczne, symetryczne
wypełnić średnią
Chroni informacje
Niedobór może być znaczący
Kolumna flagi + wypełnienie
Brak jest sygnałem
Brakujący wskaźnik > 60%
Oceń/odrzuć kolumnę
Hałas jest za duży
Kategoryczny
Kategoria „nieznany”.
Nie tworzy sztucznej większości
Typowe błędy
- Pomijanie weryfikacji. Bez kontroli schematu uszkodzone dane wkradają się po cichu.
- Skalowanie przed podziałem. Wycieka statystyki testów do edukacji.
- Stosowanie losowego podziału w szeregach czasowych. Generuje fałszywe wysokie wskaźniki.
- Ślepe zaufanie etykietom LLM. Błąd systematyczny rozprzestrzenia się w danych.
- Nie zapisano wersji danych. Nie można odtworzyć wyniku.
- Napełnianie mechaniczne średnią. Ignoruje znaczenie pola, dodaje stronniczości.
Podsumowując
Potok danych jest podstawą systemu ML i zasługuje na więcej wysiłku niż model. Umieść weryfikację na górze; podejmuj decyzje dotyczące czyszczenia i etykietowania, korzystając z wiedzy branżowej; zapobiegać wyciekom (grupowym i czasowym) w przedziale; napraw wersję danych i materiał siewny. Sztuczna inteligencja generuje kod i pomysły na tej linii, ale to Ty decydujesz, które dane przetworzyć i w jaki sposób – ponieważ każda zła decyzja przechodzi do modelu jako ukryta wada.
Zadanie aplikacji
Napisz schemat sprawdzania poprawności (pandera/Wielkie oczekiwania) na własnym zbiorze danych i celowo dodaj zły wiersz i pokaż, że został wyłapany. Następnie podziel dane tymczasowo lub wsadowo, oblicz parametry skalowania wyłącznie na podstawie treningu i sprawdź, czy nie ma wycieków, za pomocą potwierdzenia. Zapisz wersję danych i liczbę wierszy w pliku metadanych.
lista kontrolna
- [ ] Walidacja schematu przebiega na górze linii.
- [ ] Wybrałem strategię brakujących wartości w oparciu o znaczenie pól, nie wypełniałem ich mechanicznie.
- [ ] Zmierzyłem jakość etykiety (zgodność); Sprawdziłem tagi LLM przez człowieka.
- [ ] Zapobiegłem grupowym i czasowym wyciekom w szybie.
- [ ] Skalowanie/kodowanie obliczone wyłącznie na podstawie zbioru uczącego.
- [ ] Wersja danych, liczba zarejestrowanych rzędów i nasion.