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 :
- Nazwy obiektów zostały sztucznie zakodowane, aby ukryć ich znaczenie
- 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.
- 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.