Dane są tak ważne dla deweloperów systemów uczących się, jak kod dla tradycyjnych programistów. Ta lekcja koncentruje się na rodzajach pytań, jakie należy sobie zadać.
Podsumowanie wykładu wideo
Działanie systemu ML zależy od zachowania i jakości jego funkcji wejściowych. Gdy dane wejściowe tych funkcji zmieniają się, zmienia się również model. Niekiedy ta zmiana jest pożądana, ale nie zawsze.
W tradycyjnym programowaniu oprogramowania skupiasz się bardziej na kodzie niż na danych. Chociaż programowanie systemów uczących się jest wciąż częścią pracy, zagadnienia muszą obejmować poszerzanie zakresu informacji. Na przykład w tradycyjnych projektach programistycznych sprawdzoną metodą jest napisanie testów jednostkowych, by sprawdzić kod. W projektach ML musisz też stale testować, weryfikować i monitorować dane wejściowe.
Na przykład stale monitoruj model, aby usuwać nieużywane (lub rzadko używane) funkcje. Wyobraź sobie, że określona cecha ma niewielki wpływ na model. Jeśli dane wejściowe tej funkcji gwałtownie się zmienią, zachowanie Twojego modelu może się od razu zmienić w nieoczekiwany sposób.
Niezawodność
Oto kilka pytań o niezawodność danych wejściowych:
- Czy sygnał jest zawsze dostępny, czy pochodzi z niezaufanego źródła? Przykład:
- Czy sygnał pochodzi z serwera, który ulega awarii z powodu dużego obciążenia?
- Czy sygnał pochodzi od ludzi, którzy każdego sierpnia wyjeżdżają na wakacje?
Obsługa wersji
Pytania dotyczące wersji:
- Czy system, który przetwarza te dane, zmienia się? Jeśli tak:
- Jak często?
- Skąd będziesz wiedzieć, że system się zmienił?
Czasami dane pochodzą z procesu przesyłania wychodzącego. Jeśli proces nagle się zmieni, może to ucierpieć.
Rozważ utworzenie własnej kopii danych otrzymanych w ramach procesu przesyłania. Następnie przejdź do następnej wersji danych na żądanie, jeśli masz pewność, że jest to bezpieczne.
Potrzeba
To pytanie może Ci przypominać o regularizacji:
- Czy przydatność tej funkcji uzasadnia jej zastosowanie?
Zawsze kuszące jest dodawanie kolejnych funkcji do modelu. Załóżmy na przykład, że znajdujesz nową funkcję, której dodanie sprawia, że model jest nieco dokładniejszy. Większa dokładność to z pewnością lepszy dźwięk niż mniejsza dokładność. Właśnie udało Ci się dodać do zadań konserwacyjnych. Ta dodatkowa funkcja może niespodziewanie ulec obniżeniu, więc musisz ją monitorować. Dobrze się zastanów, zanim dodasz funkcje, które mogą zapewnić niewielkie korzyści krótkoterminowe.
Korelacje
Niektóre funkcje korelują (pozytywnie lub negatywnie) z innymi funkcjami. Zadaj sobie to pytanie:
- Czy jakieś cechy są tak powiązane, że potrzebujesz dodatkowych strategii, by je odróżnić?
Pętle informacji zwrotnych
Czasami model może wpływać na swoje dane treningowe. Z kolei wyniki z niektórych modeli z kolei bezpośrednio lub pośrednio tworzą funkcje dla tego samego modelu.
Czasami model może mieć wpływ na inny model. Weźmy na przykład 2 modele do prognozowania cen akcji:
- Model A, który jest niewłaściwym modelem prognozującym.
- Model B.
Model A jest wadliwy, więc postanowił omyłkowo kupić akcje w magazynie X. Te zakupy zwiększają cenę akcji X. Model B wykorzystuje cenę akcji X jako funkcję wejściową, więc model B może łatwo wyciągać fałszywe wnioski na temat wartości akcji x. Model B może więc kupować lub sprzedawać akcje X akcji w zależności od nieprawidłowego działania modelu A. Działanie modelu B z kolei może wpływać na model A i może prowadzić do manii typu tulipany lub slajdu w magazynie firmy X.