Oto moje dane treningowe: 200 000 przykładów x 10 000 funkcji. Zatem moja macierz danych treningowych wynosi - 200 000 x 10 000.
Udało mi się zapisać to w płaskim pliku bez problemów z pamięcią, zapisując każdy zestaw danych jeden po drugim (jeden przykład po drugim) podczas generowania funkcji dla każdego przykładu.
Ale teraz, gdy używam Milk , SVM light lub dowolnego innego algorytmu uczenia maszynowego, wszystko próbuje załadować całe dane treningowe do pamięci zamiast trenować je jeden po drugim. Mam tylko 8 GB pamięci RAM, więc nie mogę tego zrobić.
Czy wiesz w każdym razie, że mógłbym wyszkolić algorytm jeden zestaw danych przez jeden zestaw danych? To znaczy, że w każdej chwili mam tylko jeden zestaw danych załadowany do pamięci podczas treningu.
źródło
Odpowiedzi:
Uważam, że termin do tego typu nauki jest out-of-rdzenia nauki. Jedną z sugestii jest ślubny wabbit , który ma wygodną bibliotekę R , a także biblioteki dla wielu innych języków.
źródło
Serdecznie popieram sugestię Zacha. Walbit Wpalbit jest doskonałą opcją, a jego szybkość zaskoczyłaby. Zestaw danych 200k na 10k nie jest uważany za duży według norm ślubnych wabbit.
wedpal_wabbit (dostępny w formie źródłowej przez https://github.com/JohnLangford/vowpal_wabbit , starsza wersja jest dostępna jako standardowy pakiet we wszechświecie Ubuntu) jest szybkim uczniem liniowym + dwuliniowym, z bardzo elastycznym wejściem. Możesz łączyć funkcje o wartości binarnej i liczbowej. Nie ma potrzeby numerowania funkcji, ponieważ nazwy zmiennych będą działać „tak jak są”. Ma mnóstwo opcji, algorytmów, redukcji, funkcji strat oraz wszechstronną elastyczność. Możesz dołączyć do listy mailingowej (znaleźć ją przez github) i zadać dowolne pytanie. Społeczność jest bardzo kompetentna i wspiera.
źródło
Odpowiedziałem na podobne pytanie tutaj . Chodzi o to, że większość algorytmów uczenia maszynowego / eksploracji danych uczy się wsadowo, tzn. Ładuje wszystkie dane do pamięci. Dlatego potrzebujesz różnych narzędzi do bardzo dużych zestawów danych. Zobacz także narzędzia do tych pytań.
Nauka online to sposób na zmniejszenie wykorzystania pamięci przez algorytmy.
źródło