Mam problem z dużymi danymi z dużym zestawem danych (weźmy na przykład 50 milionów wierszy i 200 kolumn). Zestaw danych składa się z około 100 kolumn numerycznych i 100 kolumn kategorycznych oraz kolumny odpowiedzi reprezentującej problem klasy binarnej. Liczność każdej z kolumn jakościowych jest mniejsza niż 50.
Chcę z góry wiedzieć, czy powinienem wybrać metody głębokiego uczenia się, czy też metody oparte na drzewach (na przykład zwiększanie gradientu, adaboost lub losowe lasy). Czy są jakieś eksploracyjne analizy danych lub jakieś inne techniki, które mogą pomóc mi zdecydować się na jedną metodę zamiast drugiej?
Odpowiedzi:
Po co ograniczać się do tych dwóch podejść? Bo są fajni? Zawsze zaczynam od prostego liniowego klasyfikatora \ regresora. Tak więc w tym przypadku liniowa SVM lub regresja logistyczna, najlepiej z implementacją algorytmu, która może skorzystać z rzadkości ze względu na rozmiar danych. Uruchomienie algorytmu DL na tym zbiorze danych zajmie dużo czasu, a normalnie starałbym się tylko głębokiego uczenia się na temat specjalistycznych problemów, w których istnieje hierarchiczna struktura danych, takich jak obrazy lub tekst. Jest to nadmierna umiejętność w przypadku wielu prostszych problemów z uczeniem się, zajmuje dużo czasu i wiedzy, a także algorytmy DL są bardzo powolne. Dodatkowo, ponieważ masz 50 milionów wierszy, nie oznacza to, że musisz użyć całego zestawu danych, aby uzyskać dobre wyniki. W zależności od danych możesz uzyskać dobre wyniki z próbką kilku 100 000 wierszy lub kilku milionów. Zaczynałbym od prostej próbki z małą próbką i klasyfikatorem liniowym, a od tego czasu komplikowałbym się bardziej, gdyby wyniki nie były zadowalające. Przynajmniej w ten sposób uzyskasz linię bazową. Często znaleźliśmy proste modele liniowe, aby wykonać bardziej zaawansowane modele w większości zadań, więc zawsze chcesz zacząć od tego.
źródło
Oprócz innych odpowiedzi (a w komentarzach jest jakiś dobry link) zależy to od problemu i na jakie pytania chcesz odpowiedzieć. Jak mogę tylko sugerować na podstawie własnego doświadczenia, w przypadku zadania klasyfikacji możliwe metody mogą być poważnie ograniczone w oparciu o równowagę klas w zbiorze danych.
Po przejściu na nierównowagę klasy większą niż około 1:10 większość metod klasyfikacji po prostu przestaje działać. Zostaną ci metody oparte na losowym lesie i być może sieciach neuronowych (jeszcze nie próbowałem). Pracuję z równowagą klas w zakresie od 1: 500 do 1: 1000 i stwierdziłem, że ani próbkowanie w dół, ani w górę nie działa. Na szczęście mój zestaw danych to „tylko” 6 milionów obserwacji przez 200 zmiennych i jestem w stanie uruchomić wzmocnione drzewa na całym zestawie w rozsądnym czasie.
Aby bezpośrednio odpowiedzieć na twoje pytanie:
powinieneś wymyślić kilka pytań, na które chciałbyś odpowiedzieć, a w przypadku klasyfikacji sprawdź salda klas zmiennych docelowych.
powinieneś sprawdzić rozkład (nie w sensie matematycznym) brakujących wartości we wszystkich swoich danych i udokumentować to, co znajdziesz. Niektóre metody ML są w porządku z brakującymi wartościami, podczas gdy inne nie, i musisz przyjrzeć się imputacji danych (która ma swój własny zestaw reguł, wytycznych i problemów).
źródło
Z mojego punktu widzenia, dla 5 milionów wystąpień potrzeba wielu drzew, aby uzyskać dobrą oprawę uogólniającą (dobry model w laika). Jeśli nie jest to problem, skorzystaj z niego, nawet dokładna odpowiedź zależy od charakteru problemu. GBT jest dobrą metodą, szczególnie jeśli masz mieszane typy funkcji, takie jak kategoryczne, numeryczne i tym podobne. Ponadto, w porównaniu z sieciami neuronowymi, ma mniejszą liczbę hiperparametrów do dostrojenia. Dlatego szybciej jest mieć najlepszy model ustawień. Jeszcze jedna rzecz to alternatywa dla treningu równoległego. Możesz trenować wiele drzew jednocześnie z dobrym procesorem. Jeśli wyniki nie są satysfakcjonujące, wybierz Sieci neuronowe, ponieważ oznacza to, że Twój model powinien być bardziej rozbudowany i powinien uczyć się informacji o wyższym zamówieniu na podstawie danych. Jest to spowodowane NN w porównaniu z innymi algorytmami uczenia się.
źródło
Zgodnie z tym, co powiedział @Simon:
W przypadku twojego problemu wysiłek w porównaniu do korzyści nie wydaje się sprzyjać głębokiemu uczeniu się. DL byłoby przesadą
źródło
Gdy masz tak duży zestaw danych, możesz grać przy użyciu dowolnej techniki modelowania statystycznego i uczenia maszynowego, co jest bardzo zalecane. Jak sugerują inni, zaleciłbym również pobranie kilku milionów losowych próbek z danych i zabawienie się nimi. Ponieważ jest to problem z klasyfikacją, najpierw zastosuję proste techniki klasyfikacji, a następnie będę stosować bardziej złożone. Regresja logistyczna jest świetna na początek.
Chciałem dodać, że należy również wypróbować modele generatywne . Naiwny klasyfikator Bayesa jest jednym z najprostszych klasyfikatorów probabilistycznych i przewyższa wiele złożonych metod, takich jak obsługa maszyn wektorowych w wielu zadaniach. Możesz spojrzeć na tę prostą implementację NB i ten link do porównania NB do regresji logistycznej.
Można zbudować klasyfikator Naive Bayesa (NB) jako model podstawowy, a następnie wybrać dowolną technikę uczenia maszynowego, taką jak maszyny wektorów wsparcia (SVM) lub perceptrony wielowarstwowe (MLP). Kompromis polega na tym, że NB jest obliczeniowo tańszy niż MLP, więc pożądana jest lepsza wydajność MLP.
W odpowiedzi na twoje dokładne zapytanie: Głębokie uczenie się i zwiększanie drzewa gradientowego to bardzo potężne techniki, które mogą modelować dowolny rodzaj relacji w danych. Ale co, jeśli w twoim przypadku prosta regresja logistyczna lub NB daje pożądaną dokładność. Dlatego zawsze lepiej najpierw wypróbować proste techniki i uzyskać wyjściową wydajność. Następnie można wybrać złożone modele i porównać z linią bazową.
źródło