Klasyfikacja na podstawie danych o wysokiej zawartości tłuszczu

15

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?

carlosdc
źródło
1
czy zastanawiałeś się nad zastosowaniem niektórych metod redukcji wymiarów? tysiąc funkcji wymaga zmniejszenia wymiarów patrz: en.wikipedia.org/wiki/Dimension_reduction
Dov
To pytanie można poprawić dzięki wysiłkom badawczym. Czy masz na myśli jakieś techniki?
Tamzin Blake,
@Thom Blake: Trochę zredagowałem to pytanie własnymi myślami.
carlosdc
Bez wiedzy na temat danych każda odpowiedź byłaby niedoinformowana. Czy to rzadkie? ciągły? oddzielny? zbędne funkcje / obiekty? ile klas Na przykład PCA w przypadku rzadkich danych może czasem być szkodliwy.
cyborg
2
wysoki = wiele pkt? tłuszcz = wiele funkcji? czy gdzieś jest ta standardowa terminologia, gdzieś używana w referencjach?

Odpowiedzi:

6

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

2ϵ2)

tdc
źródło
7

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

niko
źródło
2
Dzięki. Myślałem więcej o tym, jak poradzić sobie ze skalą problemu. Chciałem zacząć od liniowej, ponieważ jest to prostsze. Myślę, że sugerujesz metodę opartą na jądrze. Chciałbym tylko zaznaczyć, że jeśli mam 750000 punktów danych, macierz jądra będzie miała rozmiar 540 GB. Więc odpowiedź nie może być: podłącz go do LIBSVM / SVMLight / etc, uzyskaj dobre C i gamma i zobacz, co otrzymujesz.
carlosdc
2
(-1) odpowiedź jest a) częściowo tak ogólna, można ją zastosować do dowolnego pytania klasyfikacyjnego b) nie wyjaśniono, dlaczego zaleca się PCA (w porównaniu z jakąkolwiek inną techniką redukcji wymiarów).
steffen
1

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

Upul
źródło
1
PCA nie PAC;) ( 15 znaków )
neuron