Wyzwania dla przemysłu i Kaggle. Czy zbieranie większej liczby obserwacji i dostęp do większej liczby zmiennych jest ważniejsze niż fantazyjne modelowanie?

56

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?

Tomek
źródło
4
Zależy to całkowicie od tego, czy chcesz użytecznego uogólnionego przepływu, który można szybko przekwalifikować (lub przekierować do nowego zestawu danych lub nowych funkcji), czy po prostu wygrać tę konkretną konkurencję Kaggle (na tym konkretnym statycznym zbiorze danych, wykorzystując wyciek, „magiczne cechy” i wszystko). W przypadku tych pierwszych algorytm, który uzyskuje taką samą dokładność gry w piłkę przy znacznie krótszym czasie szkolenia i mniejszym zestawie danych, jest „lepszy”. Wyobraź sobie, że Kaggle kiedykolwiek zaczął karać za nadmierne wymagania obliczeniowe / pamięć lub czas szkolenia, albo wziął to pod uwagę w ramach oceny wyników (sugeruję, że już powinni).
smci
2
Zaczerpnięte z „Stosowania głębokiego uczenia się do rzeczywistych problemów” Rasmus Rothe: „[…] w rzeczywistych scenariuszach, mniej chodzi o pokazanie, że twój nowy algorytm wyciska dodatkowy 1% wydajności w porównaniu z inną metodą. polega na zbudowaniu solidnego systemu, który rozwiązuje wymagane zadanie z wystarczającą dokładnością. ”
beatngu13,

Odpowiedzi:

77

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 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).

S. Kolassa - Przywróć Monikę
źródło
4
@bendl, YMMV oznacza, że Twój przebieg może się różnić . Wypowiedź zdania przed tym może, ale nie musi, być mniej lub bardziej prawdziwa w różnych okolicznościach.
Orphevs,
2
Pracuję również w handlu detalicznym, wykonując prognozy na poziomie SKU / lokalizacji dla szeregów czasowych ~ :-). Ale zastanawiałem się, czy to, co robimy, liczy się jako „Big Data”, czy nie. Chociaż ogólne zestawy danych znajdują się w szerokim zakresie danych, modele prognozowania są zwykle stosowane do mniejszych grup danych (nawet po zastosowaniu hierarchicznych metod prognozowania) i technik niezbędnych do prawdziwego przetwarzania dużych danych (np. MapReduce, mieszanie danych itp.) .) nigdy nie są wymagane. DeepAR Amazon wydaje się być prawdziwym big data i podejrzewam, że jest tak samo hype jak nauka. 106
Skander H.
2
Nieważne tylko doświadczenie w klasie. Jest wielu praktyków z branży, którzy mają doświadczenie głównie w kontekście wysokiego stosunku sygnału do szumu, takiego jak rozpoznawanie obrazu, i próbują zastosować te same metody do głośnych procesów społecznych, takich jak rekrutacja, na miłość boską.
Brash Equilibrium,
2
@Orphevs Innymi słowy, to stwierdzenie może być dostosowane do mojej sytuacji i nie uogólniać się dobrze. : P
JAD
2
(+1) Jeśli chodzi o problem czyszczenia danych ze świeżymi ocenami, warto również zauważyć, że podczas mojej formalnej edukacji łatwo było wyjść z przekonania, że ​​czyszczenie danych było złe . Oznacza to, że czyszczenie danych może silnie wpływać na poziom błędów typu I (szczególnie jeśli w procesie czyszczenia występuje tendencyjność), dlatego uczono nas o zagrożeniach związanych z czyszczeniem danych. Te lekcje nie były złe, ale nie sądzę, aby moja formalna edukacja podkreślała zalety czyszczenia danych, szczególnie w przypadku modelowania predykcyjnego.
Cliff AB
42

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 :

  1. Nazwy obiektów zostały sztucznie zakodowane, aby ukryć ich znaczenie
  2. Zestaw „treningowy” był sztucznie ograniczony, aby miał mniej wierszy niż kolumn, tak więc wybór funkcji, niezawodność i technika regularyzacji byłyby niezbędne do sukcesu.
  3. Tak zwany zestaw „testowy” ma wyraźnie inny rozkład niż zestaw treningowy i oba wyraźnie nie są przypadkowymi próbkami z tej samej populacji.

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.

olooney
źródło
Drobna uwaga, myślę, że w punkcie nr 2 brakuje końca zdania?
mbrig,
20

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”.

RUser4512
źródło
2
To prawda, że ​​może się zdarzyć, że proces gromadzenia danych zawsze się zmienia. Co oznaczałoby, że obecnie stosowane algorytmy byłyby przestarzałe (oprócz kosztów inżynierii lub czasu szkolenia, jak wskazałeś). Potrzebne byłyby zatem prostsze, szybsze i bardziej elastyczne algorytmy.
Tom
4
Słyszałem, że jeden z głównych punktów tego postu został podsumowany jako „dobry wybór zmiennych zawsze
przebije
14

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.

spłukać
źródło
1
Słuszna uwaga. Interpretowalność jest niezwykle ważna w moich aplikacjach (kierownicy sklepów chcą zrozumieć, dlaczego prognoza jest taka, jaka jest), więc modele trudne do interpretacji mają problem.
S. Kolassa - Przywróć Monikę
Dzięki za osobiste spostrzeżenia Stephan. Chociaż uważałem, że interpretacja cierpi lub zanika wraz ze wzrostem złożoności modelu, nie myślałem o ograniczeniach czasowych, które z pewnością są bardziej naglące w firmie. Modelowanie fantazyjne ma prawdopodobnie najgorszy stosunek (uzyskana dokładność) / (spędzony czas).
Tom
8

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ą:

  1. Szybko trenować
  2. Szybkie przewidywanie (często jest to również wymóg biznesowy)
  3. Łatwy w interpretacji

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.

Akavall
źródło
7

Oto coś, co niewiele pojawia się w Kaggle:

  • więcej zmiennych masz w swoim modelu, i
  • im bardziej złożona jest relacja między tymi zmiennymi a wynikiem,

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ń.

Ben Ogorek
źródło
3

Krótka odpowiedź, którą lubię cytat z książki Gary'ego Kasparowa „Głębokie myślenie”

Sprytny proces pokonuje doskonałą wiedzę i doskonałą technologię

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.

Ken Syme
źródło