Pracuję z niektórymi dużymi zestawami danych przy użyciu pakietu gbm w R. Zarówno moja macierz predykcyjna, jak i mój wektor odpowiedzi są dość rzadkie (tzn. Większość wpisów ma wartość zero). Miałem nadzieję zbudować drzewa decyzyjne przy użyciu algorytmu, który korzysta z tej rzadkości, jak to tutaj zrobiono ). W tym artykule, podobnie jak w mojej sytuacji, większość elementów ma tylko kilka z wielu możliwych funkcji, więc były w stanie uniknąć wielu zmarnowanych obliczeń, zakładając, że ich elementy nie miały danej cechy, chyba że dane wyraźnie mówią inaczej. Mam nadzieję, że mogę uzyskać podobne przyspieszenie, używając tego rodzaju algorytmu (a następnie owijając go algorytmem wzmacniającym, aby poprawić moją dokładność predykcyjną).
Ponieważ wydaje się, że nie opublikowali swojego kodu, zastanawiałem się, czy istnieją jakieś pakiety lub biblioteki typu open source (w dowolnym języku), które są zoptymalizowane do tego przypadku. Idealnie chciałbym coś, co mogłoby wziąć rzadką matrycę bezpośrednio z Matrix
paczki R , ale wezmę to, co mogę.
Rozejrzałem się i wydaje się, że tego rodzaju rzeczy powinny tam być:
Wydaje się, że chemicy często napotykają ten problem (artykuł, który zamieściłem powyżej, dotyczył uczenia się, jak znaleźć nowe związki leków), ale implementacje, które mogłem znaleźć, były zastrzeżone lub wysoce wyspecjalizowane w analizach chemicznych. Możliwe jednak, że jeden z nich mógłby zostać ponownie wykorzystany.
Klasyfikacja dokumentów wydaje się być także obszarem, w którym przydatne jest uczenie się z rzadkich przestrzeni obiektów (większość dokumentów nie zawiera większości słów). Na przykład w tym dokumencie znajduje się skośne odniesienie do rzadkiej implementacji C4.5 (algorytm podobny do CART) , ale nie ma kodu.
Zgodnie z listą dyskusyjną WEKA może akceptować nieliczne dane, ale w przeciwieństwie do metody w powyższym dokumencie, który podłączyłem, WEKA nie jest zoptymalizowana pod kątem faktycznego wykorzystania jej pod względem unikania marnowania cykli procesora.
Z góry dziękuję!
źródło
glmnet
ie1071::svm
wsparcia zarówno skąpeMatrix
obiektów.GAMboost
iGLMboost
(z paczkiGAMboost
) może również.Odpowiedzi:
Chciałbym zobaczyć porównanie ich rzadkiej implementacji z nowoczesnymi implementacjami CART używanymi w rf's. Ten artykuł jest dość stary pod względem postępów w tej dziedzinie i byłbym zaskoczony, gdyby nadal zapewniał znaczne przyspieszenie.
Częściowo dlatego, że użycie sprytnego algorytmu sortowania, takiego jak Quicksort w wyszukiwaniu dzielonym, może zapewnić wydajność zbliżoną do O (n) dla funkcji prawie stałych (w tym rzadkich). Szybkie implementacje śledzą także, kiedy cecha stała się stała w gałęzi drzewa i nie powinna być dłużej badana. Gęste reprezentacje funkcji zapewniają szybkie wyszukiwanie w przyjazny dla pamięci podręcznej procesor, więc potrzebujesz naprawdę sprytnej rzadkiej reprezentacji, aby wygrywać w cyklach procesora.
Zostało to omówione tutaj , tutaj , tutaj .
Właściwie zaimplementowałem rzadką reprezentację danych w jednym punkcie w moim pakiecie rf CloudForest, ale odkryłem, że jest wolniejsza niż gęsta reprezentacja danych i porzuciłem ją, choć zapewniała pewne zalety pamięci.
Polecam wypróbować scikit learn lub cloudforest wbudowane w zwiększanie wydajności i sprawdzić, czy jest wystarczająco szybki. Oba można rozszerzyć o niestandardowe kryteria wzmocnienia, jeśli chcesz zrobić coś niestandardowego. (Właściwie napisałem pierwotnie Cloudforest do pracy z dużymi, wielowymiarowymi zestawami danych genetycznych, które są bardzo podobne do tego, co opisujesz).
źródło
Prawdopodobnie istnieje jakaś szansa na dowolny kod, który by to wykorzystał - wolałbyś napisać coś na własną rękę.
Inną opcją jest jednak przekształcenie danych w celu zmniejszenia ich rozmiaru i usunięcie zbędnych informacji. Trudno powiedzieć, jak bez informacji o twoich danych, ale może możesz połączyć niektóre funkcje, o których wiesz, że się nie pokrywają, części PCA lub zmienić reprezentację niektórych deskryptorów? Ponadto, jeśli powiesz, że twoja odpowiedź również jest rzadka, może uzasadnione jest próbkowanie w dół obiektów z 0 w odpowiedzi?
źródło
Czy spojrzałeś na
caret
paczkę w R? To zapewnia interfejs, który ułatwia korzystanie z wielu modeli, w tym kilka dla rekurencyjnego podziału takich jakrpart
,ctree
ictree2
.źródło
Matrix
obiektów byłaby cudowna, ale obecnie nie istnieje. Wszystko zostaje przymuszone do data.frame.