Mam nadzieję, że tytuł jest oczywisty. W Kaggle większość zwycięzców używa układania w stosy z czasami setkami modeli podstawowych, aby wycisnąć kilka dodatkowych% MSE, dokładność ... Ogólnie rzecz biorąc, z twojego doświadczenia wynika, jak ważne jest wymyślne modelowanie, takie jak układanie w stosy, po prostu gromadzenie większej ilości danych i więcej funkcji dla danych?
56
Odpowiedzi:
W drodze tle, robiłem sklep prognozowania SKU szeregi czasowe dla sprzedaży detalicznej od 12 lat. Dziesiątki tysięcy szeregów czasowych w setkach lub tysiącach sklepów. Lubię powiedzieć, że zajmujemy się Big Data od czasu, gdy termin ten stał się popularny.×
Konsekwentnie stwierdzam, że najważniejszą rzeczą jest zrozumienie twoich danych . Jeśli nie rozumiesz głównych kierowców, takich jak Wielkanoc czy promocje, jesteś skazany. Często sprowadza się to do zrozumienia konkretnego biznesu na tyle dobrze, aby zadać prawidłowe pytania i powiedzieć nieznane nieznane nieznane .
Kiedy zrozumiesz swoje dane, musisz pracować, aby uzyskać czyste dane. Nadzorowałem sporo juniorów i stażystów, a jedyną rzeczą, której nigdy nie doświadczyli we wszystkich swoich statystykach i na zajęciach z nauk o danych, było to, jak wiele bzdur może być w danych, które posiadasz. Następnie musisz albo wrócić do źródła i spróbować uzyskać dobre dane, albo wyczyścić, a nawet po prostu wyrzucić niektóre rzeczy. Zmiana działającego systemu w celu uzyskania lepszych danych może być zaskakująco trudna.
Gdy zrozumiesz swoje dane i faktycznie będziesz mieć dość czyste dane, możesz zacząć nimi manipulować. Niestety do tego czasu często brakuje mi czasu i zasobów.
Ja osobiście jestem wielkim fanem modelu połączeniu ( „układania”), przynajmniej w sensie abstrakcyjnym , mniej ozdobnego funkcji inżynierii, która często przecina linię do przeuczenia terytorium - a nawet jeśli hodowca Model wykonuje nieco lepsze średnio często okazuje się, że bardzo złe prognozy pogarszają się w przypadku bardziej złożonego modelu. To jest przełom w mojej branży. Jedna naprawdę zła prognoza może całkiem zniszczyć zaufanie do całego systemu, więc niezawodność jest bardzo wysoka na mojej liście priorytetów. Twój przebieg może się różnić.
Z mojego doświadczenia wynika, że tak, kombinacja modeli może poprawić dokładność. Jednak naprawdę duże korzyści osiąga się w pierwszych dwóch krokach: zrozumieniu danych i ich wyczyszczeniu (lub przede wszystkim uzyskaniu czystych danych).
źródło
Oczywiście nie mogę mówić w imieniu całej branży, ale pracuję w branży i konkurowałem z Kaggle, więc podzielę się swoim POV.
Po pierwsze, masz rację, że Kaggle nie pasuje dokładnie do tego, co robią ludzie w branży. To gra, z zastrzeżeniem kunsztu gry, z wieloma szalonymi ograniczeniami. Na przykład w trwającym konkursie Santander :
Gdyby ktoś dał mi taki zestaw danych w pracy, natychmiast zaoferowałbym współpracę z nimi w zakresie inżynierii funkcji, abyśmy mogli uzyskać funkcje, które byłyby bardziej przydatne. Sugerowałbym, abyśmy korzystali z wiedzy o domenach, aby decydować o prawdopodobnych warunkach interakcji, progach, kategorycznych strategiach kodowania zmiennych itp. Podejście do problemu w ten sposób byłoby zdecydowanie bardziej produktywne niż próba wydobycia znaczenia z pliku wyczerpanego opracowanego przez inżyniera bazy danych bez szkolenie w ML.
Co więcej, jeśli dowiesz się, powiedzmy, że konkretna kolumna liczbowa wcale nie jest liczbą, ale raczej kodem pocztowym, możesz przejść i uzyskać dane z zewnętrznych źródeł danych, takich jak amerykański spis powszechny, aby powiększyć swoje dane. A jeśli masz datę, być może podasz cenę zamknięcia S&P 500 na ten dzień. Takie zewnętrzne strategie rozszerzania wymagają szczegółowej wiedzy o konkretnym zbiorze danych i znacznej wiedzy w dziedzinie, ale zwykle mają znacznie większe korzyści niż czysta poprawa algorytmu.
Tak więc pierwszą dużą różnicą między przemysłem a Kaggle jest to, że w przemyśle cechy (w sensie danych wejściowych) podlegają negocjacji.
Drugą klasą różnic jest wydajność. Często modele zostaną wdrożone do produkcji na jeden z dwóch sposobów: 1) prognozy modelu zostaną wstępnie obliczone dla każdego wiersza w bardzo dużej tabeli bazy danych, lub 2) aplikacja lub strona internetowa przekaże modelowi pojedynczy wiersz danych i potrzebujesz prognozy zwracanej w czasie rzeczywistym. Oba przypadki użycia wymagają dobrej wydajności. Z tych powodów często nie widzisz modeli, które mogą być powolne w przewidywaniu lub używają ogromnej ilości pamięci, takich jak K-Nearest-Neighbors lub Extra Random Forests. Natomiast regresja logistyczna lub sieć neuronowa może uzyskać partię rekordów z kilkoma mnożeniami macierzy, a mnożenie macierzy można zoptymalizować za pomocą odpowiednich bibliotek.Chociaż mógłbym uzyskać może +0,001 AUC, gdybym stosował inny nieparametryczny model, nie zrobiłbym tego, ponieważ przepustowość prognozowania i opóźnienia spadałyby zbyt mocno.
Ma to również wymiar niezawodności - zestawienie czterech różnych najnowocześniejszych bibliotek firm zewnętrznych, na przykład LightGBM , xgboost , catboost i Tensorflow (na GPU , oczywiście) może dać ci 0,01 zmniejszenia MSE, które wygrywa konkursy Kaggle, ale są cztery różne biblioteki do instalowania, wdrażania i debugowania, jeśli coś pójdzie nie tak. To wspaniale, jeśli możesz uruchomić wszystkie te rzeczy na swoim laptopie, ale uruchomienie go w kontenerze Docker działającym na AWS to zupełnie inna historia. Większość firm nie chce kierować małym zespołem deweloperów tylko po to, aby zająć się tego rodzaju problemami z wdrażaniem.
To powiedziawszy, układanie w sobie samo w sobie niekoniecznie jest wielką sprawą. W rzeczywistości zestawienie kilku różnych modeli, które działają tak samo dobrze, ale mają bardzo różne granice decyzyjne, jest świetnym sposobem na uzyskanie niewielkiego wzrostu wartości AUC i dużego wzrostu odporności. Po prostu nie rzucaj tyloma zlewami kuchennymi do swojego heterogenicznego zestawu, że zaczniesz mieć problemy z wdrażaniem.
źródło
Z mojego doświadczenia wynika, że więcej danych i więcej funkcji jest ważniejszych niż najbardziej wymyślny, najlepiej ułożony, najlepiej dostrojony model, jaki można wymyślić.
Spójrz na internetowe konkursy reklamowe, które miały miejsce. Zwycięskie modele były tak złożone, że trenowanie zajęło cały tydzień (na bardzo małym zestawie danych w porównaniu do standardu branżowego). Ponadto przewidywanie w modelu piętrowym jest dłuższe niż w prostym modelu liniowym. W tym samym temacie pamiętaj, że Netflix nigdy nie używał algorytmu 1 mln $ z powodu kosztów inżynierii .
Powiedziałbym, że internetowe konkursy danych są dobrym sposobem dla firmy, aby dowiedzieć się „jaka jest najwyższa dokładność (lub jakikolwiek wskaźnik wydajności), który można osiągnąć” przy użyciu gromadzonych danych (w pewnym momencie). Zauważ, że to naprawdę trudny problem, który jest rozwiązywany! Jednak w branży wiedza w terenie, ograniczenia sprzętowe i biznesowe zwykle zniechęcają do stosowania „fantazyjnych modeli”.
źródło
Układanie w stosy znacznie zwiększa złożoność i zmniejsza interpretowalność. Zyski są zwykle stosunkowo niewielkie, aby to uzasadnić. Tak więc, mimo że zestawianie jest prawdopodobnie szeroko stosowane (np. XGBoost), myślę, że układanie w stosach jest stosunkowo rzadkie.
źródło
Z mojego doświadczenia wynika, że zbieranie dobrych danych i funkcji jest o wiele ważniejsze.
Klienci, z którymi współpracowaliśmy, zwykle mają dużo danych, a nie wszystkie w formacie, który można łatwo wyeksportować lub łatwo z nimi pracować. Pierwsza partia danych zwykle nie jest zbyt użyteczna; naszym zadaniem jest współpraca z klientem w celu ustalenia, jakie dane byłyby potrzebne, aby model był bardziej użyteczny. To bardzo iteracyjny proces.
Trwa wiele eksperymentów i potrzebujemy modeli, które są:
Punkt 3) jest szczególnie ważny, ponieważ modele, które są łatwe do interpretacji, łatwiej komunikować się z klientem i łatwiej jest złapać, jeśli zrobiliśmy coś źle.
źródło
Oto coś, co niewiele pojawia się w Kaggle:
tym większe ryzyko będziesz musiał stawić czoła przez cały okres istnienia tego modelu. Czas jest zazwyczaj albo zamrożony w konkursach Kaggle, albo istnieje krótkie okno czasowe, w którym pojawiają się wartości zestawu testów. W przemyśle model ten może działać przez lata. Wystarczy, że jedna zmienna przejdzie do szaleństwa, aby cały model poszedł do piekła, nawet jeśli został zbudowany bezbłędnie. Rozumiem, nikt nie chce oglądać zawodów, w których konkurenci starannie równoważą złożoność modelu z ryzykiem, ale w pracy, Twoja firma i jakość życia ucierpią, jeśli coś pójdzie nie tak z modelem, którym zarządzasz. Nawet wyjątkowo mądrzy ludzie nie są odporni. Weźmy na przykład niepowodzenie prognozy Google Flu Trends . Świat się zmienił i nie widzieli, że nadejdzie.
Na pytanie OP: „ Ogólnie rzecz biorąc, jak ważne jest fantazyjne modelowanie, takie jak układanie w stosy, po prostu gromadzenie większej ilości danych i więcej funkcji dla danych? ” Cóż, jestem oficjalnie stary, ale moja odpowiedź jest taka, chyba że masz naprawdę solidna infrastruktura modelowania, lepiej mieć proste modele z minimalnym zestawem zmiennych, w których relacja między wejściami i wyjściami jest stosunkowo prosta. Jeśli zmienna ledwie poprawia wskaźnik strat, pomiń go. Pamiętaj, że to praca. Zabierz kopnięcia poza pracę w konkursach Kaggle, w których występuje zachęta „iść na całość lub iść do domu”.
Jednym wyjątkiem byłby sytuacja, w której sytuacja biznesowa wymagałaby określonego poziomu wydajności modelu, na przykład gdyby Twoja firma musiała dopasować lub pokonać wydajność konkurenta, aby uzyskać przewagę (prawdopodobnie w marketingu). Ale gdy istnieje liniowa zależność między wydajnością modelu a zyskiem biznesowym, wzrost złożoności zazwyczaj nie usprawiedliwia zysku finansowego (patrz „ Netflix nigdy nie używał swojego 1 milionowego algorytmu z powodu kosztów inżynieryjnych ” - przeprasza @ RUser4512 za cytowanie tego samego artykuł). Jednak w konkursie Kaggle ten dodatkowy zysk może przesunąć cię o setki stopni, gdy przejdziesz obok rozwiązań.
źródło
Krótka odpowiedź, którą lubię cytat z książki Gary'ego Kasparowa „Głębokie myślenie”
Pracuję głównie z danymi finansowymi szeregów czasowych i procesem od gromadzenia danych, czyszczenia ich, przetwarzania, a następnie pracuję z właścicielami problemów, aby dowiedzieć się, co naprawdę chcą zrobić, a następnie budować funkcje i modele, aby spróbować rozwiązać problem i na koniec przeanalizować proces w celu poprawy na następny raz.
Cały ten proces jest większy niż suma jego części. Mam tendencję do uzyskiwania „akceptowalnej” wydajności uogólnienia z regresją liniową / logistyczną i rozmawiam z ekspertami w dziedzinie w celu wygenerowania funkcji, co oznacza znacznie lepszy czas spędzony niż spędzanie czasu na dopasowywaniu mojego modelu do posiadanych danych.
źródło