Muszę wyszkolić liniowy klasyfikator na moim laptopie z setkami tysięcy punktów danych i około dziesięcioma tysiącami funkcji. Jakie są moje opcje? Jaki jest obecny stan tego rodzaju problemu?
Wygląda na to, że stochastyczny spadek gradientu jest obiecującym kierunkiem i mam wrażenie, że jest to stan techniki:
„Pegasos: Primal Estimated sub-GrAdient SOlver for SVM” Shai Shalev-Shwartz, Yoram Singer, Nathan Srebro, Andrew Cotter. „Programowanie matematyczne, seria B, 127 (1): 3-30, rok: 2007”.
Czy to konsensus? Czy powinienem patrzeć w innym kierunku?
classification
carlosdc
źródło
źródło
Odpowiedzi:
Myślę, że powinieneś przyjrzeć się metodom nauki online . Perceptron i perceptron jądra są niezwykle łatwe do kodu i pracy bardzo dobrze w praktyce, i istnieje całe mnóstwo innych metod internetowych. Zauważ, że każdą metodę uczenia się online można przekształcić w algorytm uczenia się wsadowego, w którym to przypadku bardzo przypominają stochastyczne metody gradientu.
Jeśli używasz Matlaba, istnieje naprawdę fajny zestaw narzędzi o nazwie DOGMA autorstwa Francesco Orabona, który zawiera szereg algorytmów uczenia się online i możesz ocenić kilka różnych metod, używając tego. Użyłem tego w niektórych moich badaniach i uznałem, że jest to bardzo przydatne (zauważ, że o ile pamiętam, oczekuje danych jako [zawiera x przykładów], więc być może będziesz musiał je przetransponować).
źródło
Po pierwsze chciałbym zapytać, skąd wiesz, że klasyfikator liniowy jest najlepszym wyborem? Intuicyjnie w przypadku tak dużej przestrzeni (R ^ 10000) możliwe jest, że jakiś inny nieliniowy klasyfikator jest lepszym wyborem.
Sugeruję, abyś wypróbował kilka różnych klasyfikatorów i zaobserwował błędy prognozowania (spróbowałbym kilku znormalizowanych modeli klasyfikacji).
Jeśli zabraknie pamięci, zmniejsz wymiar za pomocą PCA
źródło
Możesz także użyć PCA do zmniejszenia wymiarów bez obliczania macierzy kowariancji --- za pomocą neuronowego odpowiednika PCA newtork.
Oto artykuł, który to opisuje (ale polecam przeprowadzić własne wyszukiwanie): http://users.ics.tkk.fi/oja/Oja1982.pdf , a tutaj jest link do czegoś, co może działać implementacja Matlaba: http : //www.cs.purdue.edu/homes/dgleich/projects/pca_neural_nets_website/index.html .
źródło
Jak sugeruje jb, myślę, że lepiej jest zastosować metodę „redukcji wymiarów”. Analiza zasad składowych (PCA) jest popularnym wyborem. Możesz także wypróbować techniki uczenia się funkcji bez nadzoru. Więcej informacji na temat uczenia się funkcji bez nadzoru można znaleźć na stronie http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial
źródło