Gratulacje! Udało Ci się wdrożyć model jednorożca. Model powinien działać 24 godziny na dobę przez 7 dni w tygodniu bez żadnych problemów. Aby mieć pewność, że tak, musisz monitorować potok systemów uczących się.
Napisz schemat danych do weryfikacji nieprzetworzonych danych
Aby sprawdzać dane, należy stale sprawdzać ich zgodność z oczekiwanymi wartości statystyczne poprzez napisanie reguł, którym muszą spełniać dane. Ta kolekcja to schemat danych. Zdefiniuj schemat danych, wykonując te czynności wykonaj te czynności:
Poznaj zakres i rozkład swoich cech. Kategorialne poznać zbiór możliwych wartości.
Zakoduj swoją wiedzę w schemacie danych. Oto przykłady reguły:
- Oceny wystawiane przez użytkowników muszą zawsze mieścić się w przedziale od 1 do 5.
- Sprawdź, czy najczęściej występuje słowo the (w przypadku tekstu w języku angielskim) ).
- Sprawdź, czy każda cecha kategorialna ma ustawioną wartość ze stałego zbioru możliwych wartości.
Przetestuj dane zgodnie ze schematem danych. Schemat powinien wychwytywać dane takie jak:
- Anomalie
- Nieoczekiwane wartości zmiennych kategorialnych
- Nieoczekiwane rozkłady danych
Pisanie testów jednostkowych w celu weryfikacji konstrukcji cech
Nieprzetworzone dane mogą przekazywać schemat danych, ale model nie trenuje na nieprzetworzonych danych. Zamiast tego model trenuje na danych, które zostały uwzględnione opracowano technologię. Na przykład model trenuje na znormalizowanych funkcjach liczbowych a nie w postaci nieprzetworzonych danych liczbowych. Ponieważ dane opracowane na podstawie cech mogą być bardzo niż nieprzetworzone dane wejściowe, trzeba sprawdzić dane opracowane przez funkcje niezależnie od sprawdzania nieprzetworzonych danych wejściowych.
Pisz testy jednostkowe na podstawie swojej wiedzy na temat danych opracowanych przez funkcje. Możesz na przykład napisać testy jednostkowe, aby sprawdzić warunki, takie jak :
- Wszystkie cechy liczbowe są skalowane, na przykład od 0 do 1.
- Kodowanie jednorazowo wektory zawierają tylko pojedyncze zera 1 i N-1.
- Rozkład danych po przekształceniu jest zgodny z oczekiwaniami. Na przykład jeśli do normalizacji użyto wyników Z, średnia wartość Wynik Z powinien wynosić 0.
- Wartości odstające obsługiwane, na przykład przez skalowanie lub przycinanie.
Sprawdzanie wskaźników pod kątem ważnych wycinków danych
Udana całość czasem ukrywa podzbiór zakończony niepowodzeniem. Innymi słowy, model z doskonałymi wskaźnikami ogólnymi i tak może generować fatalne prognozy w pewnych sytuacjach. Na przykład:
Twój model jednorożca jest ogólnie skuteczny, ale słabo że robimy prognozy na Saharę.
Jeśli jesteś inżynierem zadowolonym z ogólnych AUC, być może nie zauważysz problemów z modelem na Saharze. Jeśli tworzysz dobre prognozy dla każdego regionu są ważne, musisz więc śledzić w każdym regionie. podzbiory danych, np. odpowiedni po pustynię na Saharze, nazywamy wycinkami danych.
Określ interesujące Cię wycinki danych. Następnie porównaj dane modelu dla tych wycinków danych ze wskaźnikami dla: całego zbioru danych. Sprawdzanie, czy model ma dobrą wydajność we wszystkich wycinkach danych pomaga wyeliminować uprzedzenia. Zobacz Obiektywność: ocena pod kątem uprzedzeń .
Korzystaj z rzeczywistych danych
Dane modelu nie zawsze mierzą rzeczywisty wpływ modelu. Na przykład zmiana hiperparametru może zwiększyć AUC modelu, ale Czy zmiana wpłynęła na wygodę użytkowników? Aby mierzyć rzeczywisty wpływ, trzeba aby zdefiniować osobne dane. Możesz np. przeprowadzić ankietę wśród użytkowników modelu, i potwierdzić, że naprawdę widziały jednorożca, gdy model przewidział, zrobiłaby tego, co zrobił(a).
Sprawdź zniekształcenie między trenowaniem a zastosowaniem praktycznym
Zniekształcenie między trenowaniem a zastosowaniem oznacza, że dane wejściowe podczas trenowania różnią się z danych wejściowych podczas wyświetlania. W tej tabeli opisano 2 ważne typy zniekształcenia:
Typ | Definicja | Przykład | Rozwiązanie |
---|---|---|---|
Zniekształcenie schematu | Dane wejściowe trenowania i udostępniania nie są zgodne z tym samym schematem. | zmieni się format lub rozkład danych wyświetlania; a model będzie nadal trenować na starych danych. | Użyj tego samego schematu do weryfikowania danych treningowych i udostępniania. Pamiętaj, aby osobno sprawdzić statystyki, które nie są sprawdzane przez Twojego schematu, np. części brakujących wartości |
Zniekształcenie cech | Tak opracowane dane różnią się między trenowaniem a wyświetlaniem. | Kod inżynierii funkcji różni się między trenowaniem a wyświetlaniem, które generują różne dane. | Podobnie jak w przypadku odchylenia schematu, stosuj te same reguły statystyczne do trenowania i udostępniania danych technicznych. Śledź numer wykrytych zniekształconych cech oraz stosunek zniekształconych przykładów na cechę. |
Przyczyny zniekształceń między trenowaniem a zastosowaniem mogą być subtelne. Zawsze weź pod uwagę, jakie dane są dostępne dla modelu w czasie prognozy. W trakcie szkolenia używaj tylko tych funkcji, które będą dostępne podczas wyświetlania reklam.
Ćwiczenie: sprawdź swoją wiedzę
Załóżmy, że masz sklep internetowy i chcesz przewidzieć ile zarabiasz w danym dniu. Twoim celem ML jest prognozowanie dzienne przy użyciu funkcji liczby klientów.
Odpowiedź: Problem polega na tym, że nie znasz liczba klientów w prognozowanym czasie przed dzisiejszą sprzedażą gotowe. Ta funkcja nie jest więc przydatna, znacznie przewidują przychody dzienne. Powiązane z tym wytrenować model i uzyskać niesamowite wskaźniki oceny (takie jak 0,99 AUC), poszukać cech, które można przenieść do etykiety.
Sprawdź, czy nie wyciekły etykiety
Wyciek etykiet oznacza, że ground truth, które próbują przewidzieć, przypadkowo włamały się do funkcji szkoleniowych. Etykieta wyciek jest czasem bardzo trudne do wykrycia.
Ćwiczenie: sprawdź swoją wiedzę
Załóżmy, że tworzysz binarny model klasyfikacji, który przewiduje, czy nowy pacjent w szpitalu ma raka. Model korzysta z następujących funkcji:
- Wiek pacjenta
- Płeć pacjenta
- Wcześniejsze schorzenia
- Nazwa szpitala
- Znaki życiowe
- Wyniki testów
- Dziedzictwo
Etykieta wygląda tak:
- Wartość logiczna: czy pacjent ma raka?
Starannie partycjonujesz dane, aby mieć pewność, że zbiór treningowy jest dobrze od zbioru do walidacji i zestawu testowego. Skuteczność modelu nadzwyczaj dobrze w zbiorze do walidacji i testu; wskaźniki są To fantastyczne. Model ten radzi sobie jednak z wyjątkową skutecznością na nowych pacjentach. w świecie rzeczywistym.
Odpowiedź: Jedną z funkcji modelu jest nazwa szpitala. Niektóre szpitale specjalizują się w leczeniu raka. Podczas trenowania szybko odkrył, że pacjenci przypisani do niektórych szpitali prawdopodobnie miał raka. Dlatego nazwa szpitala stała się bardzo ważnym elementem.
W momencie wnioskowania większość pacjentów nie została jeszcze przydzielona do szpitala. Celem modelu było w końcu diagnozowanie obecności w przypadku niedoboru raka, a następnie użyć tej diagnozy, aby przypisać pacjentowi do odpowiedniego szpitala. W związku z tym podczas wnioskowania funkcja nazwy szpitala nie była jeszcze dostępna, a model został wymuszony. korzystanie z innych funkcji.
Monitorowanie wieku modelu w potoku
Jeśli dane wyświetlania zmieniają się z upływem czasu, ale model nie jest regularnie ponownie trenowany, zauważycie pogorszenie jakości modelu. Śledzić czas od momentu, gdy model ponownie wytrenować na nowych danych i ustawić próg wiekowy alertów. Oprócz monitorowania wieku modelu w momencie wyświetlenia, należy monitorować wiek modelu w całym potoku żeby wyłapać przerwa w działaniu rurociągów.
Sprawdź, czy wagi modelu i wyjściowe wyniki są stabilne liczbowo
Podczas trenowania modelu wagi i dane wyjściowe warstw nie powinny być NaN (nie liczba) lub Inf (nieskończona). Napisz testy, aby sprawdzić wartości NaN i Inf wag i danych wyjściowych warstwy. Dodatkowo przetestuj, czy ponad połowa wartości wyjściowych warstwy nie ma wartości zero.
Monitorowanie wydajności modelu
Twój prognozy wyglądu jednorożca jest bardziej popularny, niż się spodziewano! To już otrzymywanie wielu żądań prognoz i jeszcze większej ilości danych treningowych. Myślisz, że to świetnie, dopóki nie zdasz sobie sprawy, że Twój model zajmuje coraz więcej pamięci i czas na trenowanie. Decydujesz się na monitorowanie wydajności modelu, wykonując te działania: wykonaj te czynności:
- Śledzenie wydajności modelu według wersji kodu, modelu i danych. Takie śledzenie umożliwia ustalenie dokładnej przyczyny spadku wydajności.
- Przetestuj kroki trenowania na sekundę dla nowej wersji modelu i stałej wartości progowej.
- Wykrywaj wycieki pamięci, ustawiając próg wykorzystania pamięci.
- Monitoruj czasy odpowiedzi interfejsu API i śledź ich centyle. Odpowiedź interfejsu API czas oczekiwania może być poza Twoją kontrolą, powolne odpowiedzi słabe wskaźniki rzeczywiste.
- Monitorowanie liczby odpowiedzi na zapytania w ciągu sekundy.
Testowanie jakości aktywnego modelu na udostępnianych danych
Model został zweryfikowany. A co w sytuacjach z życia wzięte, np. z jednorożcem? zachowanie, zmiany po zarejestrowaniu danych weryfikacyjnych? Następnie jakość model udostępnianego pogorszy się. Testowanie jakości wyświetlania jest jednak trudne, ponieważ rzeczywiste dane nie zawsze są oznaczone etykietami. Jeśli dane wyświetlania nie są oznaczone etykietą, weź pod uwagę te testy:
Zbadaj modele, które wykazują istotne odchylenie statystyczne w prognozach. Zobacz Klasyfikacja: Prognoza Uprzedzenia.
Śledzenie rzeczywistych wskaźników modelu. Jeśli na przykład klasyfikujesz porównywać swoje prognozy ze spamem zgłoszonym przez użytkowników.
Ogranicz potencjalną rozbieżności między danymi do trenowania a danymi udostępniania przez udostępniając nową wersję modelu dla części zapytań. Podczas weryfikacji do nowego modelu wyświetlania, stopniowo przełączaj wszystkie zapytania na nową wersję.
Podczas korzystania z tych testów pamiętaj o monitorowaniu zarówno nagłego, jak i powolnego pogorszenia jakość prognozy.
Kolejność losowa
Zadbaj o możliwość odtwarzania potoku generowania danych. Załóżmy, że chcesz dodać element aby zobaczyć, jak wpłynie to na jakość modelu. Aby eksperyment był rzetelny, zbiory danych powinny będą identyczne z wyjątkiem tej nowej funkcji. W związku z tym należy zadbać o możliwość randomizacji generowania danych deterministyczny:
- Rozpocząć generatory liczb losowych. Materiał wyjściowy zapewnia przy każdym uruchomieniu powoduje wyświetlenie tych samych wartości w tej samej kolejności, co powoduje ponowne utworzenie do zbioru danych.
- Użyj niewariantowych kluczy skrótu. Popularnym sposobem dzielenia jest szyfrowanie. lub dane przykładowe. Każdy przykład można zaszyfrować, a następnie użyć wynikowej liczby całkowitej do i zdecyduj, w której części umieścić przykład. Dane wejściowe funkcji skrótu nie powinna zmieniać się po każdym uruchomieniu programu generowania danych. Nie używaj parametru bieżący czas lub losową liczbę w haszze, na przykład, jeśli chcesz ponownie tworzyć hasze na żądanie.
Poprzednie podejścia mają zastosowanie zarówno do próbkowania, jak i do dzielenia danych.
Uwagi na temat haszowania
Wyobraź sobie, że gromadzisz wyszukiwane hasła i korzystasz z szyfrowania uwzględniania lub wykluczania zapytań. Jeśli klucz skrótu używał tylko zapytania, a w przypadku danych z wielu dni zawsze uwzględnij lub zawsze ją wykluczyć. Zawsze uwzględniające lub wykluczające zapytanie jest błędne, ponieważ:
- Twój zestaw treningowy będzie mieć mniej zróżnicowany zestaw zapytań.
- Twoje zestawy do oceny będą sztucznie za trudne, ponieważ nie będą nakładają się na dane treningowe. W rzeczywistości podczas wyświetlania strony zauważyli już część ruchu w Twoich danych treningowych. powinna to odzwierciedlać.
Zamiast tego możesz zaszyfrować dane w zapytaniu i dacie, co spowodowałoby inne haszowanie. zainteresowanych informacjami ze świata.